如何使用boto3创建特定类型的IAM角色?

时间:2019-12-26 06:29:16

标签: amazon-web-services amazon-ec2 boto3 amazon-iam

我正在尝试将用户锁定在VPC中并紧随How to Help Lock Down a User’s Amazon EC2 Capabilities to a Single VPC | AWS Security Blog之后的特定AWS中。

我们提到需要创建一个IAM role类型为VPCLockDown的{​​{1}}

IAM role type

并添加角色需要访问的服务。例如AWS Serviceec2

我正尝试使用lambda以编程方式创建此角色。

我检查了create_role documentation是否使用boto3创建角色。

但是,他们没有提及任何内容来指定角色的类型以及我可以指定的角色应该访问的服务。

使用boto3创建IAM role时,有什么方法可以指定这些项目

编辑1:

我尝试按照 Sudarshan Rampuria 的答案(如

)创建service_linked_role
boto3

但是出现以下错误:

  

调用时发生错误(AccessDenied)   CreateServiceLinkedRole操作:找不到服务链接角色   ec2.amazonaws.com的模板

2 个答案:

答案 0 :(得分:0)

您可以使用create_service_linked_role()函数boto3将角色链接到服务。 https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/iam.html#IAM.Client.create_service_linked_role

答案 1 :(得分:0)

以下是一项政策,允许特定的IAM用户启动实例(RunInstances,但只能在给定的VPC中启动

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "EC2RunInstancesVPC",
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": "arn:aws:ec2:ap-southeast-2:111111111111:subnet/*",
            "Condition": {
                "StringEquals": {
                    "ec2:vpc": "arn:aws:ec2:ap-southeast-2:111111111111:vpc/vpc-abcd1234"  <--- Change this
                }
            }
        },
        {
            "Sid": "RemainingRunInstancePermissions",
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": [
                "arn:aws:ec2:ap-southeast-2:111111111111:instance/*",
                "arn:aws:ec2:ap-southeast-2:111111111111:volume/*",
                "arn:aws:ec2:ap-southeast-2::image/*",
                "arn:aws:ec2:ap-southeast-2::snapshot/*",
                "arn:aws:ec2:ap-southeast-2:111111111111:network-interface/*",
                "arn:aws:ec2:ap-southeast-2:111111111111:key-pair/*",
                "arn:aws:ec2:ap-southeast-2:111111111111:security-group/*"
            ]
        }
    ]
}

您可能需要更改地区。 (我在悉尼地区进行了测试。)