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

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

3 分的閱讀內容
0

我想要允許 AWS Identity and Access Management (IAM) 身分存取權,以啟動新的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體。我也想允許 IAM 身分存取以建立新的 Amazon Elastic Block Store (Amazon EBS) 磁碟區,在他們套用特定標籤時才能存取。

簡短說明

指定 EC2 執行個體和 Amazon EBS 磁碟區的標籤,做為建立資源的 API 呼叫的一部分。將條件套用至 IAM 政策,以要求 IAM 使用者標記特定資源。

下列範例政策不允許使用者建立安全群組或金鑰對,因此使用者必須選取存在的安全群組和金鑰對。

下列範例 IAM 政策允許使用者啟動具有下列組態的執行個體:

  • 匹配標籤金鑰和值
  • 至少一個匹配的標籤和值
  • 至少一個匹配的標籤金鑰
  • 僅指定的標籤清單

範例 IAM 政策還允許使用者管理具有匹配的標籤金鑰和值的執行個體和磁碟區。

**注意:**若要使用範例政策,請使用您的值取代範例值。

解決方法

根據標籤限制建立 EC2 執行個體和 EBS 磁碟區

下列範例政策允許使用者啟動執行個體,並根據標籤建立磁碟區。

啟動具有相符標籤金鑰和值的 EC2 執行個體

在下列範例政策中,RequestTag 條件控制索引標籤執行。如果使用者套用未包含在政策中的標籤,則會拒絕該動作。若要強制區分大小寫,請使用 aws:TagKeys 條件:

{  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowToDescribeAll",
      "Effect": "Allow",
      "Action": [
        "ec2:Describe*"
      ],
      "Resource": "*"
    },
    {
      "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/*"
      ]
    },
    {
      "Sid": "AllowRunInstancesWithRestrictions",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateVolume",
        "ec2:RunInstances"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:volume/*",
        "arn:aws:ec2:*:*:instance/*",
        "arn:aws:ec2:*:*:network-interface/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/key1": "value1",
          "aws:RequestTag/key2": "value2"
        },
        "ForAllValues:StringEquals": {
          "aws:TagKeys": [
            "key1",
            "key2"
          ]
        }
      }
    },
    {
      "Sid": "AllowCreateTagsOnlyLaunching",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateTags"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:volume/*",
        "arn:aws:ec2:*:*:instance/*",
        "arn:aws:ec2:*:*:network-interface/*"
      ],
      "Condition": {
        "StringEquals": {
          "ec2:CreateAction": [
            "RunInstances",
            "CreateVolume"
          ]
        }
      }
    }
  ]
}

重要:若要成功啟動 EC2 執行個體,先前的政策必須包含相符的標籤金鑰和值。如果金鑰和值配對不相符,您會收到啟動失敗錯誤或類似類型的 API 失敗訊息。

結果範例

金鑰/值結果
key1/value1 和 key2/value2allow
key1/value1deny
key1/value2deny
没有 keys 和 valuesdeny

啟動至少具有一個相符標籤金鑰的 EC2 執行個體

在下列範例政策中,當至少一個標籤金鑰命名為 key1 時,請取代 AllowRunInstancesWithRestrictions 條件區塊。 key1 標籤不需要特定值,您可以在 RunInstances 請求中新增標籤:

"Condition": {  "StringEquals": {
    "aws:RequestTag/key1": "value1"
  },
  "ForAnyValue:StringEquals": {
    "aws:TagKeys": [
      "key1"
    ]
  }
}

結果範例

金鑰/值結果
key1/value1 和 key2/value2allow
key1/value1allow
key1/value2allow
没有 keys 和 valuesdeny

啟動只有指定標籤清單的 EC2 執行個體

在下列範例政策中,在請求中提供標籤金鑰 key1key2 時,請取代AllowRunInstancesWithRestrictions 條件區塊。任何一個標籤金鑰都不需要特定值,也無法在 RunInstances 請求中新增標籤:

"Condition": {  "StringLike": {
      "aws:RequestTag/key1": "*",
      "aws:RequestTag/key2": "*"
  },
  "ForAllValues:StringEquals": {
    "aws:TagKeys": [
        "key1",
        "key2"
    ]
  }
}

**注意:**在上述政策中,必須使用 StringLike 條件,以便這些值可以包含多個字元匹配萬用字元 (\ *)。

結果範例

金鑰/值結果
key1/AnyValue 和 key2/AnyValueAllow
key1/AnyValueDeny
key2/AnyValueDeny
没有 keys 或 valuesDeny
key1/AnyValue,key2/AnyValue,key3/AnyValueDeny

根據標籤金鑰和值限制 EC2 執行個體和 EBS 磁碟區管理

下列範例政策會根據標籤金鑰和值限制使用者對執行個體和磁碟區的管理。

管理具有相符標籤鍵和值的 EC2 執行個體

下列範例原則限制 IAM 身分的存取權限,只能啟動、停止或重新啟動 EC2 執行個體。執行個體必須擁有具有 Bob 標籤值的 擁有者 金鑰標籤:

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

注意:使用您的標籤密鑰取代擁有者,使用您的 IAM 使用者取代 Bob,以及使用資源的 ARN 取代資源 ARN。

如需詳細資訊,請參閱我是否可以限制 IAM 身分存取特定 Amazon EC2 資源?

管理具有相符標籤金鑰和值的 EBS 磁碟區

下列範例政策允許 IAM 身分卸離或刪除 EBS 磁碟區。針對 DeleteVolume API 動作,磁碟區必須具有帶有 Mary 標籤值的擁有者標籤金鑰。針對 DetachVolume API 動作,執行個體和磁碟區都必須具有相同的標籤金鑰擁有者和標籤值 Mary

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Statement1",
            "Effect": "Allow",
            "Action": [
                "ec2:DetachVolume",
                "ec2:DeleteVolume"
            ],
            "Resource": [
                "arn:aws:ec2:*:111122223333:volume/*",
                "arn:aws:ec2:*:111122223333:instance/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/Owner": "Mary"
                }
            }
        }
    ]
}

注意:使用您的標籤金鑰取代擁有者,使用您的 IAM 使用者取代 Mary,使用您的資源的 ARN 取代資源的 ARN。

相關資訊

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

IAM 身分型政策範例

標記您的 Amazon EC2 資源

適用於 Amazon EC2 的動作、資源和條件金鑰

AWS 官方
AWS 官方已更新 2 個月前