

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

# 為 EC2 Instance Connect 授予 IAM 許可
<a name="ec2-instance-connect-configure-IAM-role"></a>

若要使用 EC2 Instance Connect 連線至執行個體，請務必建立 IAM 政策來授予使用者執行下列動作和條件的許可：
+ `ec2-instance-connect:SendSSHPublicKey` 動作 – 准許將公有金鑰推送至執行個體。
+ `ec2:osuser` 條件 – 指定可將公有金鑰推送至執行個體的 OS 使用者名稱。使用針對啟動執行個體的 AMI 的預設使用者名稱。AL2023 和 Amazon Linux 2 的預設使用者名稱為 `ec2-user`，而 Ubuntu 的名稱為 `ubuntu`。
+ `ec2:DescribeInstances` 動作 – 使用 EC2 主控台時必需，因為包裝函數會呼叫此動作。使用者可能已有從另一個政策呼叫此動作的許可。
+ `ec2:DescribeVpcs` 動作 – 連線至 IPv6 地址時為必要。

考慮限制對特定 EC2 執行個體的存取。否則，具有 `ec2-instance-connect:SendSSHPublicKey` 動作許可的所有 IAM 主體都可以連線到所有 EC2 執行個體。您可以指定資源 ARN 或將資源標籤做為[條件索引鍵](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2instanceconnect.html#amazonec2instanceconnect-policy-keys)使用，來限制存取。

如需詳細資訊，請參閱[適用於 Amazon EC2 Instance Connect 的動作、資源和條件金鑰](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2instanceconnect.html)。

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

## 允許使用者連線至特定執行個體
<a name="eic-permissions-allow-users-to-connect-to-specific-instances"></a>

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

在下列 IAM 政策範例中，指定了下列動作和條件：
+ 此 `ec2-instance-connect:SendSSHPublicKey` 動作准許使用者連線至兩個執行個體，由資源 ARN 指定。若要准許使用者連線至*所有* EC2 執行個體，請以 `*` 萬用字元取代資源 ARN。
+ 只有在連線時指定 *ami-username*，`ec2:osuser` 條件才會准許連線至執行個體。
+ 指定 `ec2:DescribeInstances` 動作，准許使用主控台的使用者連線至執行個體。如果使用者僅使用 SSH 用戶端連線至執行個體，則可以省略 `ec2:DescribeInstances`。注意，`ec2:Describe*` API 動作不支援資源層級許可。因此，在 `Resource` 元素中必須包含 `*` 萬用字元。
+ 指定 `ec2:DescribeVpcs` 動作，准許使用主控台透過 IPv6 地址連線至執行個體。如果您的使用者只會使用公有 IPv4 地址，可以省略 `ec2:DescribeVpcs`。注意，`ec2:Describe*` API 動作不支援資源層級許可。因此，在 `Resource` 元素中必須包含 `*` 萬用字元。

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

****  

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

------

## 允許使用者連線至具有特定標籤的執行個體
<a name="eic-permissions-allow-users-to-connect-to-instances-with-specific-tags"></a>

屬性型存取控制 (ABAC) 是一種授權策略，可根據可連接到使用者 AWS 和資源的標籤定義許可。您可使用資源標籤來控制對執行個體的存取。如需使用標籤控制對 AWS 資源的存取的詳細資訊，請參閱《*IAM 使用者指南*》中的[控制對 AWS 資源的存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-resources)。

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

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

指定 `ec2:DescribeVpcs` 動作，准許使用主控台透過 IPv6 地址連線至執行個體。如果您的使用者只會使用公有 IPv4 地址，可以省略 `ec2:DescribeVpcs`。注意，`ec2:Describe*` API 動作不支援資源層級許可。因此，在 `Resource` 元素中必須包含 `*` 萬用字元。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": "ec2-instance-connect:SendSSHPublicKey", 
            "Resource": "arn:aws:ec2:us-east-1:111122223333:instance/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/tag-key": "tag-value"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeVpcs"
            ],
            "Resource": "*"
        }
    ]
}
```

------