使用 AWS re:Post 即表示您同意 AWS re:Post 使用條款

如何限制 IAM 身份存取特定的 Amazon EC2 資源?

2 分的閱讀內容
0

我想限制 AWS Identity and Access Management (IAM) 存取特定的 Amazon Elastic Compute Cloud (Amazon EC2) 資源。

簡短說明

Amazon EC2 對資源層級授權或條件提供部分支援。您可以使用資源層級權限來控制如何允許 IAM 身份存取特定 Amazon EC2 資源。

您也可以使用 ABAC (基於標籤的授權) 來控制對 AWS 資源的存取。如需詳細資訊,請參閱 IAM 教學課程: 根據標籤定義存取 AWS 資源的許可

解決方法

使用下列範例 IAM 政策,針對您的使用案例限制存取 Amazon EC2 執行個體。然後,附加政策至您要限制存取的 IAM 身份。

限制僅啟動、停止或重新啟動執行個體的存取權

下列範例政策將 IAM 身份的存取限制於僅啟動、停止或重新啟動 EC2 執行個體:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:Describe*",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:StartInstances",
                "ec2:StopInstances",
                "ec2:RebootInstances"
            ],
            "Resource": [
                "arn:aws:ec2:*:AccountId:instance/*"
            ],
            "Condition": {
                "StringEquals": {
                    "ec2:ResourceTag/Owner": "Bob"
                }
            }
        }
    ]
}

注意: 將 Owner 取代為您的標籤金鑰,將 Bob 取代為您的標籤值,並將 AccountId 取代為您的 AWS 帳戶 ID。

若要依 AWS 區域限制其他 Amazon EC2 資源,請確定這些動作支援資源層級的權限和條件。

依標籤限制 EC2 執行個體的啟動

下列範例政策使用 Owner 標籤金鑰將 IAM 身份的存取限於僅啟動 EC2 執行個體:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": [
                "arn:aws:ec2:*:AccountId:instance/*"
            ],
            "Condition": {
                "StringNotLike": {
                    "aws:RequestTag/Owner": "*"
                }
            }
        },
        {
            "Sid": "AllowRunInstances",
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": [
                "arn:aws:ec2:*::image/*",
                "arn:aws:ec2:*::snapshot/*",
                "arn:aws:ec2:*:*:subnet/*",
                "arn:aws:ec2:*:*:network-interface/*",
                "arn:aws:ec2:*:*:security-group/*",
                "arn:aws:ec2:*:*:key-pair/*",
                "arn:aws:ec2:*:*:instance/*",
                "arn:aws:ec2:*:*:volume/*"
            ]
        },
        {
            "Sid": "AllowToDescribeAll",
            "Effect": "Allow",
            "Action": [
                "ec2:Describe*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowCreateTagsOnLaunching",
            "Effect": "Allow",
            "Action": [
                "ec2:CreateTags"
            ],
            "Resource": [
                "arn:aws:ec2:*:AccountId:*/*"
            ],
            "Condition": {
                "StringEquals": {
                    "ec2:CreateAction": [
                        "RunInstances"
                    ]
                }
            }
        }
    ]
}

注意: 將 Owner 取代為您的標籤金鑰,並將 AccountId 取代為您的帳戶 ID。

依執行個體類型限制 EC2 執行個體的啟動

下列範例政策將 IAM 身份的存取限制於僅啟動 t3.* 執行個體類型的 EC2 執行個體:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": [
                "arn:aws:ec2:*:AccountId:instance/*"
            ],
            "Condition": {
                "StringNotLike": {
                    "ec2:InstanceType": "t3.*"
                }
            }
        },
        {
            "Sid": "AllowRunInstances",
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": [
                "arn:aws:ec2:*::image/*",
                "arn:aws:ec2:*::snapshot/*",
                "arn:aws:ec2:*:*:subnet/*",
                "arn:aws:ec2:*:*:network-interface/*",
                "arn:aws:ec2:*:*:security-group/*",
                "arn:aws:ec2:*:*:key-pair/*",
                "arn:aws:ec2:*:*:instance/*",
                "arn:aws:ec2:*:*:volume/*"
            ]
        },
        {
            "Sid": "AllowToDescribeAll",
            "Effect": "Allow",
            "Action": [
                "ec2:Describe*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowCreateTagsOnLaunching",
            "Effect": "Allow",
            "Action": [
                "ec2:CreateTags"
            ],
            "Resource": [
                "arn:aws:ec2:*:AccountId:*/*"
            ],
            "Condition": {
                "StringEquals": {
                    "ec2:CreateAction": [
                        "RunInstances"
                    ]
                }
            }
        }
    ]
}

**注意:**將執行個體類型 t3.* 取代為您的執行個體類型,例如 t3.nano。另外,將 AccountId 取代為您的帳戶 ID。

如需詳細資訊,請參閱 Amazon EC2 執行個體類型命名慣例

相關資訊

如何建立 IAM 政策以透過標籤控制對 Amazon EC2 資源的存取?

如何使用 IAM 政策標籤來限制 EC2 執行個體或 EBS 磁碟區的建立和存取方式?

Amazon EC2 基於身份的政策