文档

访问管理

概述

MinIO 使用 Policy-Based Access Control (PBAC) 来定义已认证用户可访问的授权操作和资源。 每个策略描述一条或多条 actionsconditions,用于说明某个 usergroup 中用户的权限。

MinIO PBAC 在设计上兼容 AWS IAM 策略语法、结构和行为。 MinIO 文档会尽力覆盖 IAM 特定行为和功能。 若需要更完整的 AWS IAM 特定主题文档,请参考 IAM documentation

mc admin policy 命令支持在 MinIO 部署上创建和管理策略。 用法示例请参见命令参考。

基于标签的策略条件

Changed in version RELEASE.2022-10-02T19-29-29Z: 策略可以使用条件,将用户访问限制为仅能访问带有 特定标签 的对象。

对于 选定操作 的策略,MinIO 支持 基于标签的条件。 在策略的 Condition 语句中使用 s3:ExistingObjectTag/<key>

内置策略

MinIO 提供以下内置策略,可分配给 usersgroups

consoleAdmin

授予对 MinIO 部署上所有资源执行全部 S3 和管理 API 操作的完整访问权限。 等价于以下 action 集合:

readonly

授予对 MinIO 部署上任意对象的只读权限。 GET 操作 必须 作用于某个具体对象,且不要求具备任何列举权限。 等价于以下 action 集合:

例如,该策略专门支持对特定路径下对象执行 GET 操作(例如 GET play/mybucket/object.file),例如:

有意排除列举权限,因为典型使用场景并不希望“只读”角色对对象存储资源具有完整可发现性 (列出所有存储桶和对象)。

readwrite

授予对 MinIO 服务器上所有存储桶和对象的读写权限。 等价于 s3:*

diagnostics

授予在 MinIO 部署上执行诊断操作的权限。 具体包括以下 action:

writeonly

授予对 MinIO 部署中任意命名空间(存储桶及对象路径)的只写权限。 PUT 操作 必须 作用于某个具体对象位置,且不要求具备任何列举权限。 等价于 s3:PutObject action。

使用 mc admin policy attach 将策略关联到 MinIO 部署上的用户或组。

例如,考虑下表中的用户。每个用户都被分配了一个 内置策略 或某个受支持的 action。该表描述了客户端以对应用户身份完成认证后可执行的一部分操作:

用户

策略

操作

Operations

finance 存储桶上的 readwrite
audit 存储桶上的 readonly
finance 存储桶执行 PUTGET
audit 存储桶执行 GET

Auditing

audit 存储桶上的 readonly

audit 存储桶执行 GET

Admin

admin:*

所有 mc admin 命令。

每个用户只能访问内置角色 显式 授予的那些资源和操作。 默认情况下,MinIO 会拒绝访问任何其他资源或 action。

Deny overrides Allow

MinIO 遵循 IAM 策略求值规则,即在同一操作/资源上,Deny 规则会覆盖 Allow 规则。例如,如果某个用户被显式分配的策略对某个操作/资源包含 Allow 规则,而其所属某个组被分配的策略对同一操作/资源包含 Deny 规则, 则 MinIO 只会应用 Deny 规则。

有关 IAM 策略求值逻辑的更多信息,请参见 IAM 文档中的 Determining Whether a Request is Allowed or Denied Within an Account

策略文档结构

MinIO 策略文档使用与 AWS IAM Policy 文档相同的模式。

以下示例文档为在 MinIO 部署中创建自定义策略提供了模板。 有关 IAM 策略元素的更完整文档,请参见 IAM JSON Policy Elements Reference

任意单个策略文档的最大大小为 20KiB。 可附加到用户或组的策略文档数量没有限制。

{
   "Version" : "2012-10-17",
   "Statement" : [
      {
         "Effect" : "Allow",
         "Action" : [ "s3:<ActionName>", ... ],
         "Resource" : "arn:aws:s3:::*",
         "Condition" : { ... }
      },
      {
         "Effect" : "Deny",
         "Action" : [ "s3:<ActionName>", ... ],
         "Resource" : "arn:aws:s3:::*",
         "Condition" : { ... }
      }
   ]
}
  • 对于 Statement.Action 数组,指定一个或多个 受支持的 S3 API 操作

  • 对于 Statement.Resource 键,指定要对策略进行限制的存储桶或存储桶前缀。 可以按照 S3 Resource Spec 使用 *? 通配符。

    * 通配符可能会基于 模式匹配,导致策略被意外应用到多个存储桶或前缀。 例如,arn:aws:s3:::data* 会匹配存储桶 datadata_privatedata_internal。 如果资源键仅指定 *,则该策略会应用到部署上的所有存储桶和前缀。

  • 对于 Statement.Condition 键,可以指定一个或多个 受支持的 Conditions

