

# 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을 `*` 와일드카드로 바꿉니다.
+ `ec2:osuser` 조건은 연결할 때 *ami-username*이 지정된 경우에만 인스턴스에 연결할 수 있는 권한을 부여합니다.
+ `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` 작업은 인스턴스에 키=`tag-key` 및 값=`tag-value`인 리소스 태그가 있는 조건에서 임의 인스턴스(리소스 ARN에 `*` 와일드카드로 표시됨)에 연결할 수 있는 권한을 사용자에게 부여합니다.

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

------