如何使用 PrincipalTag、ResourceTag、RequestTag 和 TagKeys 条件键为基于标签的限制创建 IAM policy?
我想为基于标签的限制创建 AWS Identity and Access Management(IAM)policy。如何使用 PrincipalTag、ResourceTag、RequestTag 和 TagKeys 条件键?
简短描述
使用以下 IAM 示例策略为您的使用案例创建带条件键的基于标签的限制。
解决方法
PrincipalTag 条件键
aws:PrincipalTag 条件键用于将附加到发出请求的主体的标签与 IAM policy 中的标签进行匹配。PrincipalTag 键的值与带匹配标签键(如果请求的主体具备此标签键)的 IAM 标签值进行比较。
以下 IAM policy 示例为 Amazon Simple Storage Service(Amazon S3)存储桶提供了限制。Amazon S3 PutObject 操作仅允许职务为“Product-Manager”的用户访问存储桶。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyAllButProductManagers", "Effect": "Deny", "Principal": { "AWS": "*" }, "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::productionbucket/*" ], "Condition": { "StringNotEquals": { "aws:PrincipalTag/job-title": "Product-Manager" } } } ] }
ResourceTag 条件键
aws:ResourceTag/tag-key 条件键将 IAM policy 中指定的标签键值对与附加到 AWS 资源的键值对进行比较。有关更多信息,请参阅控制对 AWS 资源的访问。
在 IAM policy 评估期间,ResourceTag 标签与 IAM 标签进行比较。ResourceTag 键的值与带匹配键值对(如果 AWS 资源具备此键值对)的 IAM 标签值进行比较。此条件键可与全局版本 aws:ResourceTag 和 ec2:ResourceTag 等 AWS 服务结合起来使用。有关更多信息,请参阅 AWS 服务的操作、资源和条件键。
以下示例 IAM policy 可让用户启动、停止和终止处于“测试”环境中的实例。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowOnlyForTestEnvironment", "Effect": "Allow", "Action": [ "ec2:TerminateInstances", "ec2:StartInstances", "ec2:StopInstances" ], "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringLike": { "ec2:ResourceTag/Env": "test" } } } ] }
RequestTag 条件键
aws:RequestTag/tag-key 条件键用于将用户请求中传递的键值对与 IAM 策略中指定的标签对进行比较。该条件键可用于创建资源或标记资源的操作,以及检查标签的值。
例如,请参阅以下 IAM policy。它强制用户在创建 Amazon Elastic Block Store(Amazon EBS)卷时创建一个值为“Dev”、“Prod”或“QA”的特定标签“Env”。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCreateVolumeWithEnvTag", "Effect": "Allow", "Action": "ec2:CreateVolume", "Resource": "arn:aws:ec2:*:*:volume/*", "Condition": { "StringEquals": { "aws:RequestTag/Env": [ "Dev", "Prod", "QA" ] } } } ] }
TagKeys 条件键
aws:TagKeys 条件键用于将请求中的标签键与 IAM policy 中指定的键进行比较。TagKeys 键的值与 AWS 资源请求中标签的列表进行比较。TagKeys 条件键用于验证附加到资源的标签键。
由于您可以在一个请求中定义多个标签键值对,因此该请求可以有多个值。可以使用 ForAllValues 或 ForAnyValue 集合运算符比较这些值。
以下示例策略限制在 AWS 资源上创建的标签。“Env”和“CostCenter”标签是用户可以使用新的 Amazon EBS 卷创建的唯一标签键。将 ForAllValues 集合运算符与 aws:TagKeys 结合使用可限制用户在 AWS 资源上仅附加所需的标签。这并不要求用户在资源创建请求中提供这些标签键,但它会阻止用户创建具有其他键值对的标签。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "ec2:CreateVolume", "Resource": "arn:aws:ec2:*:*:volume/*", "Condition": { "ForAllValues:StringEquals": { "aws:TagKeys": [ "Env", "CostCenter" ] } } } ] }
相关信息
相关内容
- AWS 官方已更新 3 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 1 年前