AWS IAM ROLE访问多个服务

时间:2017-05-26 14:12:07

标签: amazon-web-services amazon-iam

如果EC2实例需要访问多个AWS服务(如S3,SNS,SQS,CloudWatch等),授予EC2实例访问权限的最佳做法是什么,

  • 一个ROLE是否具有所有必需的许可
  • OR
  • 创建多个ROLE(您只能将一个ROLE附加到EC2实例。使用配置文件可以使用多个角色。根据您使用的语言需要额外编码) - 每个服务一个

根据AWS文档,您应始终为EC2创建ROLE,并根据您的要求将策略分配给ROLE。

对一个ROLE授予多个服务访问权限是否存在任何安全问题? 我要问的原因是因为使用EC2元数据,您可以在该点使用该ROLE获取分配给EC2实例的accesskey信息。 EC2经常刷新密钥。

任何反馈或意见。

4 个答案:

答案 0 :(得分:1)

AFAIK,到目前为止最适合我的是[ec2 - >一个角色 - >许多策略]和角色信任关系分配给ec2实例服务。

不确定为什么要关注安全方面,以获取已经过身份验证并可访问ec2实例的元数据。

希望这有帮助,可能更详细的用例可能有助于更准确地回答。

答案 1 :(得分:0)

您当然可以 为一个IAM角色分配多个权限,然后将该IAM角色分配给Amazon EC2实例。

这是正确的做法。

答案 2 :(得分:0)

这取决于您的服务或EC2使用情况。

如果您的服务部署在不同的EC2实例上并执行不同的操作,您的每个服务都与不同的资源交互,我建议为每个用例创建一个角色(对于每个EC2实例) )。如果您的EC2受到损害,这将保护您。黑客可能有权访问所有这些资源。

如果您的所有服务都使用相同的资源进行交互或部署到同一个EC2实例,那么我只需创建一个角色,并将其用于我的所有EC2实例。

答案 3 :(得分:0)

最好的方法是通过粒度访问将单个角色与附加的多个策略一起使用 此外,使用/ service角色也将是一个更好的选择

示例:

YourServerEc2Profile:
    Type: AWS::IAM::InstanceProfile
    Properties:
      Path: '/'
      Roles:
      - Ref: YourServerEc2Role
YourServerEc2Role:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
        - Effect: Allow
          Principal:
            Service:
            - ec2.amazonaws.com
          Action:
          - sts:AssumeRole
      Path: "/"
      Policies:
      -
        PolicyName: audit
        PolicyDocument:
          Version: "2012-10-17"
          Statement:
            -
              Action:
                - "ssm:*"
                - "ec2:DescribeImages"
                - "cloudwatch:PutMetricData"
                - "ec2:DescribeInstances"
                - "lambda:InvokeFunction"
                - "ec2:DescribeTags"
                - "ec2:DescribeVpcs"
                - "cloudwatch:GetMetricStatistics"
                - "ec2:DescribeSubnets"
                - "ec2:DescribeKeyPairs"
                - "cloudwatch:ListMetrics"
                - "ec2:DescribeSecurityGroups"
              Resource: "*"
              Effect: "Allow"

      ManagedPolicyArns:
        - !Ref YourServerCrossAccount
        - arn:aws:iam::aws:policy/ReadOnlyAccess
  YourServerCrossAccount:
    Type: AWS::IAM::ManagedPolicy
    Properties:
      PolicyDocument:
        Version: '2012-10-17'
        Statement:
        - Effect: Allow
          Action:
          - sts:AssumeRole
          Resource:
          - arn:aws:iam::AccountID:role/AWS_CrossAccount ```