受支持的 S3 策略 Action

MinIO 策略文档支持 IAM S3 Action keys 的一个子集。 本节还包括特定 action 在通用受支持键之外额外支持的任何 condition keys

以下 action 用于控制常见 S3 操作的访问。 其余小节记录更高级的 S3 操作所对应的 action:

s3:*

选择器,用于匹配 所有 MinIO S3 操作。 将该 action 应用于某个资源后,用户即可对该资源执行 任意 S3 操作。

s3:CreateBucket

控制对 CreateBucket S3 API 操作的访问。

s3:DeleteBucket

控制对 DeleteBucket S3 API 操作的访问。

s3:ForceDeleteBucket

控制对带有 x-minio-force-delete 标志的 DeleteBucket S3 API 操作的访问。 删除非空存储桶时需要此权限。

s3:GetBucketLocation

控制对 GetBucketLocation S3 API 操作的访问。

s3:ListAllMyBuckets

控制对 ListBuckets S3 API 操作的访问。

s3:DeleteObject

控制对 DeleteObject S3 API 操作的访问。

s3:GetObject

控制对 GetObject S3 API 操作的访问。

支持以下附加 condition keys

s3:x-amz-server-side-encryption
s3:x-amz-server-side-encryption-customer-algorithm
s3:ExistingObjectTag/<key>
s3:versionid
s3:GetObjectAttributes

控制对 GetObjectAttributes S3 API 操作的访问。

s3:GetObjectVersionAttributes

控制对带版本对象执行 GetObjectAttributes S3 API 操作的访问。

s3:RestoreObject

控制对 RestoreObject S3 API 操作的访问。

s3:ListBucket

控制对 ListObjectsV2 S3 API 操作的访问。

支持以下附加 condition keys

s3:prefix
s3:delimiter
s3:max-keys
s3:PutObject

控制对 PutObject S3 API 操作的访问。

支持以下附加 condition keys

s3:x-amz-copy-source
s3:x-amz-server-side-encryption
s3:x-amz-server-side-encryption-customer-algorithm
s3:x-amz-metadata-directive
s3:x-amz-storage-class
s3:versionid
s3:object-lock-retain-until-date
s3:object-lock-mode
s3:object-lock-legal-hold
s3:RequestObjectTagKeys
s3:RequestObjectTag/<key>
s3:PutObjectTagging

控制对 PutObjectTagging S3 API 操作的访问。

支持以下附加 condition keys

s3:versionid
s3:ExistingObjectTag/<key>
s3:RequestObjectTagKeys
s3:RequestObjectTag/<key>
s3:GetObjectTagging

控制对 GetObjectTagging S3 API 操作的访问。

支持以下附加 condition keys

s3:versionid
s3:ExistingObjectTag/<key>
s3:DeleteObjectTagging

控制对 DeleteObjectTagging S3 API 操作的访问。

支持以下附加 condition keys

s3:versionid
s3:ExistingObjectTag/<key>

存储桶配置

s3:GetBucketPolicy

控制对 GetBucketPolicy S3 API 操作的访问。

s3:PutBucketPolicy

控制对 PutBucketPolicy S3 API 操作的访问。

s3:DeleteBucketPolicy

控制对 DeleteBucketPolicy S3 API 操作的访问。

s3:GetBucketTagging

控制对 GetBucketTagging S3 API 操作的访问。

s3:PutBucketTagging

控制对 PutBucketTagging S3 API 操作的访问。

支持以下附加 condition keys

s3:RequestObjectTagKeys
s3:RequestObjectTag/<key>
s3:GetBucketPolicyStatus

控制对 GetBucketPolicyStatus S3 API 操作的访问。

分段上传

s3:AbortMultipartUpload

控制对 AbortMultipartUpload S3 API 操作的访问。

s3:ListMultipartUploadParts

控制对 ListParts S3 API 操作的访问。

s3:ListBucketMultipartUploads

控制对 ListMultipartUploads S3 API 操作的访问。

版本控制与保留

s3:PutBucketVersioning

控制对 PutBucketVersioning S3 API 操作的访问。

s3:GetBucketVersioning

