EC2 직렬 콘솔에 대한 액세스 구성 - Amazon Elastic Compute Cloud

EC2 직렬 콘솔에 대한 액세스 구성

직렬 콘솔에 대한 액세스를 구성하려면 계정 수준에서 직렬 콘솔 액세스 권한을 부여한 다음 사용자에게 액세스 권한을 부여하는 IAM 정책을 구성해야 합니다. 또한 사용자가 직렬 콘솔을 사용하여 문제를 해결할 수 있도록 모든 인스턴스에서 암호 기반 사용자를 구성해야 합니다.

시작하기 전에 필수 조건을 확인하세요.

EC2 직렬 콘솔에 대한 액세스 수준

기본적으로 계정 수준에서는 Serial 콘솔에 액세스할 수 없습니다. 계정 수준에서 Serial 콘솔에 대한 액세스 권한을 명시적으로 부여해야 합니다. 자세한 내용은 EC2 직렬 콘솔에 대한 계정 액세스 관리 섹션을 참조하세요.

서비스 제어 정책(SCP)을 사용하여 조직 내의 직렬 콘솔에 대한 액세스를 허용할 수 있습니다. 그런 다음 IAM 정책을 사용하여 액세스를 제어함으로써 사용자 수준에서 세분화된 액세스를 제어할 수 있습니다. SCP와 IAM 정책을 조합하여 사용하면 직렬 콘솔에 대한 액세스를 다양한 수준에서 제어할 수 있습니다.

조직 수준

서비스 제어 정책(SCP)을 사용하여 조직 내 멤버 계정에 대한 직렬 콘솔 액세스를 허용할 수 있습니다. SCP에 대한 자세한 내용은 AWS Organizations 사용 설명서에서 서비스 제어 정책을 참조하세요.

인스턴스 수준

IAM PrincipalTag 및 ResourceTag 구성을 사용하고 인스턴스 ID로 인스턴스를 지정하여 직렬 콘솔 액세스 정책을 구성할 수 있습니다. 자세한 내용은 EC2 직렬 콘솔 액세스에 대한 IAM 정책 구성 섹션을 참조하세요.

사용자 수준

지정된 사용자가 SSH 퍼블릭 키를 특정 인스턴스의 직렬 콘솔 서비스로 푸시할 수 있는 권한을 허용하거나 거부하는 IAM 정책을 구성하여 사용자 수준에서 액세스를 구성할 수 있습니다. 자세한 내용은 EC2 직렬 콘솔 액세스에 대한 IAM 정책 구성 섹션을 참조하세요.

OS 수준

게스트 OS 수준에서 사용자 암호를 설정할 수 있습니다. 이렇게 하면 일부 사용 사례에서 직렬 콘솔에 대한 액세스를 제공할 수 있습니다. 그러나 로그를 모니터링하는 경우에는 암호 기반 사용자가 필요하지 않습니다. 자세한 내용은 OS 사용자 암호 설정 섹션을 참조하세요.

EC2 직렬 콘솔에 대한 계정 액세스 관리

기본적으로 계정 수준에서는 Serial 콘솔에 액세스할 수 없습니다. 계정 수준에서 Serial 콘솔에 대한 액세스 권한을 명시적으로 부여해야 합니다.

사용자에게 계정 액세스 관리 권한 부여

사용자가 EC2 직렬 콘솔에 대한 계정 액세스를 관리할 수 있도록 허용하려면 필요한 IAM 권한을 부여해야 합니다.

다음 정책은 계정 상태를 보고 EC2 직렬 콘솔에 대한 계정 액세스를 허용 및 차단할 수 있는 권한을 부여합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:GetSerialConsoleAccessStatus", "ec2:EnableSerialConsoleAccess", "ec2:DisableSerialConsoleAccess" ], "Resource": "*" } ] }

자세한 내용은 IAM 사용 설명서에서 IAM 정책 생성을 참조하세요.

직렬 콘솔에 대한 계정 액세스 상태 보기

직렬 콘솔에 대한 계정 액세스 상태를 보려면(콘솔)
  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 [EC2 대시보드(EC2 Dashboard)]를 선택합니다.

  3. [계정 속성(Account attributes)]에서 [EC2 직렬 콘솔(EC2 Serial Console)]을 선택합니다.

    [EC2 직렬 콘솔 액세스(EC2 Serial Console access)] 필드는 계정 액세스 상태가 [허용(Allowed)]인지 [차단(Prevented)]인지를 나타냅니다.

    다음 스크린샷은 EC2 직렬 콘솔 사용이 차단된 계정을 보여줍니다.

    
                EC2 직렬 콘솔 액세스가 방지됩니다.
