amazon-web-services - 将多个 IAM 角色与 CloudFormation 中的 AWS::IAM::InstanceProfile 关联

标签 amazon-web-services amazon-iam aws-cloudformation

我有一个 CloudFormation 模板,可以打开一个自动缩放组。它具有以下实例配置文件以及关联的角色和策略。有没有办法将现有的 IAM 角色添加到 InstanceProfile 中? AWS 文档似乎说不:

Currently, a maximum of one role can be assigned to an instance profile.

基本上,我想在模板中保留以下角色和策略创建,以便策略可以引用 SQS 资源(即 "Resource": [{ "Fn::GetAtt": ["LifecycleSQS", "Arn "] }])由模板创建,同时还分配一个预先存在的角色,该角色将为实例上的应用程序授予权限。我不想在 CloudFormation 模板中创建这些应用程序特定的权限。

"InstanceRole":{
     "Type":"AWS::IAM::Role",
     "Properties":{
        "AssumeRolePolicyDocument":{
           "Statement":[
              {
                 "Effect":"Allow",
                 "Principal":{
                    "Service":[
                       "autoscaling.amazonaws.com"
                    ]
                 },
                 "Action":[
                    "sts:AssumeRole"
                 ]
              }
           ]
        },
        "Path":"/"
     }
},
"RolePolicies":{
     "Type":"AWS::IAM::Policy",
     "Properties":{
        "PolicyName": "MyRolePolicy,
        "PolicyDocument":{
           "Statement":[
              {
                  "Effect": "Allow",
                  "Resource": [{ "Fn::GetAtt" : ["LifecycleSQS", "Arn"] }],
                  "Action": [
                        "sqs:SendMessage",
                        "sqs:GetQueueUrl",
                        "sns:Publish"
                  ]
              }
           ]
        },
        "Roles":[
           {
              "Ref":"InstanceRole"
           }
        ]
     }
},
"InstanceProfile":{
     "Type":"AWS::IAM::InstanceProfile",
     "Properties":{
        "Path":"/",
        "Roles":[
           {
              "Ref":"InstanceRole"
           }
        ]
     }
}

最佳答案

这是正确的,Roles in an instance profile仅限于 1。您无法绕过这个。

我发现,如果您创建独立的策略,然后将其应用于给定的实例角色,那么限制就较小。

例如,我有一个 ApplicationServer 实例角色。然后,我可以创建以下策略并将其附加到该角色:CodeDeployInstance(允许该实例接受代码部署)、DomainJoinInstance(允许实例加入域的权限)和 AppCredentialsInstance(允许实例通过安全的 S3 存储桶访问应用程序凭据)。您可以通过这种方式将最多 10 个策略附加到一个角色。

您可以在 CF 模板外部创建这些策略,并根据需要将它们应用到实例角色/实例配置文件。

我以这种方式定义所有实例:特定的角色名称,然后根据需要针对任何角色添加/减去/组合我自己的预定义策略。

这些更改会立即被正在运行的实例识别,无需重新启动或重新启动。

希望对您有所帮助。

关于amazon-web-services - 将多个 IAM 角色与 CloudFormation 中的 AWS::IAM::InstanceProfile 关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34685874/

相关文章:

amazon-web-services - 有没有办法在同一区域克隆 Cloudformation 堆栈?

amazon-web-services - ECS 从 AL1 迁移到 AL2 - ECS 服务未启动

node.js - AWS ElastiCache 的 Redis 密码

amazon-web-services - Elastic Beanstalk 弹性负载均衡器名称

amazon-web-services - 使用 AWS_CLI 执行 aws iam list-users 时出错

amazon-web-services - IAM 角色增加超过最大配额限制

amazon-web-services - AWS Lambda 和网关 API 集成,返回状态代码 500

amazon-web-services - EBS IO1 相对于 GP3 卷类型的优势

amazon-web-services - AWS Quicksight 无法看到 athena 数据库

amazon-web-services - 无服务器 : [AWS] Unable to create role resource with policy