EC2 Linux 인스턴스 식별 - Amazon Elastic Compute Cloud

EC2 Linux 인스턴스 식별

애플리케이션이 EC2 인스턴스에서 실행 중인지 여부를 판단해야 할 수도 있습니다.

Windows 인스턴스 식별에 대한 자세한 내용은 Windows 인스턴스용 Amazon EC2 사용 설명서에서 EC2 Windows 인스턴스 식별을 참조하세요.

인스턴스 자격 증명 문서 검사

EC2 인스턴스를 식별하는 명확하고 암호화된 방법은 서명이 포함된 인스턴스 자격 증명 문서를 확인하세요. 이러한 문서는 라우팅할 수 없는 로컬 주소 http://169.254.169.254/latest/dynamic/instance-identity/에서 모든 EC2 인스턴스에 대해 제공됩니다. 자세한 내용은 인스턴스 자격 증명 문서 섹션을 참조하세요.

시스템 UUID 검사

시스템 UUID를 가져와 UUID의 시작 8진수에 문자 "ec2" 또는 "EC2"가 있는지 찾을 수 있습니다. 시스템이 EC2 인스턴스인지 확인하는 이 방법은 빠르지만 EC2 인스턴스가 아닌 시스템에도 이러한 문자로 시작하는 UUID가 있을 가능성이 약간이라도 있기 때문에 부정확할 수 있습니다. 또한 에서 Amazon Linux 2를 사용하지 않는 경우 배포의 SMBIOS 구현은 리틀 엔디안 형식으로 UUID를 나타낼 수 있으므로 "EC2" 문자는 EC2 시작 부분에 나타나지 않습니다.

예 : DMI에서 UUID 가져오기(HVM AMI만 해당)

데스크톱 관리 인터페이스(DMI)를 사용하여 UUID를 가져오려면 다음 명령을 사용합니다.

[ec2-user ~]$ sudo dmidecode --string system-uuid

다음 출력 예에서 UUID가 "EC2"로 시작합니다. 이는 시스템이 아마도 EC2 인스턴스라는 것을 나타냅니다.

EC2E1916-9099-7CAF-FD21-012345ABCDEF

다음 예시 출력에서 UUID는 리틀 엔디안 형식으로 표시됩니다.

45E12AEC-DCD1-B213-94ED-012345ABCDEF

또는 Nitro 시스템에 구축된 인스턴스의 경우 다음 명령을 사용할 수 있습니다.

[ec2-user ~]$ cat /sys/devices/virtual/dmi/id/board_asset_tag

출력이 인스턴스 ID인 경우 다음 예시 출력과 같이 시스템은 EC2 인스턴스입니다.

i-0af01c0123456789a
예 : 하이퍼바이저에서 UUID 가져오기(PV AMI만 해당)

다음 명령을 사용하여 하이퍼바이저에서 UUID를 가져옵니다.

[ec2-user ~]$ cat /sys/hypervisor/uuid

다음 출력 예에서 UUID가 "ec2"로 시작합니다. 이는 시스템이 아마도 EC2 인스턴스라는 것을 나타냅니다.

ec2e1916-9099-7caf-fd21-012345abcdef

시스템 가상 머신 생성 식별자 검사

가상 머신 생성 식별자는 암호화 임의의 정수 식별자로 해석되는 128비트의 고유 버퍼로 구성됩니다. 가상 머신 생성 식별자를 검색하여 Amazon Elastic Compute Cloud 인스턴스를 식별할 수 있습니다. 생성 식별자는 ACPI 테이블 항목을 통해 인스턴스의 게스트 운영 체제 내에 노출됩니다. 머신을 복제 또는 복사하거나 VM Import/Export 등을 통해 AWS로 가져오는 경우 값이 변경됩니다.

예 : Linux에서 가상 머신 생성 식별자 검색

다음과 같은 명령을 사용하여 Linux를 실행하는 인스턴스에서 가상 머신 생성 식별자를 검색할 수 있습니다.

