Amazon cloudformation 仅创建S3用户
我试图创建一个仅限S3的用户,根据定义,该用户将无法访问任何其他资源。用户可以从S3上传和下载文件。我已经创建了一个基本的模板,可以在这里找到 但在我的情况下,允许访问云信息是不必要的。我已经阅读了以下页面,但不知道如何将它们包含在我的模板中 创建仅S3用户所需的最小参数是什么 更新: 以下是我尝试的cloudformation代码和我得到的错误: 错误消息:无法创建以下资源:[CFNRole,cfUser]。用户请求的回滚 模板:Amazon cloudformation 仅创建S3用户,amazon-cloudformation,Amazon Cloudformation,我试图创建一个仅限S3的用户,根据定义,该用户将无法访问任何其他资源。用户可以从S3上传和下载文件。我已经创建了一个基本的模板,可以在这里找到 但在我的情况下,允许访问云信息是不必要的。我已经阅读了以下页面,但不知道如何将它们包含在我的模板中 创建仅S3用户所需的最小参数是什么 更新: 以下是我尝试的cloudformation代码和我得到的错误: 错误消息:无法创建以下资源:[CFNRole,cfUser]。用户请求的回滚 模板: Parameters: NewUsername:
Parameters:
NewUsername:
NoEcho: 'false'
Type: String
Description: New account username
MinLength: '1'
MaxLength: '41'
ConstraintDescription: the username must be between 1 and 41 characters
Password:
NoEcho: 'true'
Type: String
Description: New account password
MinLength: '1'
MaxLength: '41'
ConstraintDescription: the password must be between 1 and 41 characters
Resources:
CFNUser:
Type: AWS::IAM::User
Properties:
LoginProfile:
Password: !Ref 'Password'
UserName : !Ref 'NewUsername'
CFNRole:
Type: AWS::IAM::Role
Properties :
PermissionsBoundary : arn:aws:iam::aws:policy/AmazonS3FullAccess
RoleName : 'myPermissionBoundary'
CFNKeys:
Type: AWS::IAM::AccessKey
Properties:
UserName: !Ref 'CFNUser'
Outputs:
AccessKey:
Value: !Ref 'CFNKeys'
Description: AWSAccessKeyId of new user
SecretKey:
Value: !GetAtt [CFNKeys, SecretAccessKey]
Description: AWSSecretAccessKey of new user
我已检查此链接,但不确定如何在当前模板中包含策略。
您明确授予新用户在模板中访问Cloudformation的权限。 你有这个部分:
CFNUserPolicies:
Type: AWS::IAM::Policy
Properties:
PolicyName: CFNUsers
PolicyDocument:
Statement:
- Effect: Allow
Action: ['cloudformation:Describe*', 'cloudformation:List*', 'cloudformation:Get*']
Resource: '*'
Groups: [!Ref 'CFNUserGroup']
CFNAdminPolicies:
Type: AWS::IAM::Policy
Properties:
PolicyName: CFNAdmins
PolicyDocument:
Statement:
- Effect: Allow
Action: cloudformation:*
Resource: '*'
Groups: [!Ref 'CFNAdminGroup']
其中您的allow语句专门提供对Cloudformation的访问。如果您试图访问s3,那么为什么要访问Cloudformation
如果您希望用户只能访问s3,并进一步访问一个特定的s3存储桶,那么您的策略将类似于以下内容:json中的注释:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation",
"s3:ListAllMyBuckets"
],
"Resource": "arn:aws:s3:::*"
},
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::YOUR-BUCKET",
"arn:aws:s3:::YOUR-BUCKET/*"
]
}
]
}
如果您希望您的用户能够访问所有存储桶,那么您的策略将更像这样:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1557048549844",
"Action": "s3:*",
"Effect": "Allow",
"Resource": "*"
}
]
}
查看此来源:首先,您确定要通过CloudFormation模板创建此用户吗?这意味着堆栈必须在需要该用户时运行。通常,在IAM控制台中手动创建IAM用户,然后将凭据提供给将使用IAM用户的人员或应用程序。第二,我认为你是从某处复制模板而不是自己编写模板,这是否正确?该策略非常明确地授予了CloudFormation权限,但没有授予S3任何权限。您个人是否熟悉IAM政策的工作方式?