EC2 Serial Console 액세스 구성하기

EC2 Serial Console 액세스 구성하기

직렬 콘솔에 대한 액세스를 구성하려면 계정 수준에서 직렬 콘솔 액세스를 부여한 다음, IAM 정책을 구성해 사용자에게 액세스를 부여해야 해요. Linux 인스턴스의 경우 문제 해결에 직렬 콘솔을 사용할 수 있도록 모든 인스턴스에 비밀번호 기반 사용자도 구성해야 합니다.

EC2 Serial Console은 가상 직렬 포트 연결을 사용해 인스턴스와 상호 작용합니다. 이 연결은 인스턴스 VPC와 독립적이므로, 부팅 실패나 네트워크 구성 문제가 있어도 인스턴스 운영체제로 작업하고 문제 해결 도구를 실행할 수 있습니다. 이 연결은 VPC 네트워크 밖에 있으므로 EC2 Serial Console은 인스턴스 보안 그룹이나 서브넷 네트워크 ACL을 사용해 인스턴스에 대한 트래픽을 승인하지 않습니다.

출처: 문서

본문

직렬 콘솔에 대한 액세스를 구성하려면 계정 수준에서 직렬 콘솔 액세스를 부여한 다음, IAM 정책을 구성해 사용자에게 액세스를 부여해야 합니다. Linux 인스턴스의 경우 문제 해결에 직렬 콘솔을 사용할 수 있도록 모든 인스턴스에 비밀번호 기반 사용자도 구성해야 합니다.

시작하기 전에 사전 요구사항이 충족되었는지 확인하세요.

EC2 Serial Console 액세스 수준

기본적으로 계정 수준에서 직렬 콘솔에 대한 액세스는 없습니다. 계정 수준에서 직렬 콘솔에 대한 액세스를 명시적으로 부여해야 합니다. 자세한 내용은 Manage account access to the EC2 Serial Console를 참고하세요.

조직 내에서 직렬 콘솔에 대한 액세스를 허용하려면 **서비스 제어 정책(SCP)**을 사용할 수 있습니다. 그런 다음 IAM 정책을 사용해 사용자 수준에서 세부적인 액세스 제어를 할 수 있습니다. SCP와 IAM 정책을 조합해 직렬 콘솔에 대한 다양한 수준의 액세스 제어를 할 수 있습니다.

조직 수준 (Organization level)

서비스 제어 정책(SCP)을 사용해 조직 내 구성원 계정에 대해 직렬 콘솔에 대한 액세스를 허용할 수 있습니다. SCP에 대한 자세한 내용은 AWS Organizations User Guide의 Service control policies를 참고하세요.

인스턴스 수준 (Instance level)

IAM PrincipalTag 및 ResourceTag 구성을 사용하고 인스턴스를 ID로 지정해 직렬 콘솔 액세스 정책을 구성할 수 있습니다. 자세한 내용은 Configure IAM policies for EC2 Serial Console access를 참고하세요.

사용자 수준 (User level)

특정 사용자가 특정 인스턴스의 직렬 콘솔 서비스에 SSH 공용 키를 푸시할 수 있도록 허용하거나 거부하는 IAM 정책을 구성해 사용자 수준에서 액세스를 구성할 수 있습니다. 자세한 내용은 Configure IAM policies for EC2 Serial Console access를 참고하세요.

OS 수준 (OS level)

  • Linux – 게스트 OS 수준에서 사용자 비밀번호를 설정할 수 있습니다. 이렇게 하면 일부 사용 사례에서 직렬 콘솔에 대한 액세스가 제공됩니다. 그러나 로그를 모니터링하려면 비밀번호 기반 사용자가 필요하지 않습니다. 자세한 내용은 Set an OS user password on a Linux instance를 참고하세요.
  • Windows – 직렬 콘솔 권한을 부여하는 것은 인스턴스에서 관리자 수준 권한을 부여하는 것과 같습니다. 추가 인증은 Windows에서 처리되며 자세한 내용은 Microsoft 문서를 참고해야 합니다. 자세한 내용은 Microsoft의 Emergency Management Services Tools and Settings 문서를 참고하세요.