控制对 GetBucketVersioning S3 API 操作的访问。

s3:DeleteObjectVersion

控制对 DeleteObjectVersion S3 API 操作的访问。

支持以下附加 condition keys

s3:versionid
s3:ExistingObjectTag/<key>
s3:ListBucketVersions

控制对 ListBucketVersions S3 API 操作的访问。

支持以下附加 condition keys

s3:prefix
s3:delimiter
s3:max-keys
s3:PutObjectVersionTagging

控制对 PutObjectVersionTagging S3 API 操作的访问。

支持以下附加 condition keys

s3:versionid
s3:ExistingObjectTag/<key>
s3:RequestObjectTagKeys
s3:RequestObjectTag/<key>
s3:GetObjectVersionTagging

控制对 GetObjectVersionTagging S3 API 操作的访问。

支持以下附加 condition keys

s3:versionid
s3:ExistingObjectTag/<key>
s3:DeleteObjectVersionTagging

控制对 DeleteObjectVersionTagging S3 API 操作的访问。

支持以下附加 condition keys

s3:versionid
s3:ExistingObjectTag/<key>
s3:GetObjectVersion

控制对 GetObjectVersion S3 API 操作的访问。

支持以下附加 condition keys

s3:versionid
s3:ExistingObjectTag/<key>
s3:BypassGovernanceRetention

控制对处于 GOVERNANCE 保留模式下锁定对象的以下 S3 API 操作的访问:

  • s3:PutObjectRetention

  • s3:PutObject

  • s3:DeleteObject

更多信息请参见 S3 文档中的 s3:BypassGovernanceRetention

支持以下附加 condition keys

s3:versionid
s3:object-lock-remaining-retention-days
s3:object-lock-retain-until-date
s3:object-lock-mode
s3:object-lock-legal-hold
s3:RequestObjectTagKeys
s3:RequestObjectTag/<key>
s3:PutObjectRetention

控制对 PutObjectRetention S3 API 操作的访问。

对于任何指定了 保留元数据PutObject 操作,都需要此权限。

支持以下附加 condition keys

s3:x-amz-server-side-encryption
s3:x-amz-server-side-encryption-customer-algorithm
s3:x-amz-object-lock-remaining-retention-days
s3:x-amz-object-lock-retain-until-date
s3:x-amz-object-lock-mode
s3:versionid
s3:GetObjectRetention

控制对 GetObjectRetention S3 API 操作的访问。

若要在 GetObjectHeadObject 操作的响应中包含 对象锁定元数据,则需要此权限。

支持以下附加 condition keys

s3:x-amz-server-side-encryption
s3:x-amz-server-side-encryption-customer-algorithm
s3:versionid
s3:GetObjectLegalHold

控制对 GetObjectLegalHold S3 API 操作的访问。

若要在 GetObjectHeadObject 操作的响应中包含 对象锁定元数据,则需要此权限。

s3:PutObjectLegalHold

控制对 PutObjectLegalHold S3 API 操作的访问。

对于任何指定了 legal hold 元数据PutObject 操作,都需要此权限。

支持以下附加 condition keys

s3:x-amz-server-side-encryption
s3:x-amz-server-side-encryption-customer-algorithm
s3:object-lock-legal-hold
s3:versionid
s3:GetBucketObjectLockConfiguration

控制对 GetObjectLockConfiguration S3 API 操作的访问。

s3:PutBucketObjectLockConfiguration

控制对 PutObjectLockConfiguration S3 API 操作的访问。

存储桶通知

s3:GetBucketNotification

控制对 GetBucketNotification S3 API 操作的访问。

s3:PutBucketNotification

控制对 PutBucketNotification S3 API 操作的访问。

s3:ListenNotification

用于控制与 MinIO Bucket Notifications 相关 API 操作的 MinIO 扩展。

此 action 用于其他兼容 S3 的服务。

s3:ListenBucketNotification

用于控制与 MinIO Bucket Notifications 相关 API 操作的 MinIO 扩展。

此 action 用于其他兼容 S3 的服务。

对象生命周期管理

s3:PutLifecycleConfiguration

控制对 PutLifecycleConfiguration S3 API 操作的访问。

s3:GetLifecycleConfiguration

控制对 GetLifecycleConfiguration S3 API 操作的访问。

对象加密

s3:PutEncryptionConfiguration

控制对 PutEncryptionConfiguration S3 API 操作的访问。

s3:GetEncryptionConfiguration

控制对 GetEncryptionConfiguration S3 API 操作的访问。