Amazon Linux 2
  1. 필요하면 다음과 같은 명령을 사용하여 기존 소프트웨어 패키지를 업데이트합니다.

    sudo yum update
  2. 필요한 경우 다음과 같은 명령을 사용하여 busybox 패키지를 소싱합니다.

    sudo curl https://www.rpmfind.net/linux/epel/next/8/Everything/x86_64/Packages/b/busybox-1.35.0-2.el8.next.x86_64.rpm --output busybox.rpm
  3. 필요한 경우 다음과 같은 명령을 사용하여 필수 구성 요소 패키지를 설치합니다.

    sudo yum install busybox.rpm iasl -y
  4. 다음과 같은 iasl 명령을 실행하여 ACPI 테이블에서 출력을 생산합니다.

    sudo iasl -p ./SSDT2 -d /sys/firmware/acpi/tables/SSDT2
  5. 다음과 같은 명령을 실행하여 iasl 명령의 출력을 검토합니다.

    cat SSDT2.dsl

    출력에서는 가상 머신 생성 식별자를 검색하는 데 필요한 주소 공간이 산출되어야 합니다.

    Intel ACPI Component Architecture
    ASL+ Optimizing Compiler/Disassembler version 20190509
    Copyright (c) 2000 - 2019 Intel Corporation
    
    File appears to be binary: found 32 non-ASCII characters, disassembling
    Binary file appears to be a valid ACPI table, disassembling
    Input file /sys/firmware/acpi/tables/SSDT2, Length 0x7B (123) bytes
    ACPI: SSDT 0x0000000000000000 00007B (v01 AMAZON AMZNSSDT 00000001 AMZN 00000001)
    Pass 1 parse of [SSDT]
    Pass 2 parse of [SSDT]
    Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions)
    
    Parsing completed
    Disassembly completed
    ASL Output:    ./SSDT2.dsl - 1065 bytes
    $
    /*
     * Intel ACPI Component Architecture
     * AML/ASL+ Disassembler version 20190509 (64-bit version)
     * Copyright (c) 2000 - 2019 Intel Corporation
     *
     * Disassembling to symbolic ASL+ operators
     *
     * Disassembly of /sys/firmware/acpi/tables/SSDT2, Tue Mar 29 16:15:14 2022
     *
     * Original Table Header:
     *     Signature        "SSDT"
     *     Length           0x0000007B (123)
     *     Revision         0x01
     *     Checksum         0xB8
     *     OEM ID           "AMAZON"
     *     OEM Table ID     "AMZNSSDT"
     *     OEM Revision     0x00000001 (1)
     *     Compiler ID      "AMZN"
     *     Compiler Version 0x00000001 (1)
     */
    DefinitionBlock ("", "SSDT", 1, "AMAZON", "AMZNSSDT", 0x00000001)
    {
        Scope (\_SB)
        {
            Device (VMGN)
            {
                Name (_CID, "VM_Gen_Counter")  // _CID: Compatible ID
                Name (_DDN, "VM_Gen_Counter")  // _DDN: DOS Device Name
                Name (_HID, "AMZN0000")  // _HID: Hardware ID
                Name (ADDR, Package (0x02)
                {
                    0xFED01000,
                    Zero
                })
            }
        }
    }
  6. (선택 사항) 다음과 같은 명령으로 나머지 단계에 대한 터미널 권한을 승격합니다.

    sudo -s
  7. 다음과 같은 명령을 사용하여 이전에 수집한 주소 공간을 저장합니다.

    VMGN_ADDR=0xFED01000
  8. 다음과 같은 명령을 사용하여 주소 공간을 반복하고 가상 머신 생성 식별자를 구축합니다.

    for offset in 0x0 0x4 0x8 0xc; do busybox devmem $(($VMGN_ADDR + $offset)) | sed 's/0x//' | sed -z '$ s/\n$//' >> vmgenid; done
  9. 다음과 같은 명령으로 출력 파일에서 가상 머신 생성 식별자를 검색합니다.

    cat vmgenid ; echo

    다음과 유사하게 출력되어야 합니다.

    EC2F335D979132C4165896753E72BD1C