계정 수준에서 EC2 Serial Console 액세스 관리하기

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

이 설정은 계정 수준에서, 계정에 직접 또는 선언적 정책을 사용해 구성됩니다. 직렬 콘솔에 대한 액세스를 부여하려는 각 AWS 리전에서 구성해야 합니다. 선언적 정책을 사용하면 여러 리전과 여러 계정에 동시에 설정을 적용할 수 있습니다. 선언적 정책을 사용 중이면 계정 내에서 직접 설정을 수정할 수 없습니다. 이 주제는 계정 내에서 직접 설정을 구성하는 방법을 설명합니다. 선언적 정책 사용에 대한 자세한 내용은 AWS Organizations User Guide의 Declarative policies를 참고하세요.

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

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

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

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

자세한 내용은 IAM User Guide의 Creating IAM policies를 참고하세요.

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

콘솔 (Console)

직렬 콘솔에 대한 계정 액세스를 보려면

  1. Amazon EC2 콘솔(https://console.aws.amazon.com/ec2/)을 엽니다.
  2. 탐색 창에서 Dashboard를 선택합니다.
  3. Account attributes 카드의 Settings 아래에서 EC2 Serial Console을 선택합니다.
  4. EC2 Serial Console 탭에서 EC2 Serial Console 액세스 값은 Allowed 또는 Prevented입니다.

AWS CLI

직렬 콘솔에 대한 계정 액세스를 보려면

get-serial-console-access-status 명령을 사용해요.

aws ec2 get-serial-console-access-status

다음은 예시 출력입니다. true 값은 계정이 직렬 콘솔에 대한 액세스를 허용받았음을 나타냅니다.

{
    "SerialConsoleAccessEnabled": true,
    "ManagedBy": "account"
}

ManagedBy 필드는 설정을 구성한 엔터티를 나타냅니다. 가능한 값은 account(직접 구성) 또는 declarative-policy입니다. 자세한 내용은 AWS Organizations User Guide의 Declarative policies를 참고하세요.

PowerShell

직렬 콘솔에 대한 계정 액세스를 보려면

Get-EC2SerialConsoleAccessStatus cmdlet을 사용해요.

Get-EC2SerialConsoleAccessStatus -Select *

다음은 예시 출력입니다. True 값은 계정이 직렬 콘솔에 대한 액세스를 허용받았음을 나타냅니다.

ManagedBy SerialConsoleAccessEnabled
--------- --------------------------
account   True

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

콘솔 (Console)

직렬 콘솔에 대한 계정 액세스를 부여하려면

  1. Amazon EC2 콘솔(https://console.aws.amazon.com/ec2/)을 엽니다.
  2. 탐색 창에서 Dashboard를 선택합니다.
  3. Account attributes 카드의 Settings 아래에서 EC2 Serial Console을 선택합니다.
  4. Manage를 선택합니다.
  5. 계정의 모든 인스턴스의 EC2 직렬 콘솔에 대한 액세스를 허용하려면 Allow 확인란을 선택합니다.
  6. Update를 선택합니다.

AWS CLI

직렬 콘솔에 대한 계정 액세스를 부여하려면

enable-serial-console-access 명령을 사용해요.

aws ec2 enable-serial-console-access

다음은 예시 출력입니다.

{
    "SerialConsoleAccessEnabled": true
}

PowerShell

직렬 콘솔에 대한 계정 액세스를 부여하려면

Enable-EC2SerialConsoleAccess cmdlet을 사용해요.

Enable-EC2SerialConsoleAccess

다음은 예시 출력입니다.

True

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

콘솔 (Console)

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

  1. Amazon EC2 콘솔(https://console.aws.amazon.com/ec2/)을 엽니다.
  2. 탐색 창에서 Dashboard를 선택합니다.
  3. Account attributes 카드의 Settings 아래에서 EC2 Serial Console을 선택합니다.
  4. Manage를 선택합니다.
  5. 계정의 모든 인스턴스의 EC2 직렬 콘솔에 대한 액세스를 방지하려면 Allow 확인란을 선택 해제합니다.
  6. Update를 선택합니다.

AWS CLI

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

disable-serial-console-access 명령을 사용해요.

aws ec2 disable-serial-console-access

다음은 예시 출력입니다.

{
    "SerialConsoleAccessEnabled": false
}

PowerShell

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

Disable-EC2SerialConsoleAccess cmdlet을 사용해요.

Disable-EC2SerialConsoleAccess

다음은 예시 출력입니다.

False

EC2 Serial Console 액세스용 IAM 정책 구성하기

기본적으로 사용자는 직렬 콘솔에 대한 액세스 권한이 없습니다. 조직은 IAM 정책을 구성해 사용자에게 필요한 액세스를 부여해야 합니다. 자세한 내용은 IAM User Guide의 Creating IAM policies를 참고하세요.

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

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

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

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

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

{
    "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:us-east-1:111122223333: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:us-east-1:111122223333:instance/i-0598c7d356eba48d7"
        }
    ]
}

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

리소스 태그를 사용해 인스턴스의 직렬 콘솔에 대한 액세스를 제어할 수 있어요.

속성 기반 액세스 제어는 사용자와 AWS 리소스에 연결할 수 있는 태그를 기반으로 권한을 정의하는 인증 전략입니다. 예를 들어 다음 정책은 인스턴스의 리소스 태그와 보안 주체의 태그가 SerialConsole 태그 키에 대해 같은 값을 가질 때만 사용자가 인스턴스에 대한 직렬 콘솔 연결을 시작할 수 있도록 허용합니다.

태그를 사용해 AWS 리소스에 대한 액세스를 제어하는 방법에 대한 자세한 내용은 IAM User Guide의 Controlling access to AWS resources를 참고하세요.

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

{
    "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:us-east-1:111122223333:instance/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/SerialConsole": "${aws:PrincipalTag/SerialConsole}"
                }
            }
        }
    ]
}

