作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我准备了一个云模板,该模板使用 arn:aws:iam::aws:policy/AmazonS3FullAccess
策略创建 AWS::IAM::Role
。
模板成功运行后,我执行一个 python 脚本来创建两个前缀为 foobar-bucket1
和 foobar-bucket2
的存储桶。
目前,我的模板的上述部分如下所示:
Resources:
MyRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service:
- ssm.amazonaws.com
- ec2.amazonaws.com
Action: sts:AssumeRole
ManagedPolicyArns:
- arn:aws:iam::aws:policy/AmazonS3FullAccess
Path: "/"
问题
我想知道通过云模板创建的 IAM::Role
是否需要具有 AmazonS3FullAccess
才能创建两个存储桶?
我是否可以授予角色ONLY创建存储桶的权限,然后授予ONLY前缀为foobar-bucket1
的存储桶的FULLS3权限> 和 foobar-bucket2
。
最佳答案
只要存储桶名称是动态的,您就无法在 cloudformation 模板中创建具有正确名称的策略。
按实用性降序排列:
选项 1:在您的 cloudformation 模板中创建存储桶,然后在同一模板中相应地创建 IAM 角色(请参阅下面的示例)。
AWSTemplateFormatVersion: '2010-09-09'
Resources:
foobarBucket1:
Type: AWS::S3::Bucket
foobarBucket2:
Type: AWS::S3::Bucket
LambdaRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service:
- lambda.amazonaws.com
Action:
- sts:AssumeRole
Path: "/"
Policies:
- PolicyName: LambdaRolePolicy
PolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- s3:DeleteObject
- s3:GetObject
- s3:PutObject
Resource: !Join ['', ['arn:aws:s3:::', !Ref foobarBucket1 ]]
- Effect: Allow
Action:
- s3:DeleteObject
- s3:GetObject
- s3:PutObject
Resource: !Join ['', ['arn:aws:s3:::', !Ref foobarBucket2 ]]
选项 2:另一种可能性是您将固定前缀合并到策略中,从而部分限制访问。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:DeleteObject",
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::foobarbucket1-*",
"Effect": "Allow"
}
]
}
选项 3:使用存储桶名称作为 cloudformation 参数,并使用新创建的名称更新现有模板。
关于amazon-web-services - 如何在云模板中为存储桶编写策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44392703/
我是一名优秀的程序员,十分优秀!