AWS KMS에 대한 인증 및 액세스 제어 - AWS Key Management Service

AWS KMS에 대한 인증 및 액세스 제어

AWS KMS를 사용하려면 AWS에서 요청을 인증하기 위해 사용할 수 있는 자격 증명이 있어야 합니다. 이러한 자격 증명은 AWS 리소스인 AWS KMS keys별칭에 액세스할 수 있는 권한을 포함해야 합니다. 해당 권한을 명시적으로 제공하고 절대 거부되지 않은 경우를 제외하고 KMS 키에 대한 권한이 있는 AWS 주체는 없습니다. KMS 키를 사용하거나 관리하기 위한 묵시적 권한이나 자동 권한은 없습니다.

AWS KMS 리소스에 대한 액세스를 관리하는 주된 방법은 정책을 이용하는 것입니다. 정책은 어떤 보안 주체가 어떤 리소스에 액세스 할 수 있는지를 설명하는 문서입니다. IAM 자격 증명에 연결된 정책을 자격 증명 기반 정책(또는 IAM 정책)이라 하고 다른 종류의 리소스에 연결된 정책을 리소스 정책이라고 합니다. KMS 키에 대한 AWS KMS 리소스 정책은 키 정책이라고 합니다. 모든 KMS 키에는 키 정책이 있습니다.

AWS KMS 별칭을 제어하려면 IAM 정책을 사용합니다. 보안 주체가 별칭을 생성하도록 허용하려면 IAM 정책의 별칭에 대한 권한과 키 정책의 키에 대한 권한을 제공해야 합니다. 자세한 내용은 별칭에 대한 액세스 제어 섹션을 참조하세요.

KMS 키에 대한 액세스를 제어하는 데 다음 정책 메커니즘을 사용할 수 있습니다.

  • 키 정책 - 모든 KMS 키에는 키 정책이 있습니다. 키 정책은 KMS 키에 대한 액세스를 제어하는 기본적인 방법입니다. 키 정책만 사용하여 액세스를 제어할 수 있습니다. 즉 KMS 키에 대한 전체 액세스 범위가 단일 문서(키 정책)에 정의됩니다. 키 정책 사용에 대한 자세한 내용은 키 정책 섹션을 참조하세요.

  • IAM 정책 – 키 정책과 함께 IAM 정책을 사용하여 KMS 키에 대한 액세스를 제어하는 권한을 부여할 수 있습니다. 이러한 방식으로 액세스를 제어하면 IAM에서 IAM 자격 증명에 대한 모든 권한을 관리할 수 있습니다. IAM 정책을 사용하여 KMS 키에 대한 액세스를 허용하려면 키 정책에서 명시적으로 허용해야 합니다. IAM 정책 사용에 대한 자세한 내용은 IAM 정책 섹션을 참조하세요.

  • 권한 부여 – 키 정책 및 IAM 정책과 함께 권한 부여를 사용하여 KMS 키에 대한 액세스를 허용할 수 있습니다. 이와 같이 액세스를 제어하면 키 정책에서 KMS 키에 대한 액세스를 허용하고 사용자가 다른 사람에게 액세스를 위임하도록 허용할 수 있습니다. 권한 부여 사용에 대한 자세한 내용은 AWS KMS의 권한 부여를 참조하세요.

KMS 키는 해당 키가 생성된 AWS 계정에 속합니다. 그러나 해당 권한이 키 정책, IAM 정책에 명시적으로 제공되거나 부여된 경우를 제외하고 AWS 계정 루트 사용자를 포함하여 KMS 키를 사용하거나 관리할 권한이 있는 ID나 주체는 없습니다. KMS 키를 생성하는 IAM 사용자는 키 소유자로 간주되지 않으며, 사용자가 생성한 KMS 키를 사용하거나 관리할 수 있는 권한이 자동으로 부여되지 않습니다. 다른 보안 주체와 마찬가지로 키 생성자는 키 정책, IAM 정책 또는 권한 부여를 통해 허가를 받아야 합니다. 그러나, kms:CreateKey 권한이 있는 보안 주체는 초기 키 정책을 설정하고 키를 사용하거나 관리할 권한을 자신에게 부여할 수 있습니다.