Linux 인스턴스에서 OS 사용자 비밀번호 설정하기

비밀번호 없이 직렬 콘솔에 연결할 수 있습니다. 그러나 Linux 인스턴스 문제 해결에 직렬 콘솔을 사용하려면 인스턴스에 비밀번호 기반 OS 사용자가 있어야 합니다.

root 사용자를 포함해 모든 OS 사용자의 비밀번호를 설정할 수 있습니다. root 사용자는 모든 파일을 수정할 수 있지만, 각 OS 사용자는 제한된 권한을 가질 수 있습니다.

직렬 콘솔을 사용할 모든 인스턴스에 대해 사용자 비밀번호를 설정해야 합니다. 이는 각 인스턴스에 대해 일회성 요구사항입니다.

Note
기본적으로 AWS가 제공하는 AMI에는 비밀번호 기반 사용자가 구성되어 있지 않아요. 이미 root 사용자 비밀번호가 구성된 AMI로 인스턴스를 시작했다면 이 지침을 건너뛸 수 있습니다.

Linux 인스턴스에서 OS 사용자 비밀번호를 설정하려면

  1. 인스턴스에 연결합니다. EC2 Serial Console 연결 방법을 제외한 모든 방법을 사용해 연결할 수 있습니다.
  2. 사용자의 비밀번호를 설정하려면 passwd 명령을 사용합니다. 다음 예시에서 사용자는 root입니다. 다음은 예시 출력입니다.
[ec2-user ~]$ sudo passwd root
Changing password for user root.
New password:
  1. New password 프롬프트에서 새 비밀번호를 입력합니다.
  2. 프롬프트에서 비밀번호를 다시 입력합니다.

더 알아보기 (Learn more)