簡體   English   中英

S3 存儲桶策略 IAM 角色顯示為 API 密鑰

[英]S3 bucket policy IAM role showing up as API key

我有一個 S3 存儲桶,我正在嘗試通過 CloudFormation 應用存儲桶策略。 我想允許兩個 IAM 角色訪問存儲桶,通過在 CloudFormation 模板中的存儲桶策略中指定角色的 ARN 來實現。 以下是 CloudFormation 模板:

LandingBucketPolicy:
    Type: AWS::S3::BucketPolicy
    Properties:
      Bucket: !Ref LandingBucket
      PolicyDocument:
        Version: "2012-10-17"
        Statement:
          # yamllint disable-line rule:line-length
          - Sid: "Allow s3 permission"
            Action:
              - s3:PutObject
              - s3:GetObject
              - s3:ListBucket
            Effect: "Allow"
            Resource:
              - !GetAtt LandingBucket.Arn
              - !Sub "${LandingBucket.Arn}/*"
            Principal:
              AWS:
                - !Ref IamRoleArn1
                - !Ref IamRoleArn2

參數為: IamRoleArn1: arn:aws:iam::1234:role/xyz, IamRoleArn2: arn:aws:iam::1234:role/abc

控制台的最終策略如下所示

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "file drop permission",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::1234:role/xyz",
                    "AROxxIECxx"
                ]
            },
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::bucket-name",
                "arn:aws:s3:::bucket-name/*"
            ]
        }
    ]
}

第一個 Principal 是一個 IAM 角色,然而,第二個看起來像一個 API 密鑰,盡管在 CloudFormation 模板中我提到了第二個 IAM 角色 ARN,就像第一個 IAM 角色一樣。

為什么第二個角色 ARN 沒有出現在存儲桶策略中?

這是該特定資源的唯一標識符 在這種情況下,它被稱為RoleId ,而 ARN 只是相同的可讀格式。 兩種表示都指向 AWS 中的相同資源。 嘗試運行

 aws iam get-role --role-name "<you role here>"

此命令的 output 將有一個名為 RoleId 的字段,應該可以為您清除問題。

AROA開頭的唯一標識符表示它是與角色相關的資源。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM