标记Amazon S3

1-给S3存储桶打标签

首先需要给S3存储桶打标签,比如Owner: zhangsan, department: Iot.

2-给授予权限的身份打标签

被授予权限的身份可以是IAM user或者IAM role。此处以IAM Identity Center真人访问的身份+IoT设备为例,如何授予这两者以ABAC的方式访问S3存储桶内的文件。

IAM Identity Center真人访问的身份如何配置标签参见 #Identity Center的Attribute Based Access Control (ABAC)

3-授予真人访问权限:编辑权限集的策略

权限集添加一个托管策略:AmazonS3FullAccess;

编辑内联策略,实现当Identity Center的用户的部门与存储桶的标签department匹配时允许进行增删改的操作:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "ABACHuman",
            "Effect": "Deny",
            "Action": [
                "s3:Get*",
                "s3:Put*",
                "s3:Delete*"
            ],
            "Resource": "arn:aws:s3:::BUCKET-NAME/human-objects/*",
            "Condition": {
                "StringNotEquals": {
                    "aws:PrincipalTag/department": "${s3:ExistingObjectTag/department}"
                }
            }
        }
    ]
}

此内联策略通过条件比较存储桶的对象标签中的部门(department)和IAM身份的标签,当它们匹配时,允许用户对S3存储桶的对象进行上传(PutObject)、下载(GetObject)、删除(DeleteObject)操作。这实现了以ABAC(基于属性的访问控制)模式进行精细化控制。

最后更新于