직렬 콘솔에 대한 계정 액세스 상태를 보려면(AWS CLI)

직렬 콘솔에 대한 계정 액세스 상태를 보려면 get-serial-console-access-status 명령을 사용합니다.

aws ec2 get-serial-console-access-status --region us-east-1

다음 출력에서 true는 직렬 콘솔에 대한 계정 액세스가 허용되었음을 나타냅니다.

{ "SerialConsoleAccessEnabled": true }

직렬 콘솔에 대한 계정 액세스 권한 부여

직렬 콘솔에 대한 계정 액세스를 부여하려면(콘솔)
  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 [EC2 대시보드(EC2 Dashboard)]를 선택합니다.

  3. 계정 속성(Account attributes)에서 EC2 직렬 콘솔(EC2 Serial Console)을 선택합니다.

  4. 관리를 선택합니다.

  5. 계정에 있는 모든 인스턴스의 EC2 직렬 콘솔에 대한 액세스를 허용하려면 [허용(Allow)] 확인란을 선택합니다.

  6. 업데이트를 선택합니다.

직렬 콘솔에 대한 계정 액세스 권한을 부여하려면(AWS CLI)

직렬 콘솔에 대한 계정 액세스를 허용하려면 enable-serial-console-access 명령을 사용합니다.

aws ec2 enable-serial-console-access --region us-east-1

다음 출력에서 true는 직렬 콘솔에 대한 계정 액세스가 허용되었음을 나타냅니다.

{ "SerialConsoleAccessEnabled": true }

직렬 콘솔에 대한 계정 액세스 거부

직렬 콘솔에 대한 계정 액세스를 거부하려면(콘솔)
  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 [EC2 대시보드(EC2 Dashboard)]를 선택합니다.

  3. 계정 속성(Account attributes)에서 EC2 직렬 콘솔(EC2 Serial Console)을 선택합니다.

  4. 관리를 선택합니다.

  5. 계정에 있는 모든 인스턴스의 EC2 직렬 콘솔에 대한 액세스를 차단하려면 [허용(Allow)] 확인란을 선택 취소합니다.

  6. 업데이트를 선택합니다.

직렬 콘솔에 대한 계정 액세스를 거부하려면(AWS CLI)

직렬 콘솔에 대한 계정 액세스를 차단하려면 disable-serial-console-access 명령을 사용합니다.

aws ec2 disable-serial-console-access --region us-east-1

다음 출력에서 false는 직렬 콘솔에 대한 계정 액세스가 거부되었음을 나타냅니다.

{ "SerialConsoleAccessEnabled": false }

EC2 직렬 콘솔 액세스에 대한 IAM 정책 구성

기본적으로 사용자는 직렬 콘솔에 액세스할 수 없습니다. 조직은 사용자에게 필요한 액세스 권한을 부여하는 IAM 정책을 구성해야 합니다. 자세한 내용은 IAM 사용 설명서에서 IAM 정책 생성을 참조하세요.

직렬 콘솔 액세스의 경우 ec2-instance-connect:SendSerialConsoleSSHPublicKey 작업이 포함된 JSON 정책 문서를 생성합니다. 이 작업은 사용자에게 직렬 콘솔 서비스에 퍼블릭 키를 푸시하여 직렬 콘솔 세션을 시작할 수 있는 권한을 부여합니다. 특정 EC2 인스턴스로 액세스를 제한하는 것이 좋습니다. 그렇지 않으면 이 권한이 있는 모든 사용자가 모든 EC2 인스턴스의 직렬 콘솔에 연결할 수 있습니다.

직렬 콘솔에 대한 액세스를 명시적으로 허용

기본적으로는 누구도 직렬 콘솔에 액세스할 수 없습니다. 직렬 콘솔에 대한 액세스 권한을 부여하려면 액세스를 명시적으로 허용하는 정책을 구성해야 합니다. 특정 인스턴스로 액세스를 제한하는 정책을 구성하는 것이 좋습니다.

다음 정책은 인스턴스 ID로 식별되는 특정 인스턴스의 직렬 콘솔에 대한 액세스를 허용합니다.

DescribeInstances, DescribeInstanceTypesGetSerialConsoleAccessStatus 작업은 리소스 수준 권한을 지원하지 않으므로 이러한 작업에 대해 *(별표)로 표시된 모든 리소스를 지정해야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowDescribeInstances", "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:DescribeInstanceTypes", "ec2:GetSerialConsoleAccessStatus" ], "Resource": "*" }, { "Sid": "AllowinstanceBasedSerialConsoleAccess", "Effect": "Allow", "Action": [ "ec2-instance-connect:SendSerialConsoleSSHPublicKey" ], "Resource": "arn:aws:ec2:region:account-id:instance/i-0598c7d356eba48d7" } ] }