存储桶复制

s3:GetReplicationConfiguration

控制对 GetBucketReplication S3 API 操作的访问。

s3:PutReplicationConfiguration

控制对 PutBucketReplication S3 API 操作的访问。

s3:ReplicateObject

用于控制与 服务器端存储桶复制 相关 API 操作的 MinIO 扩展。

MinIO 服务器端复制需要此权限。

支持以下附加 condition keys

s3:versionid
s3:ExistingObjectTag/<key>
s3:ReplicateDelete

用于控制与 服务器端存储桶复制 相关 API 操作的 MinIO 扩展。

作为 MinIO 服务器端复制的一部分,在同步 删除操作 时需要此权限。

支持以下附加 condition keys

s3:versionid
s3:ExistingObjectTag/<key>
s3:ReplicateTags

用于控制与 服务器端存储桶复制 相关 API 操作的 MinIO 扩展。

MinIO 服务器端复制需要此权限。

支持以下附加 condition keys

s3:versionid
s3:ExistingObjectTag/<key>
s3:GetObjectVersionForReplication

用于控制与 服务器端存储桶复制 相关 API 操作的 MinIO 扩展。

MinIO 服务器端复制需要此权限。

支持以下附加 condition keys

s3:versionid
s3:ExistingObjectTag/<key>

受支持的 S3 策略条件键

MinIO 策略文档支持 IAM 条件语句

每个条件元素都由 operators 和条件键组成。MinIO 支持 IAM 条件键的一个子集。 有关任何列出条件键的完整信息,请参见 IAM Condition Element Documentation

对于所有受支持的 actions,MinIO 支持以下条件键:

  • aws:Referer

  • aws:SourceIp

  • aws:UserAgent

  • aws:SecureTransport

  • aws:CurrentTime

  • aws:EpochTime

  • aws:PrincipalType

  • aws:userid

  • aws:username

  • x-amz-content-sha256

  • s3:signatureAge

Warning

aws:Refereraws:SourceIpaws.UserAgent 键很容易被伪造,因此存在潜在安全风险。 MinIO 建议仅将这些条件键作为辅助安全措施用于 拒绝 访问。

绝不要 仅凭这三个键授予访问权限。

对于特定 S3 action 支持的其他键,请参见该 action 的参考文档。

MinIO 扩展条件键

MinIO 在 S3 标准条件键基础上扩展了以下键:

sts:DurationSeconds

New in version MinIO: SERVER RELEASE.2024-02-06T21-36-22Z

指定一个以秒为单位的时间,用于限制由 AssumeRoleWithWebIdentity 生成的 所有 Security Token Service 凭证的有效期。

此值会覆盖客户端指定的 DurationSeconds 字段。

例如:

{
   "Version": "2012-10-17",
   "Statement": [
      {
            "Effect": "Allow",
            "Action": [
               "sts:AssumeRoleWithWebIdentity"
            ],
            "Condition": {
               "NumericLessThanEquals": {
                  "sts:DurationSeconds": "300"
               }
            }
      }
   ]
}

mc admin 策略 Action 键

MinIO 支持以下 action,用于为 mc admin 操作定义策略。 这些 action 对 MinIO 部署有效, 用于其他兼容 S3 的服务:

admin:*

所有 admin action 键的选择器。

admin:Heal

允许执行 heal 命令

admin:StorageInfo

允许列出服务器信息

admin:DataUsageInfo

允许列出数据使用信息

admin:TopLocksInfo

允许列出 top locks

admin:Profiling

允许 profiling

admin:ServerTrace

允许列出 server trace

admin:ConsoleLog

允许在终端列出 console log

admin:KMSCreateKey

允许创建新的 KMS 主密钥

虽然此选项仍受支持,但更推荐使用 kms:CreateKey

admin:KMSKeyStatus

允许获取 KMS 密钥状态

虽然此选项仍受支持,但更推荐使用 kms:KeyStatus

admin:ServerInfo

允许列出服务器信息

admin:OBDInfo

允许获取集群 on-board diagnostics

admin:ServerUpdate

允许更新 MinIO 二进制文件

admin:ServiceRestart

允许重启 MinIO 服务。

admin:ServiceStop

允许停止 MinIO 服务。

admin:ConfigUpdate

允许管理 MinIO 配置

admin:CreateUser

允许创建 MinIO 用户

admin:DeleteUser

允许删除 MinIO 用户

admin:ListUsers

允许列出用户

