跳至內容

如何限制存取權,以便使用者只能從標記的 AMI 啟動 Amazon EC2 執行個體?

2 分的閱讀內容
0

我想限制使用者存取權,以便使用者只能從已標記的 Amazon Machine Images (AMI) 啟動 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體。

解決方法

若要限制存取權,以便使用者只能從標記的 AMI 啟動 EC2 執行個體,請執行下列其中一項動作:

  • 從現有的執行個體建立 AMI。
  • 使用現有的 AMI,然後將標籤新增至 AMI。

然後,建立自訂的 AWS Identity and Access Management (IAM) 政策。IAM 政策會使用標籤條件,限制使用者許可只能啟動使用標記的 AMI 的執行個體。

在下列範例 IAM 政策中,系統會使用這些 Sid (陳述式 ID) 值:

  • ReadOnlyAccess 允許使用者使用 Describe* 檢視任何在帳戶中的 EC2 資源,其中包括所有以 Describe 開頭的 EC2 動作。ReadOnlyAccess 也允許使用者取得執行個體的主控台輸出主控台螢幕擷取畫面。Amazon CloudWatch 的 DescribeAlarmsGetMetricStatistics 許可允許執行個體的運作狀態資訊出現在 Amazon EC2 主控台中。IAM 的 ListInstanceProfiles 許可允許現有的執行個體設定檔顯示在 IAM 角色清單中。啟動執行個體時,IAM 角色清單會出現在設定執行個體詳細資料頁面上。但是,ListInstanceProfiles API 不允許使用者將 IAM 角色連接至執行個體。
  • ActionsRequiredtoRunInstancesInVPC 會授予使用者執行 RunInstances API 的許可。您可以使用 us-east-1 AWS 區域中的任何執行個體、金鑰對、安全群組、磁碟區、網路介面或子網路。資源層級許可會指定每個資源的 ARN。
  • LaunchingEC2withAMIsAndTags 允許使用者使用 AMI 來啟動執行個體。AMI 必須具有一個環境標籤,其值在 us-east-1 區域中設定為 Prod。對於 us-east-1 區域中的任何 AMI,資源層級許可會設定為 ARN。條件與 EC2:ResourceTag/Environment 標籤鍵的值和 Prod 鍵值相符。

下列 IAM 政策會針對 RunInstances API 動作的必要資源使用支援的資源層級許可

注意:

  • 此政策允許使用者在他們啟動執行個體時列出角色。但是,使用者只能在擁有 iam:PassRole 許可時,才能啟動具有連接角色的執行個體。
  • 此政策不允許使用者建立新的安全群組。使用者必須選取現有安全群組以啟動 EC2 執行個體,除非使用者擁有 CreateSecurityGroup EC2 許可。EC2:CreateSecurityGroup API 動作會授予只能建立安全群組的存取權。該動作不會新增或修改任何規則。若要新增傳入規則,使用者必須擁有傳入 AuthorizeSecurityGroupIngress EC2 API 動作和傳出 AuthorizeSecurityGroupEgress EC2 API 動作的許可。
  • 此政策不允許使用者連接執行個體名稱,或修改標籤並將其連接至 EC2 執行個體資源。使用者必須將標籤和名稱保留空白,除非使用者在建立執行個體時具有 CreateTags 許可。
{  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ReadOnlyAccess",
      "Effect": "Allow",
      "Action": [
        "ec2:Describe*",
        "ec2:GetConsole*",
        "cloudwatch:DescribeAlarms",
        "cloudwatch:GetMetricStatistics",
        "iam:ListInstanceProfiles"
      ],
      "Resource": "*"
    },
    {
      "Sid": "ActionsRequiredtoRunInstancesInVPC",
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [
        "arn:aws:ec2:us-east-1:AccountId:instance/*",
        "arn:aws:ec2:us-east-1:AccountId:key-pair/*",
        "arn:aws:ec2:us-east-1:AccountId:security-group/*",
        "arn:aws:ec2:us-east-1:AccountId:volume/*",
        "arn:aws:ec2:us-east-1:AccountId:network-interface/*",
        "arn:aws:ec2:us-east-1:AccountId:subnet/*"
      ]
    },
    {
      "Sid": "LaunchingEC2withAMIsAndTags",
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": "arn:aws:ec2:us-east-1::image/ami-*",
      "Condition": {
        "StringEquals": {
          "ec2:ResourceTag/Environment": "Prod"
        }
      }
    }
  ]
}
AWS 官方已更新 2 年前