為 EC2 Instance Connect 授予 IAM 許可 - Amazon Elastic Compute Cloud

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

為 EC2 Instance Connect 授予 IAM 許可

若要使用 EC2 Instance Connect 連線至執行個體,請務必建立 IAM 政策來授予使用者執行下列動作和條件的許可:

  • ec2-instance-connect:SendSSHPublicKey 動作 – 准許將公有金鑰推送至執行個體。

  • ec2:osuser 條件 – 指定可將公有金鑰推送至執行個體的 OS 使用者名稱。使用您用來啟動執行個體之 AMI 的預設使用者名稱。AL2023 和 Amazon Linux 2 的默認用戶名是ec2-user,對於 Ubuntu 而言,它是ubuntu

  • ec2:DescribeInstances 動作 – 使用 EC2 主控台時必需,因為包裝函數會呼叫此動作。使用者可能已有從另一個政策呼叫此動作的許可。

考慮限制對特定 EC2 執行個體的存取。否則,具有 ec2-instance-connect:SendSSHPublicKey 動作許可的所有 IAM 主體都可以連線到所有 EC2 執行個體。您可以指定資源 ARN 或將資源標籤做為條件索引鍵使用,來限制存取。

如需詳細資訊,請參閱適用於 Amazon EC2 Instance Connect 的動作、資源和條件金鑰

如需有關建立和編輯 IAM 政策的資訊,請參閱《IAM 使用者指南》中的建立 IAM 政策

允許使用者連線至特定執行個體

下列 IAM 政策會授予連線至特定執行個體的許可,由其資源 ARN 識別。

在下列 IAM 政策範例中,指定了下列動作和條件:

  • ec2-instance-connect:SendSSHPublicKey 動作准許使用者連線至兩個執行個體,由資源 ARN 指定。若要准許使用者連線至所有 EC2 執行個體,請以 * 萬用字元取代資源 ARN。

  • 只有在連線時指定 ami-usernameec2:osuser 條件才會准許連線至執行個體。

  • 指定 ec2:DescribeInstances 動作,准許使用主控台的使用者連線至執行個體。如果使用者僅使用 SSH 用戶端連線至執行個體,則可以省略 ec2:DescribeInstances。注意,ec2:Describe* API 動作不支援資源層級許可。因此,在 Resource 元素中必須包含 * 萬用字元。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "ec2-instance-connect:SendSSHPublicKey", "Resource": [ "arn:aws:ec2:region:account-id:instance/i-1234567890abcdef0", "arn:aws:ec2:region:account-id:instance/i-0598c7d356eba48d7" ], "Condition": { "StringEquals": { "ec2:osuser": "ami-username" } } }, { "Effect": "Allow", "Action": "ec2:DescribeInstances", "Resource": "*" } ] }

允許使用者連線至具有特定標籤的執行個體

以屬性為基礎的存取控制 (ABAC) 是一種授權策略,根據可附加至使用者和資源的標籤來定義權限。 AWS 您可使用資源標籤來控制對執行個體的存取。如需有關使用標籤來控制 AWS 資源存取權的詳細資訊,請參閱 IAM 使用者指南中的控制 AWS 資源存取。

在下列 IAM 政策範例中,ec2-instance-connect:SendSSHPublicKey 動作准許使用者連線至任何執行個體 (由資源 ARN 中的 * 萬用字元表示),條件是執行個體的資源標記中 key=tag-key 和 value=tag-value

指定 ec2:DescribeInstances 動作,准許使用主控台的使用者連線至執行個體。如果使用者僅使用 SSH 用戶端連線至執行個體,則可以省略 ec2:DescribeInstances。注意,ec2:Describe* API 動作不支援資源層級許可。因此,在 Resource 元素中必須包含 * 萬用字元。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "ec2-instance-connect:SendSSHPublicKey", "Resource": "arn:aws:ec2:region:account-id:instance/*", "Condition": { "StringEquals": { "aws:ResourceTag/tag-key": "tag-value" } } }, { "Effect": "Allow", "Action": "ec2:DescribeInstances", "Resource": "*" } ] }