Ubuntu
  1. 필요하면 다음과 같은 명령을 사용하여 기존 소프트웨어 패키지를 업데이트합니다.

    sudo apt update
  2. 필요한 경우 다음과 같은 명령을 사용하여 필수 구성 요소 패키지를 설치합니다.

    sudo apt install busybox iasl -y
  3. 다음과 같은 iasl 명령을 실행하여 ACPI 테이블에서 출력을 생산합니다.

    sudo iasl -p ./SSDT2 -d /sys/firmware/acpi/tables/SSDT2
  4. 다음과 같은 명령을 실행하여 iasl 명령의 출력을 검토합니다.

    cat SSDT2.dsl

    출력에서는 가상 머신 생성 식별자를 검색하는 데 필요한 주소 공간이 산출되어야 합니다.

    Intel ACPI Component Architecture
    ASL+ Optimizing Compiler/Disassembler version 20190509
    Copyright (c) 2000 - 2019 Intel Corporation
    
    File appears to be binary: found 32 non-ASCII characters, disassembling
    Binary file appears to be a valid ACPI table, disassembling
    Input file /sys/firmware/acpi/tables/SSDT2, Length 0x7B (123) bytes
    ACPI: SSDT 0x0000000000000000 00007B (v01 AMAZON AMZNSSDT 00000001 AMZN 00000001)
    Pass 1 parse of [SSDT]
    Pass 2 parse of [SSDT]
    Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions)
    
    Parsing completed
    Disassembly completed
    ASL Output:    ./SSDT2.dsl - 1065 bytes
    $
    /*
     * Intel ACPI Component Architecture
     * AML/ASL+ Disassembler version 20190509 (64-bit version)
     * Copyright (c) 2000 - 2019 Intel Corporation
     *
     * Disassembling to symbolic ASL+ operators
     *
     * Disassembly of /sys/firmware/acpi/tables/SSDT2, Tue Mar 29 16:15:14 2022
     *
     * Original Table Header:
     *     Signature        "SSDT"
     *     Length           0x0000007B (123)
     *     Revision         0x01
     *     Checksum         0xB8
     *     OEM ID           "AMAZON"
     *     OEM Table ID     "AMZNSSDT"
     *     OEM Revision     0x00000001 (1)
     *     Compiler ID      "AMZN"
     *     Compiler Version 0x00000001 (1)
     */
    DefinitionBlock ("", "SSDT", 1, "AMAZON", "AMZNSSDT", 0x00000001)
    {
        Scope (\_SB)
        {
            Device (VMGN)
            {
                Name (_CID, "VM_Gen_Counter")  // _CID: Compatible ID
                Name (_DDN, "VM_Gen_Counter")  // _DDN: DOS Device Name
                Name (_HID, "AMZN0000")  // _HID: Hardware ID
                Name (ADDR, Package (0x02)
                {
                    0xFED01000,
                    Zero
                })
            }
        }
    }
  5. (선택 사항) 다음과 같은 명령으로 나머지 단계에 대한 터미널 권한을 승격합니다.

    sudo -s
  6. 다음과 같은 명령을 사용하여 이전에 수집한 주소 공간을 저장합니다.

    VMGN_ADDR=0xFED01000
  7. 다음과 같은 명령을 사용하여 주소 공간을 반복하고 가상 머신 생성 식별자를 구축합니다.

    for offset in 0x0 0x4 0x8 0xc; do busybox devmem $(($VMGN_ADDR + $offset)) | sed 's/0x//' | sed -z '$ s/\n$//' >> vmgenid; done
  8. 다음과 같은 명령으로 출력 파일에서 가상 머신 생성 식별자를 검색합니다.

    cat vmgenid ; echo

    다음과 유사하게 출력되어야 합니다.

    EC2F335D979132C4165896753E72BD1C