admin:EnableUser

允许启用用户

admin:DisableUser

允许禁用用户

admin:GetUser

允许对用户信息执行 GET

admin:AddUserToGroup

允许将用户添加到组

admin:RemoveUserFromGroup

允许将用户从组中移除

admin:GetGroup

允许获取组信息

admin:ListGroups

允许列出组

admin:EnableGroup

允许启用组

admin:DisableGroup

允许禁用组

admin:CreatePolicy

允许创建策略

admin:DeletePolicy

允许删除策略

admin:GetPolicy

允许获取策略

admin:AttachUserOrGroupPolicy

允许将策略附加到用户/组

admin:ListUserPolicies

允许列出用户策略

admin:CreateServiceAccount

允许创建 MinIO Access Key

admin:UpdateServiceAccount

允许更新 MinIO Access Key

admin:RemoveServiceAccount

允许删除 MinIO Access Key

admin:ListServiceAccounts

允许列出 MinIO Access Key

admin:SetBucketQuota

允许设置存储桶配额

admin:GetBucketQuota

允许获取存储桶配额

admin:SetBucketTarget

允许设置存储桶目标

admin:GetBucketTarget

允许获取存储桶目标

admin:SetTier

允许使用 mc ilm tier 命令创建和修改远程存储层。

admin:ListTier

允许使用 mc ilm tier 命令列出已配置的远程存储层。

admin:BandwidthMonitor

允许获取与当前带宽消耗相关的指标。

admin:Prometheus

允许访问 MinIO metrics。 仅当 MinIO 要求采集指标时进行认证才需要此权限。

admin:ListBatchJobs

允许访问并列出活动中的批处理作业。

admin:DescribeBatchJob

允许访问并查看正在运行的批处理作业的定义详情。

admin:StartBatchJob

允许用户启动批处理作业运行。

admin:CancelBatchJob

允许用户停止当前正在执行的批处理作业。

admin:Rebalance

允许访问并启动、查询或停止跨不同可用存储空间池的对象重平衡。

KMS 策略 action 键

MinIO 支持通过策略限制密钥管理服务 (KMS) action。

可以在策略中使用以下任一 KMS action 来限制 KMS 活动:

kms:Status

检查 KMS 状态。

kms:Metrics

获取 Prometheus 格式指标。

kms:API

列出受支持的 API 端点。

kms:Version

获取 KMS 版本。

kms:CreateKey

创建新的 KMS 密钥。

kms:ListKeys

获取现有 KMS 密钥列表。

kms:KeyStatus

获取指定 KMS 密钥的状态。

若要选择所有可用的 kms 策略 action,可使用 kms:*

Changed in version RELEASE.2024-07-16T23-46-41Z: KMS action 可以按资源或资源前缀进行限制。 可以使用通配符 * 将 KMS action 策略应用到所有匹配该前缀的资源。

例如,以下策略文档允许用户列出密钥、创建新密钥,并检查任何以 keys-abc-myuser- 开头资源上的密钥状态。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kms:CreateKey",
                "kms:KeyStatus",
                "kms:ListKeys"
            ],
            "Resource": [
                "arn:minio:kms:::keys-abc-*",
                "arn:minio:kms:::myuser-*"
            ]
        }
    ]
}

mc admin 策略条件键

MinIO 支持以下条件,用于为 mc admin actions 定义策略。

  • aws:Referer

  • aws:SourceIp

  • aws:UserAgent

  • aws:SecureTransport

  • aws:CurrentTime

  • aws:EpochTime

有关任何列出条件键的完整信息,请参见 IAM Condition Element Documentation

策略变量

MinIO 支持使用策略变量,将来自已认证用户和/或操作的上下文自动替换到分配给该用户的一个或多个策略中。 使用 ${POLICYVARIABLE} 格式在策略的 ConditionResource 定义中指定变量。 MinIO 策略变量的工作方式类似于 AWS IAM policy elements: Variables and tags

每种 MinIO identity provider 都支持其各自的一组策略变量:

MinIO 策略变量

下表列出了用于授权 MinIO-managed users 的推荐策略变量:

变量

说明

aws:referrer

已认证 API 调用的 HTTP 头中的 referrer。

aws:SourceIp

已认证 API 调用的 HTTP 头中的源 IP。

aws:username

与已认证 API 调用关联的用户名。

例如,以下策略使用变量将已认证用户的用户名替换到 Resource 字段中,使该用户只能访问与其用户名匹配的那些前缀:

