

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用基于属性的访问权限控制（ABAC）控制对密钥的访问
<a name="auth-and-access-abac"></a>

基于属性的访问权限控制（ABAC）是一种授权策略，它根据用户、数据或环境（例如部门、业务部门或可能影响授权结果的其他因素）的属性或特征来定义权限。在中 AWS，这些属性称为*标签*。

使用标签控制权限在快速增长的环境中非常有用，并在策略管理变得繁琐的情况下可以提供帮助。ABAC 规则是在运行时动态评估的，这意味着用户对应用程序和数据的访问以及允许的操作类型会根据策略中的上下文因素自动改变。例如，如果用户更改部门，则访问权限会自动调整，而无需更新权限或请求新角色。有关更多信息，请参阅：[ABAC 有什么用 AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)？ ，[根据标签定义访问密钥的权限。](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html) ，然后[使用带有 IAM 身份中心的 ABAC 来扩展 Secrets Manager 的授权需求](https://aws.amazon.com/blogs/security/scale-your-authorization-needs-for-secrets-manager-using-abac-with-iam-identity-center/)。

## 示例：允许身份访问具有特定标签的密钥
<a name="tag-secrets-abac"></a>

以下策略允许`DescribeSecret`访问带有密钥*ServerName*和值的标签的机密*ServerABC*。如果将此策略附加到某个身份，则该身份有权访问账户中带有该标签的任何密钥。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
  "Effect": "Allow",
  "Action": "secretsmanager:DescribeSecret",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "secretsmanager:ResourceTag/ServerName": "ServerABC"
      }
    }
  }
}
```

------

## 示例：仅允许访问标签与密钥的标签匹配的身份
<a name="auth-and-access_tags2"></a>

以下策略允许账户中的任何身份对账户中身份的 *`AccessProject`* 标签与密钥的 *`AccessProject`* 标签具有相同值的任何密钥具有 `GetSecretValue` 访问权限。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
  "Effect": "Allow",
  "Principal": {
    "AWS": "123456789012"
  },
  "Condition": {
    "StringEquals": {
      "aws:ResourceTag/AccessProject": "${ aws:PrincipalTag/AccessProject }"
    }
  },
  "Action": "secretsmanager:GetSecretValue",
  "Resource": "*"
  }
}
```

------