授予 IAM 許可以使用 EC2 Instance Connect Endpoint - Amazon Elastic Compute Cloud

授予 IAM 許可以使用 EC2 Instance Connect Endpoint

若要建立或使用 EC2 Instance Connect Endpoint,您必須建立 IAM 政策,以授予使用者下列許可:

  • 建立、描述和刪除 EC2 Instance Connect Endpoint

  • 透過 ec2-instance-connect:OpenTunnel 動作來使用 EC2 Instance Connect Endpoint 以連線至執行個體

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

允許使用者建立、描述和刪除 EC2 Instance Connect Endpoint

若要建立 EC2 Instance Connect Endpoint,使用者需要下列動作的許可:

  • ec2:CreateInstanceConnectEndpoint

  • ec2:CreateNetworkInterface

  • ec2:CreateTags

  • iam:CreateServiceLinkedRole

若要描述和刪除 EC2 Instance Connect Endpoint,使用者需要下列動作的許可:

  • ec2:DescribeInstanceConnectEndpoints

  • ec2:DeleteInstanceConnectEndpoint

您可以建立一個政策,以准許在所有子網路中建立、描述和刪除 EC2 Instance Connect Endpoint。或者,僅將子網路 ARN 指定為允許的 Resource 或使用 ec2:SubnetID 條件索引鍵,來限制指定子網路的動作。您也可以使用 aws:ResourceTag 條件索引鍵來明確允許或拒絕具有特定標籤的端點建立。如需詳細資訊,請參閱 IAM 使用者指南 中的 IAM 中的政策和許可

IAM 政策範例

在下列 IAM 政策範例中,Resource 區段准許在所有子網路中建立和刪除端點,以星號 (*) 指定。ec2:Describe* API 動作不支援資源層級許可。因此,在 Resource 元素中必須包含 * 萬用字元。

{ "Version": "2012-10-17", "Statement": [{ "Sid": "GrantAllActionsInAllSubnets", "Action": [ "ec2:CreateInstanceConnectEndpoint", "ec2:DeleteInstanceConnectEndpoint", "ec2:CreateNetworkInterface", "ec2:CreateTags", "iam:CreateServiceLinkedRole" ], "Effect": "Allow", "Resource": "arn:aws:ec2:region:account-id:subnet/*" }, { "Action": [ "ec2:CreateNetworkInterface" ], "Effect": "Allow", "Resource": "arn:aws:ec2:::security-group/*" }, { "Sid": "DescribeInstanceConnectEndpoints", "Action": [ "ec2:DescribeInstanceConnectEndpoints" ], "Effect": "Allow", "Resource": "*" } ] }

允許使用者使用 EC2 Instance Connect Endpoint 連線到執行個體

ec2-instance-connect:OpenTunnel 動作准許建立執行個體的 TCP 連線,以便透過 EC2 Instance Connect Endpoint 進行連線。您可以指定要使用的 EC2 Instance Connect Endpoint。或者,帶有星號 (*) 的 Resource 允許使用者使用任何可用的 EC2 Instance Connect Endpoint。您也可以根據是否存在作為條件索引鍵的資源標籤來限制執行個體的存取。

條件
  • ec2-instance-connect:remotePort – 指定執行個體上可用來建立 TCP 連線的連接埠。使用此條件索引鍵時,嘗試連線到政策中指定的連接埠以外的任何其他連接埠上的執行個體會導致失敗。

  • ec2-instance-connect:privateIpAddress – 指定與您要建立 TCP 連線的執行個體相關聯的目的地私有 IP 地址。您可以指定單一 IP 地址 (例如 10.0.0.1/32) 或透過 CIDR 指定 IP 範圍 (例如 10.0.1.0/28)。使用此條件索引鍵時,嘗試連線至具有不同私有 IP 地址或超出 CIDR 範圍的執行個體會導致失敗。

  • ec2-instance-connect:maxTunnelDuration – 指定已建立的 TCP 連線的持續時間上限。單位為秒,持續時間範圍為至少 1 秒至最多 3,600 秒 (1 小時)。如果未指定條件,則預設持續時間會設為 3,600 秒 (1 小時)。嘗試連線至執行個體的時間超過 IAM 政策中指定的持續時間,或超過預設最大值時,會導致失敗。連線會在指定的持續時間後中斷。

    如果在 IAM 政策中指定 maxTunnelDuration,且指定的值少於 3,600 秒 (預設值),則您必須在連線至執行個體時在命令中指定 --max-tunnel-duration。如需有關如何連線至執行個體的資訊,請參閱 使用 EC2 Instance Connect Endpoint 連線至 Linux 執行個體