다음 주제에서는 리소스에 액세스할 수 있는지 대상을 제어하여 리소스를 보호할 수 있도록 AWS Identity and Access Management(IAM) 및 AWS KMS 인증 사용 방법을 자세히 설명합니다.

AWS KMS 액세스 제어의 개념

액세스 제어에 대한 설명에 사용된 개념은 AWS KMS에서 자세히 알아보세요.

인증

다음과 같은 유형의 자격 증명으로 AWS에 액세스할 수 있습니다.

  • AWS 계정 루트 사용자 – AWS에 가입할 때 AWS 계정의 이메일 주소 및 암호를 입력합니다. 이 두 가지가 루트 자격 증명으로, 모든 AWS 리소스에 대한 전체 액세스를 제공합니다.

    중요

    보안상 관리자 사용자, 즉 AWS 계정에 대한 전체 권한이 있는 IAM 사용자를 만들 때에만 루트 자격 증명을 사용하는 것이 좋습니다. 그런 다음 이 관리자 사용자를 사용하여 제한된 권한이 있는 다른 IAM 사용자 및 역할을 만들 수 있습니다. 자세한 정보는 IAM 사용 설명서개별 IAM 사용자 만들기(IAM 모범 사례)관리자 사용자 및 그룹 만들기를 참조하세요.

    참고

    계정 루트 사용자 또는 키 생성자를 포함한 AWS 보안 주체는 키 정책, IAM 정책 또는 권한 부여에서 명시적으로 허용되고 거부되지 않는 경우가 아니면 KMS 키에 대한 권한이 없습니다.

  • IAM 사용자IAM 사용자는 특정 권한(예를 들어 KMS 키 사용 권한)을 보유한 AWS 계정의 자격 증명입니다. IAM 사용자 이름과 암호를 사용하여 AWS Management Console, AWS 토론 포럼 또는 AWS Support 센터 같은 보안 AWS 웹 페이지에 로그인할 수 있습니다.

    사용자 이름과 암호 이외에 각 사용자별 액세스 키를 생성하여 사용자가 AWS SDK, AWS Command Line Interface 또는 AWS Tools for PowerShell를 사용하여 프로그래밍 방식으로 AWS 서비스에 액세스하도록 할 수도 있습니다. SDK와 명령줄 도구는 액세스 키를 사용하여 암호화 방식으로 API 요청에 서명합니다. AWS 도구를 사용하지 않는 경우 API 요청에 직접 서명해야 합니다. AWS KMS는 API 요청을 인증하기 위한 AWS 프로토콜인 서명 버전 4를 지원합니다. API 요청 인증에 대한 자세한 내용은 AWS 일반 참조서명 버전 4 서명 프로세스를 참조하십시오.

  • IAM 역할IAM 역할은 계정에 만들 수 있는, 특정 권한을 지닌 또 다른 IAM 자격 증명입니다. IAM 사용자와 유사하지만, 특정 개인과 연결되지 않습니다. IAM 역할을 사용하면 AWS 서비스 및 리소스에 프로그래밍 방식으로 액세스하는 임시 액세스 키를 얻을 수 있습니다. IAM 역할은 다음과 같은 상황에서 유용합니다.

    • 페더레이션 사용자 액세스 – IAM 사용자를 생성하는 대신 AWS Directory Service의 기존 사용자 자격 증명, 엔터프라이즈 사용자 디렉터리 또는 웹 자격 증명 공급자를 사용할 수 있습니다. 이러한 사용자를 연동 사용자라고 합니다. 페더레이션 사용자는 자격 증명 공급자를 통해 IAM 역할을 사용합니다. 페더레이션 사용자에 대한 자세한 정보는 IAM 사용 설명서페더레이션 사용자 및 역할을 참조하세요.

    • 크로스 계정 액세스 – AWS 계정의 IAM 역할을 사용하여 다른 AWS 계정에 계정 리소스에 액세스할 권한을 허용할 수 있습니다. 예는 IAM 사용 설명서튜토리얼: IAM 역할을 사용한 AWS 계정 간 액세스 권한 위임을 참조하십시오.

    • AWS 서비스 액세스 – 계정의 IAM 역할을 사용하여 AWS 서비스에 계정의 리소스에 액세스할 권한을 허용할 수 있습니다. 예를 들어, Amazon Redshift에서 사용자 대신 S3 버킷에 액세스하도록 허용하는 역할을 만든 다음 S3 버킷에 저장된 데이터를 Amazon Redshift 클러스터로 로드할 수 있습니다. 자세한 내용은 IAM 사용 설명서AWS 서비스에 대한 권한을 위임할 역할 생성을 참조하십시오.

    • EC2 인스턴스에서 실행되는 애플리케이션 – EC2 인스턴스에서 실행되고 AWS API 요청을 생성하는 애플리케이션에서 사용할 수 있도록 인스턴스 내에 액세스 키를 저장하는 대신에, IAM 역할을 사용하여 이러한 애플리케이션에 임시 액세스 키를 제공할 수 있습니다. EC2 인스턴스에 IAM 역할을 할당하려면 인스턴스 프로파일을 생성한 후 인스턴스를 시작할 때 연결할 수 있습니다. 인스턴스 프로파일에는 역할이 포함되어 있으며 EC2 인스턴스에서 실행되는 애플리케이션이 임시 액세스 키를 얻을 수 있습니다. 자세한 정보는 IAM 사용 설명서Amazon EC2에서 실행되는 애플리케이션의 역할 사용하기를 참조하세요.

