授與使用EC2執行個體 Connect 端點的權限 - Amazon Elastic Compute Cloud

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

授與使用EC2執行個體 Connect 端點的權限

根據預設,IAM實體沒有建立、描述或修改EC2執行個體 Connect 端點的權限。IAM管理員可以建立IAM策略,以授與對所需資源執行特定動作所需的權限。

如需有關建立IAM策略的資訊,請參閱IAM使用指南中的建立IAM策略

下列範例策略顯示您可以控制使用者對於EC2執行個體 Connect 端點所擁有的權限。

建立、說明和刪除EC2執行個體 Connect 端點的權限

若要建立EC2執行個體 Connect 端點,使用者需要下列動作的權限:

  • ec2:CreateInstanceConnectEndpoint

  • ec2:CreateNetworkInterface

  • ec2:CreateTags

  • iam:CreateServiceLinkedRole

若要說明和刪除EC2執行個體 Connect 端點,使用者需要下列動作的權限:

  • ec2:DescribeInstanceConnectEndpoints

  • ec2:DeleteInstanceConnectEndpoint

您可以建立一個策略,授與在所有子網路中建立、描述和刪除EC2執行個體 Connect 端點的權限。或者,您只能將子網路指定ARNs為允許的子網路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體連線端點連線至執行個體的權限

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

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

  • ec2-instance-connect:privateIpAddress— 與您要建立連線的執行個體相關聯的目標私有 TCP IP 位址。您可以指定單一 IP 位址,例如10.0.0.1/32,或到IPs的範圍CIDRs,例如10.0.1.0/28。使用此條件金鑰時,嘗試連線至具有不同私有 IP 位址或超出CIDR範圍的執行個體會導致失敗。

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

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

您也可以授與使用者存取權,以根據執行個體連線端點上是否存在資源標籤來建立EC2執行個體的 Connect 線。如需詳細資訊,請參閱《IAM使用指南》IAM中的「策略和權限」。

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

範例IAM政策

下列範例IAM原則允許IAM主體僅使用指定的執行個體 Connect 線端點 (由指定的端點 ID 識別) 連線至EC2執行個體eice-123456789abcdef。只有在滿足所有條件的情況下,才能成功建立連接。

注意

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

Linux

本範例會評估執行個體的連線是否在 —port 22 (SSH) 上建立,執行個體的私有 IP 位址是否位於 10.0.1.0/31 (介於10.0.1.0和之間10.0.1.1) 的範圍內,且小maxTunnelDuration於或等於3600秒。連線會在 3600 秒 (1 小時) 後中斷。

{ "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": "*" } ] }
Windows

此範例會評估執行個體的連線是否在連接埠 3389 (RDP) 上建立,執行個體的私有 IP 位址是否位於 10.0.1.0/31 (介於10.0.1.0和之間10.0.1.1) 的範圍內,且小maxTunnelDuration於或等於3600秒。連線會在 3600 秒 (1 小時) 後中斷。

{ "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": "3389" }, "IpAddress": { "ec2-instance-connect:privateIpAddress": "10.0.1.0/31" }, "NumericLessThanEquals": { "ec2-instance-connect:maxTunnelDuration": "3600" } } }, { "Sid": "Describe", "Action": [ "ec2:DescribeInstances", "ec2:DescribeInstanceConnectEndpoints" ], "Effect": "Allow", "Resource": "*" } ] }

僅從特定 IP 位址範圍連線的權限

下列範例IAM原則允許IAM主體在從原則中指定的 IP 位址範圍內的 IP 位址連線到執行個體的情況下,連線至執行個體。如果IAM主體呼叫OpenTunnel的 IP 位址不在內 192.0.2.0/24 (此原則中的範例 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": "*" } ] }