{
"Version": "2012-10-17",
"Statement": [
      {
         "Action": ["s3:ListBucket"],
         "Effect": "Allow",
         "Resource": ["arn:aws:s3:::mybucket"],
         "Condition": {"StringLike": {"s3:prefix": ["${aws:username}/*"]}}
      },
      {
         "Action": [
         "s3:GetObject",
         "s3:PutObject"
         ],
         "Effect": "Allow",
         "Resource": ["arn:aws:s3:::mybucket/${aws:username}/*"]
      }
   ]
}

MinIO 会将 Resource 字段中的 ${aws:username} 变量替换为用户名。 随后 MinIO 对策略进行求值,并授予或撤销对所请求 API 和资源的访问。

OpenID 策略变量

下表列出了用于授权 OIDC 管理用户 的受支持策略变量。

每个变量都对应认证用户 JWT token 中返回的一项 claim:

变量

说明

jwt:sub

返回用户的 sub claim。

jwt:iss

返回 ID token 中的 Issuer Identifier claim。

jwt:aud

返回 ID token 中的 Audience claim。

jwt:jti

返回客户端认证信息中的 JWT ID claim。

jwt:upn

返回客户端认证信息中的 User Principal Name claim。

jwt:name

返回用户的 name claim。

jwt:groups

返回用户的 groups claim。

jwt:given_name

返回用户的 given_name claim。

jwt:family_name

返回用户的 family_name claim。

jwt:middle_name

返回用户的 middle_name claim。

jwt:nickname

返回用户的 nickname claim。

jwt:preferred_username

返回用户的 preferred_username claim。

jwt:profile

返回用户的 profile claim。

jwt:picture

返回用户的 picture claim。

jwt:website

返回用户的 website claim。

jwt:email

返回用户的 email claim。

jwt:gender

返回用户的 gender claim。

jwt:birthdate

返回用户的 birthdate claim。

jwt:phone_number

返回用户的 phone_number claim。

jwt:address

返回用户的 address claim。

jwt:scope

返回用户的 scope claim。

jwt:client_id

返回用户的 client_id claim。

关于这些 scope 的更多信息,请参阅 OpenID Connect Core 1.0 文档。 你所选的 OIDC 提供方也可能有更具体的补充文档。

例如,以下策略使用变量将认证用户的 preferred_username 替换到 Resource 字段中, 使该用户只能访问与其用户名匹配的前缀:

{
"Version": "2012-10-17",
"Statement": [
      {
         "Action": ["s3:ListBucket"],
         "Effect": "Allow",
         "Resource": ["arn:aws:s3:::mybucket"],
         "Condition": {"StringLike": {"s3:prefix": ["${jwt:preferred_username}/*"]}}
      },
      {
         "Action": [
         "s3:GetObject",
         "s3:PutObject"
         ],
         "Effect": "Allow",
         "Resource": ["arn:aws:s3:::mybucket/${jwt:preferred_username}/*"]
      }
   ]
}

MinIO 会将 Resource 字段中的 ${jwt:preferred_username} 变量, 替换为 JWT token 中 preferred_username 的值。 随后,MinIO 会评估该策略,并对请求的 API 和资源授予或撤销访问权限。

Active Directory / LDAP 策略变量

下表列出了用于授权 AD/LDAP users 的受支持策略变量:

变量

说明

ldap:username

已认证用户的简单用户名(name)。

这不同于用户的 DistinguishedName 或 CommonName。

ldap:user

已认证用户使用的 Distinguished Name。

ldap:groups

已认证用户的组 Distinguished Name。

例如,以下策略使用变量将已认证用户的 name 替换到 Resource 字段中,使该用户只能访问与其名称匹配的那些前缀:

{
"Version": "2012-10-17",
"Statement": [
      {
         "Action": ["s3:ListBucket"],
         "Effect": "Allow",
         "Resource": ["arn:aws:s3:::mybucket"],
         "Condition": {"StringLike": {"s3:prefix": ["${ldap:username}/*"]}}
      },
      {
         "Action": [
         "s3:GetObject",
         "s3:PutObject"
         ],
         "Effect": "Allow",
         "Resource": ["arn:aws:s3:::mybucket/${ldap:username}/*"]
      }
   ]
}

MinIO 会将 Resource 字段中的 ${ldap:username} 变量替换为已认证用户的 name 值。 随后 MinIO 对策略进行求值,并授予或撤销对所请求 API 和资源的访问。