gpt4 book ai didi

amazon-web-services - 如何在云模板中为存储桶编写策略

转载 作者:行者123 更新时间:2023-12-03 07:25:44 24 4
gpt4 key购买 nike

我准备了一个云模板,该模板使用 arn:aws:iam::aws:policy/AmazonS3FullAccess 策略创建 AWS::IAM::Role

模板成功运行后,我执行一个 python 脚本来创建两个前缀为 foobar-bucket1foobar-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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com