EC2 Instance Connect에 대한 IAM 권한 부여
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을 지정하거나 리소스 태그를 조건 키로 사용하여 액세스를 제한할 수 있습니다.
자세한 내용은 Amazon EC2 Instance Connect에 사용되는 작업, 리소스 및 조건 키를 참조하세요.
IAM 정책 생성에 대한 자세한 내용은 IAM 사용 설명서의 IAM 정책 생성을 참조하세요.
사용자가 특정 인스턴스에 연결하도록 허용
다음 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
요소에*
와일드카드가 필요합니다.
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "ec2-instance-connect:SendSSHPublicKey", "Resource": [ "arn:aws:ec2:
region
:account-id
:instance/i-1234567890abcdef0
", "arn:aws:ec2:region
:account-id
:instance/i-0598c7d356eba48d7
" ], "Condition": { "StringEquals": { "ec2:osuser": "ami-username
" } } }, { "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:DescribeVpcs" ], "Resource": "*" } ] }
사용자가 특정 태그가 있는 인스턴스에 연결하도록 허용
ABAC(속성 기반 액세스 제어)는 사용자 및 AWS 리소스에 연결할 수 있는 태그를 기반으로 권한을 정의하는 권한 부여 전략입니다. 리소스 태그를 사용하여 인스턴스에 대한 액세스를 제어할 수 있습니다. 태그를 사용하여 AWS 리소스에 대한 액세스를 제어하는 방법에 대한 자세한 내용은 IAM 사용 설명서에서 AWS 리소스에 대한 액세스 제어를 참조하세요.
다음 예제 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
요소에 *
와일드카드가 필요합니다.
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "ec2-instance-connect:SendSSHPublicKey", "Resource": "arn:aws:ec2:
region
:account-id
:instance/*", "Condition": { "StringEquals": { "aws:ResourceTag/tag-key
": "tag-value
" } } }, { "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:DescribeVpcs" ], "Resource": "*" } ] }