직렬 콘솔에 대한 액세스를 명시적으로 거부

다음 IAM 정책은 *(별표)로 표시된 모든 인스턴스의 직렬 콘솔에 대한 액세스를 허용하고 인스턴스 ID로 식별되는 특정 인스턴스의 직렬 콘솔에 대한 액세스를 명시적으로 거부합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowSerialConsoleAccess", "Effect": "Allow", "Action": [ "ec2-instance-connect:SendSerialConsoleSSHPublicKey", "ec2:DescribeInstances", "ec2:DescribeInstanceTypes", "ec2:GetSerialConsoleAccessStatus" ], "Resource": "*" }, { "Sid": "DenySerialConsoleAccess", "Effect": "Deny", "Action": [ "ec2-instance-connect:SendSerialConsoleSSHPublicKey" ], "Resource": "arn:aws:ec2:region:account-id:instance/i-0598c7d356eba48d7" } ] }

리소스 태그를 사용하여 직렬 콘솔에 대한 액세스 제어

리소스 태그를 사용하여 인스턴스의 직렬 콘솔에 대한 액세스를 제어할 수 있습니다.

속성 기반 액세스 제어는 사용자 및 AWS 리소스에 연결할 수 있는 태그를 기반으로 권한을 정의하는 권한 부여 전략입니다. 예를 들어, 다음 정책은 인스턴스의 리소스 태그와 보안 주체의 태그에 동일한 SerialConsole 태그 키 값이 포함되는 경우에만 사용자가 인스턴스에 대한 직렬 콘솔 연결을 시작하는 것을 허용합니다.

태그를 사용하여 AWS 리소스에 대한 액세스를 제어하는 방법에 대한 자세한 내용은 IAM 사용 설명서에서 AWS 리소스에 대한 액세스 제어를 참조하세요.

DescribeInstances, DescribeInstanceTypesGetSerialConsoleAccessStatus 작업은 리소스 수준 권한을 지원하지 않으므로 이러한 작업에 대해 *(별표)로 표시된 모든 리소스를 지정해야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowDescribeInstances", "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:DescribeInstanceTypes", "ec2:GetSerialConsoleAccessStatus" ], "Resource": "*" }, { "Sid": "AllowTagBasedSerialConsoleAccess", "Effect": "Allow", "Action": [ "ec2-instance-connect:SendSerialConsoleSSHPublicKey" ], "Resource": "arn:aws:ec2:region:account-id:instance/*", "Condition": { "StringEquals": { "aws:ResourceTag/SerialConsole": "${aws:PrincipalTag/SerialConsole}" } } } ] }

OS 사용자 암호 설정

직렬 콘솔에는 암호 없이 연결할 수 있습니다. 그러나 인스턴스 문제 해결을 위해 직렬 콘솔을 사용하는 경우에는 인스턴스에 암호 기반 OS 사용자가 있어야 합니다.

루트 사용자를 포함하여 모든 OS 사용자의 암호를 설정할 수 있습니다. 루트 사용자는 모든 파일을 수정할 수 있지만 각 OS 사용자는 제한된 권한을 가질 수 있습니다.

직렬 콘솔을 사용할 모든 인스턴스에 대해 사용자 암호를 설정해야 합니다. 각 인스턴스에 대해 한 번만 수행하면 됩니다.

참고

다음 지침은 AWS가 제공한 AMI를 사용하여 인스턴스를 시작한 경우에만 적용됩니다. 기본적으로 AWS가 제공한 AMI는 암호 기반 사용자로 구성되지 않기 때문입니다. 이미 루트 사용자 암호가 구성되어 있는 AMI를 사용하여 인스턴스를 시작한 경우 이 지침을 건너뛸 수 있습니다.

OS 사용자 암호를 설정하려면
  1. 인스턴스에 연결합니다. EC2 직렬 콘솔 연결 방법을 제외한 모든 방법으로 인스턴스에 연결할 수 있습니다.

  2. 사용자의 암호를 설정하려면 passwd 명령을 사용합니다. 다음 예제에서 사용자는 root입니다.

    [ec2-user ~]$ sudo passwd root

    다음은 예제 출력입니다.

    Changing password for user root. New password:
  3. New password 프롬프트에서 새 암호를 입력합니다.

  4. 프롬프트에서 암호를 다시 입력합니다.