首页 文章

在存储桶策略中获取Lambda角色的ARN

提问于
浏览
0

我正在尝试编写一个存储桶策略,拒绝除我的特定Lambda之外的所有访问我的存储桶 . 我试图通过将Lambda的角色列入白名单并假定角色ARN来实现这一目标,如下面的政策所示 .

这样做的原因是因为我在公司AWS账户下工作,其中联合用户假设“高级用户”或“只读”角色 . “超级用户”角色具有对s3的完全访问权限 . 我不管理这些角色的权限,我需要阻止其他承担“超级用户”角色的企业用户访问我的存储桶 .

我正在尝试使用AWS:SourceArn全局条件上下文密钥来获取角色ARN,但似乎是AWS:SourceArn无法正常工作:

{
"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "WhitelistRegistryAPILambdaRole",
        "Effect": "Allow",
        "Principal": "*",
        "Action": [
            "s3:PutObject",
            "s3:DeleteObject",
            "s3:DeleteObjectVersion",
            "s3:GetObjectVersion",
            "s3:GetObject"
        ],
        "Resource": [
            "arn:aws:s3:::{BucketName}",
            "arn:aws:s3:::{BucketName}/*"
        ],
        "Condition": {
            "ArnLike": {
                "aws:SourceArn": "arn:aws:iam::{AccountId}:role/{LambdaRoleName}"
            }
        }
    },
    {
        "Sid": "WhitelistRegistryAPILambdaAssumedRole",
        "Effect": "Allow",
        "Principal": "*",
        "Action": [
            "s3:PutObject",
            "s3:DeleteObject",
            "s3:DeleteObjectVersion",
            "s3:GetObjectVersion",
            "s3:GetObject"
        ],
        "Resource": [
            "arn:aws:s3:::{BucketName}",
            "arn:aws:s3:::{BucketName}/*"
        ],
        "Condition": {
            "ArnLike": {
                "AWS:SourceARN": "arn:aws:sts::{AccountId}:assumed-role/{LambdaRoleName}/{LambdaFunctionName}"
            }
        }
    }
]}

docs表示aws:SourceArn全局条件上下文密钥不适用于所有服务 . 我接近这个吗?

1 回答

  • 2

    你正在倒退 .

    除非你公开一个桶,否则没有人可以访问这些内容 .

    为Lambda创建角色,为其授予访问存储区的权限 . 将角色分配给Lambda .

    现在只有Lambda可以访问存储桶 . 如果其他服务或用户需要访问存储桶,请创建授予该用户或服务访问权限的IAM策略或角色 .

相关问题