[英]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.