也可以根據 EC2 Instance Connect Endpoint 上的資源標籤存在情況,授予使用者建立執行個體連線的存取權。如需詳細資訊,請參閱 IAM 使用者指南 中的 IAM 中的政策和許可

ec2-instance-connect:SendSSHPublicKey 動作准許將公有金鑰推送至執行個體。ec2:osuser 條件指定可將公有金鑰推送至執行個體的 OS (作業系統) 使用者名稱。針對用於啟動執行個體的 ,使用 AMI 的預設使用者名稱如需詳細資訊,請參閱為 EC2 Instance Connect 授予 IAM 許可

IAM 政策範例

以下 IAM 政策範例允許 IAM 主體僅使用指定的 EC2 Instance Connect Endpoint (由指定的端點 ID eice-123456789abcdef 識別) 連線到執行個體。只有在滿足所有條件時,才能成功建立連線,例如,如果在執行個體的連接埠 22 上建立 SSH 連線,且執行個體的私有 IP 地址位於 10.0.1.0/31 範圍內 (介於 10.0.1.010.0.1.1 之間),且 maxTunnelDuration 小於或等於 3600 秒。連線會在 3600 秒 (1 小時) 後中斷。

ec2:Describe* API 動作不支援資源層級許可。因此,在 Resource 元素中必須包含 * 萬用字元。

{ "Version": "2012-10-17", "Statement": [{ "Sid": "EC2InstanceConnect", "Action": "ec2-instance-connect:OpenTunnel", "Effect": "Allow", "Resource": "arn:aws:ec2:region:account-id:instance-connect-endpoint/eice-123456789abcdef", "Condition": { "NumericEquals": { "ec2-instance-connect:remotePort": "22" }, "IpAddress": { "ec2-instance-connect:privateIpAddress": "10.0.1.0/31" }, "NumericLessThanEquals": { "ec2-instance-connect:maxTunnelDuration": "3600" } } }, { "Sid": "SSHPublicKey", "Effect": "Allow", "Action": "ec2-instance-connect:SendSSHPublicKey", "Resource": "*", "Condition": { "StringEquals": { "ec2:osuser": "ami-username" } } }, { "Sid": "Describe", "Action": [ "ec2:DescribeInstances", "ec2:DescribeInstanceConnectEndpoints" ], "Effect": "Allow", "Resource": "*" } ] }

僅允許使用者從指定的來源 IP 地址範圍進行連線

下列 IAM 政策範例允許 IAM 主體連線到執行個體,條件是它們從政策中指定的 IP 地址範圍內的 IP 地址進行連線。如果 IAM 主體從不在 192.0.2.0/24 範圍內的 IP 地址呼叫 OpenTunnel (此政策中的範例 IP 地址範圍),則回應將為 Access Denied。如需詳細資訊,請參閱《IAM 使用者指南》中的 aws:SourceIp

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "ec2-instance-connect:OpenTunnel", "Resource": "arn:aws:ec2:region:account-id:instance-connect-endpoint/eice-123456789abcdef", "Condition": { "IpAddress": { "aws:SourceIp": "192.0.2.0/24" }, "NumericEquals": { "ec2-instance-connect:remotePort": "22" } } }, { "Sid": "SSHPublicKey", "Effect": "Allow", "Action": "ec2-instance-connect:SendSSHPublicKey", "Resource": "*", "Condition": { "StringEquals": { "ec2:osuser": "ami-username" } } }, { "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:DescribeInstanceConnectEndpoints" ], "Resource": "*" } ] }