

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

# 授予許可以使用 EC2 Instance Connect 端點
<a name="permissions-for-ec2-instance-connect-endpoint"></a>

依預設，IAM 實體沒有建立、描述或修改 EC2 Instance Connect 端點的許可。IAM 管理員可以建立 IAM 政策，授予在所需資源上執行特定動作所需的權限。

如需有關建立和編輯 IAM 政策的資訊，請參閱「IAM 使用者指南」**中的[建立 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)。

下列範例政策示範您如何控制使用者對 EC2 Instance Connect 端點所需的許可。

**Topics**
+ [建立、描述、修改和刪除 EC2 Instance Connect 端點所需的許可](#iam-CreateInstanceConnectEndpoint)
+ [使用 EC2 Instance Connect 端點連線到執行個體所需的許可](#iam-OpenTunnel)
+ [僅從特定 IP 位址範圍連線的許可](#iam-sourceip)

## 建立、描述、修改和刪除 EC2 Instance Connect 端點所需的許可
<a name="iam-CreateInstanceConnectEndpoint"></a>

若要建立及修改 EC2 Instance Connect 端點，使用者需要下列動作的許可：
+ `ec2:CreateInstanceConnectEndpoint`
+ `ec2:CreateNetworkInterface`
+ `ec2:CreateTags`
+ `ec2:ModifyInstanceConnectEndpoint`
+ `iam:CreateServiceLinkedRole`

若要描述和刪除 EC2 Instance Connect 端點，使用者需要下列動作的許可：
+ `ec2:DescribeInstanceConnectEndpoints` 
+ `ec2:DeleteInstanceConnectEndpoint`

您可以建立一個政策，以准許在所有子網路中建立、描述、修改和刪除 EC2 Instance Connect 端點。或者，僅將子網路 ARN 指定為允許的 `Resource` 或使用 `ec2:SubnetID` 條件索引鍵，來限制指定子網路的動作。您也可以使用 `aws:ResourceTag` 條件索引鍵來明確允許或拒絕具有特定標籤的端點建立。如需詳細資訊，請參閱「 IAM 使用者指南」**中的 [IAM 中的政策和許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)。

**IAM 政策範例**

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

## 使用 EC2 Instance Connect 端點連線到執行個體所需的許可
<a name="iam-OpenTunnel"></a>

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

**條件**
+ `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 秒至最多 3600 秒 (1 小時)。如果未指定條件，則預設持續時間會設為 3600 秒 (1 小時)。嘗試連線至執行個體的時間超過 IAM 政策中指定的持續時間，或超過預設最大值時，會導致失敗。連線會在指定的持續時間後中斷。

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

您也可以根據 EC2 Instance Connect 端點上的資源標籤存在情況，授予使用者建立執行個體連線的存取權。如需詳細資訊，請參閱「 IAM 使用者指南」**中的 [IAM 中的政策和許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)。

針對 Linux 執行個體，`ec2-instance-connect:SendSSHPublicKey` 動作准許將公有金鑰推送至執行個體。`ec2:osuser` 條件指定可將公有金鑰推送至執行個體的 OS (作業系統) 使用者名稱。使用針對啟動執行個體的 [AMI 的預設使用者名稱](connection-prereqs-general.md#connection-prereqs-get-info-about-instance)。如需詳細資訊，請參閱[為 EC2 Instance Connect 授予 IAM 許可](ec2-instance-connect-configure-IAM-role.md)。

**IAM 政策範例**

以下 IAM 政策範例允許 IAM 主體僅使用指定的 EC2 Instance Connect 端點(由指定的端點 ID `eice-123456789abcdef` 識別) 連線到執行個體。必須滿足所有條件，連線才會成功建立。

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

------
#### [ Linux ]

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

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Sid": "EC2InstanceConnect",
            "Action": "ec2-instance-connect:OpenTunnel",
            "Effect": "Allow",
            "Resource": "arn:aws:ec2:{{us-east-1}}:{{111122223333}}: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 小時) 後中斷。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Sid": "EC2InstanceConnect",
            "Action": "ec2-instance-connect:OpenTunnel",
            "Effect": "Allow",
            "Resource": "arn:aws:ec2:{{us-east-1}}:{{111122223333}}: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 位址範圍連線的許可
<a name="iam-sourceip"></a>

下列 IAM 政策範例允許 IAM 主體連線到執行個體，條件是它們從政策中指定的 IP 位址範圍內的 IP 位址進行連線。如果 IAM 主體從不在 `192.0.2.0/24` 範圍內的 IP 位址呼叫 `OpenTunnel` (此政策中的範例 IP 位址範圍)，則回應為 `Access Denied`。如需詳細資訊，請參閱「*IAM 使用者指南*」中的 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceip](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceip)。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": "ec2-instance-connect:OpenTunnel",
            "Resource": "arn:aws:ec2:{{us-east-1}}:{{111122223333}}: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": "*"
        }
    ]
}
```

------