승인

요청을 인증하는 데 유효한 자격 증명이 있어도AWS KMS 리소스를 생성, 관리 또는 사용하기 위한 AWS KMS API 요청을 수행하는 권한도 필요합니다. 예를 들어 암호화 작업을 위해 KMS 키를 생성, 관리 및 사용할 권한을 가지고 있어야 합니다.

키 정책, IAM 정책 및 권한 부여를 사용해 AWS KMS 리소스에 대한 액세스를 제어합니다. 정책 조건 키를 사용하여 요청이나 리소스가 지정한 조건을 충족할 때만 액세스 권한을 부여하도록 할 수 있습니다. 다른 AWS 계정에서 신뢰할 수 있는 다른 보안 주체에 대한 액세스를 허용할 수 있습니다.

AWS KMS 리소스

AWS KMS에서 기본 리소스는 AWS KMS keys입니다. AWS KMS는 KMS 키에 대해 알기 쉬운 이름을 제공하는 독립 리소스인 별칭을 지원합니다. 일부 AWS KMS 작업에서는 별칭을 사용하여 KMS 키를 식별할 수 있습니다.

KMS 키 또는 별칭의 각 인스턴스에는 표준 형식의 고유한 Amazon 리소스 이름(ARN)이 있습니다. AWS KMS 리소스에서 AWS 서비스 이름은 kms입니다.

  • AWS KMS key

    ARN 형식:

    arn:AWS partition name:AWS service name:AWS 리전:AWS 계정 ID:key/key ID

    ARN 예:

    arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

  • 별칭

    ARN 형식:

    arn:AWS partition name:AWS service name:AWS 리전:AWS 계정 ID:alias/alias name

    ARN 예:

    arn:aws:kms:us-west-2:111122223333:alias/example-alias

AWS KMS는 AWS KMS 리소스를 처리하기 위한 API 작업을 제공합니다. AWS Management Console 및 AWS KMS API 작업에서 KMS 키를 식별하는 방법에 대한 자세한 내용은 키 식별자(KeyId) 단원을 참조하십시오. AWS KMS 작업 목록은 AWS Key Management Service API 참조 섹션을 확인하세요.