의 주요 용어 및 개념 AWS Secrets Manager - AWS Secrets Manager

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

의 주요 용어 및 개념 AWS Secrets Manager

다음은 AWS Secrets Manager 및 그 작동 방식을 이해하는 데 중요한 용어 및 개념입니다.

Secret

Secrets Manager에서 보안 암호는 자격 증명 세트(사용자 이름 암호)와 보안 서비스에 액세스하는 데 사용되는 연결 세부 정보로 구성됩니다. 보안 암호를 안전하게 저장하고 권한이 있는 사용자만 보안 암호에 액세스하도록 할 수 있습니다. Secrets Manager에서는 항상 보안 암호 텍스트를 암호화된 형식으로 저장하고, 전송 중인 보안 암호를 암호화합니다.

Secrets Manager는 IAM 권한 정책을 사용하여 권한 있는 사용자만 보안 암호에 액세스하거나 보안 암호를 수정할 수 있도록 합니다. 이 정책을 사용자 또는 역할에 연결하고 사용자가 액세스할 수 있는 보안 암호를 지정할 수 있습니다. 보안 암호에 대한 액세스 제어에 대한 자세한 정보는 AWS Secrets Manager에 대한 인증 및 액세스 제어 단원을 참조하십시오.

자격 증명을 저장하는 경우 보안 서비스별로 다른 정보가 필요할 수 있습니다. Secrets Manager에서는 텍스트 문자열로 구성된 키-값 쌍으로 보안 암호를 저장하여 이러한 유연성을 제공합니다. Secrets Manager에서 지원되는 데이터베이스를 선택한 경우 Secrets Manager에서는 선택한 데이터베이스에 대한 교체 함수의 요구 사항에 따라 키-값 페어를 정의합니다. Secrets Manager는 이 페어를 JSON 텍스트 형식으로 지정합니다. Secrets Manager에서 Lambda 함수를 제공하지 않는 일부 다른 서비스 또는 데이터베이스를 선택한 경우에는 사용자가 정의한 JSON 키-값 페어로 보안 암호를 지정할 수 있습니다.

저장되어 있는 암호화된 보안 암호 텍스트는 다음 예와 유사한 형태일 수 있습니다.

{ "host" : "ProdServer-01.databases.example.com", "port" : "8888", "username" : "administrator", "password" : "My-P@ssw0rd!F0r+Th3_Acc0unt", "dbname" : "MyDatabase", "engine" : "mysql" }

명령줄 도구 또는 API를 사용할 경우 보안 암호에 이진 데이터를 저장할 수도 있습니다. Secrets Manager 콘솔은 이진 데이터를 지원하지 않습니다.

Secrets Manager는 지정된 일정에 따라 보안 암호를 자동으로 교체할 수 있습니다. 암호만 저장하지 않고 사용자 또는 계정에 대한 자격 증명 세트 전체를 저장하도록 선택하면 서비스 중단 없이 자격 증명을 교체할 수 있습니다. 암호만 변경하거나 교체하는 경우에는 이전 암호가 즉시 사용할 수 없게 되므로 고객이 바로 새 암호를 사용하기 시작하지 않으면 액세스에 실패합니다. 대신 새 암호가 지정된 새 사용자를 생성하거나 최소한 두 사용자 간에 번갈아 사용하면 이전 사용자 및 암호를 사용할 수 없다고 선택할 때까지 이전 정보가 새 정보와 함께 계속해서 작동할 수 있습니다. 이렇게 하면 새 자격 증명을 테스트하고 확인하는 동안 모든 클라이언트가 계속 작업할 수 있는 시간이 제공됩니다. 새 자격 증명이 테스트를 통과한 이후에는 모든 클라이언트가 새 자격 증명을 사용하도록 설정하고 이전 자격 증명을 제거합니다.

지원되는 데이터베이스

Secrets Manager 콘솔을 사용하고 Secrets Manager에서 기본적으로 지원하는 데이터베이스 중 하나에 대한 보안 암호를 지정한 경우 Secrets Manager에서는 해당 보안 암호의 구조를 모두 관리하고 구문 분석을 수행합니다. 콘솔에 특정 유형의 데이터베이스에 대한 세부 정보를 입력하라는 메시지가 표시됩니다. Secrets Manager에서는 필요한 구조를 구성하고, 해당 정보를 저장한 다음 사용자가 이 정보를 검색할 때 이해하기 쉬운 텍스트 정보로 다시 구문 분석합니다.

기타 데이터베이스 또는 서비스

대신 "사용자 지정" 데이터베이스 또는 서비스에 대한 보안 암호를 지정한 경우 보안 암호 검색 후 보안 암호 텍스트와 관련해 수행할 작업과 보안 암호를 해석하는 방식은 사용자가 제어합니다. Secrets Manager 콘솔에서는 보안 암호를 키-값 문자열로 수용하고 저장하기 위해 JSON 구조로 자동으로 변환합니다. 콘솔에서 보안 암호를 검색하면 Secrets Manager에서는 해당 보안 암호를 사용자가 볼 수 있도록 키-값 텍스트 문자열로 다시 구문 분석합니다. 보안 암호를 프로그래밍 방식으로 검색하는 경우 적절한 JSON 구문 분석 라이브러리(대부분의 프로그래밍 언어에 사용 가능)를 사용하여 유용한 방식으로 보안 암호를 구문 분석할 수 있습니다. 보안 암호에 저장할 데이터의 크기가 암호당 크기 제한인 65,536바이트보다 클 경우 키-값 페어를 보안 암호 2개로 분할하고 검색할 때 다시 연결할 수 있습니다.

Secrets Manager 보안 암호의 기본 구조

Secrets Manager에서 보안 암호에는 암호화된 보안 암호 텍스트뿐만 아니라 보안 암호를 설명하고 Secrets Manager에서 보안 암호를 처리해야 하는 방식을 정의하는 여러 메타데이터 요소가 포함되어 있습니다.

  • 메타데이터 – 비밀에 대한 세부 정보

    • 보안 암호의 이름, 설명과 고유한 식별자로 사용되는 Amazon 리소스 이름(ARN)을 포함한 기본 정보

    • Secrets Manager에서 보안 암호의 보호되는 텍스트를 암호화 및 복호화하는 데 사용하는 AWS Key Management Service(AWS KMS) 키의 ARN. 이 정보를 제공하지 않으면 Secrets Manager에서는 계정에 기본 AWS KMS 키를 사용합니다.

    • 키를 교체하는 빈도 및 교체를 수행하는 데 사용하는 Lambda 함수

    • 사용자가 제공한 태그 세트. 태그는 구성, 논리적 그룹화 및 비용 할당을 위해 AWS 리소스에 연결할 수 있는 키-값 페어입니다.

  • 버전 – 하나 이상의 버전 암호화된 비밀 텍스트의

    • 일반적으로 보안 암호 버전은 한 번에 한 개만 활성 상태일 수 있지만 데이터베이스 또는 서비스에 대한 보안 암호를 교체하는 동안에는 여러 버전이 존재할 수 있습니다. 보안 암호를 변경할 때마다 Secrets Manager에서 새 버전을 생성합니다.

    • 각 버전에는 암호화된 보안 암호 값의 사본이 들어 있습니다.

    • 각 버전에는 보안 암호의 교체 주기의 스테이지를 식별하는 하나 이상의 스테이징 레이블이 연결될 수 있습니다.

보안 서비스

Secrets Manager에서는 보안 서비스를 데이터베이스 또는 네트워크 서버에서 실행되는 다른 서비스로 정의하며, 보안 암호에 저장된 자격 증명으로 액세스를 제어합니다. 보안 서비스는 동일한 액세스 방법을 공유하는 단일 서버 또는 대규모 서버 그룹을 나타낼 수 있습니다. 보안 서비스에 성공적으로 액세스하기 위해서는 보안 암호가 필요합니다. 보안 암호에는 고객이 보안 서비스에 액세스하는 데 필요한 정보가 모두 들어 있습니다. 이 설명서에서는 "보안 서비스"라는 일반적인 용어를 사용하여 AWS Secrets Manager에서 보안 암호를 보호할 수 있는 여러 유형의 데이터베이스 및 서비스를 모두 나타냅니다.

Rotation

Secrets Manager에서는 교체를 공격자가 보안 서비스에 액세스하는 것을 더욱 어렵게 만들기 위해 보안 암호를 주기적으로 변경하는 프로세스로 정의합니다. Secrets Manager에서는 수동으로 보안 암호를 변경하여 모든 고객에 대해 업데이트할 필요가 없습니다. 대신 Secrets Manager에서는 정기적으로 AWS Lambda 함수를 사용하여 교체의 모든 단계를 자동으로 수행합니다.

데이터베이스(보안 서비스)에 액세스하는 애플리케이션을 실행하는 많은 클라이언트가 있다고 상상해 보십시오. 애플리케이션에 자격 증명을 하드 코딩하는 대신 애플리케이션은 필요할 때마다 Secrets Manager에 요청을 보내 보안 암호의 세부 정보를 수신합니다. 보안 암호를 교체할 시기가 되면 Lambda 교체 함수가 다음 단계를 자동으로 수행합니다.

  1. 교체 함수는 보안 서비스의 인증 시스템에 접속해 데이터베이스에 액세스하기 위한 새 자격 증명 세트를 생성합니다. 자격 증명은 일반적으로 사용자 이름, 암호 및 연결 세부 정보로 구성되지만 시스템마다 다를 수 있습니다. Secrets Manager에서는 AWSPENDING 스테이징 레이블이 연결된 보안 암호의 새 버전에 새 자격 증명을 보안 암호 텍스트로 저장합니다.

  2. 그런 다음 교체 함수가 보안 암호의 AWSPENDING 버전을 테스트하여 자격 증명이 작동하는지 확인하고 보안 서비스에 필요한 액세스 권한 수준을 부여합니다.

  3. 테스트에 성공하면 교체 함수는 AWSCURRENT 레이블을 새 버전으로 옮겨 지정해 새 버전을 기본 버전으로 표시합니다. 이렇게 하면 모든 클라이언트가 이전 버전 대신 이 버전의 보안 암호를 사용하게 됩니다. 또한 교체 함수는 이전 버전에 AWSPREVIOUS 레이블을 할당하여 "마지막으로 확인된 정상" 버전으로 표시합니다. AWSPREVIOUS 스테이징 레이블이 있었던 버전에 이제 스테이징 레이블이 없으므로 더 이상 사용되지 않습니다.

콘솔에서 Rotate secret(보안 암호 교체)를 선택한 경우에는 Lambda 교체 함수를 수동으로 실행하거나 교체 일정을 지정하여 n일마다 자동으로 실행되도록 할 수 있습니다. Secrets Manager에서 기본적으로 지원하는 AWS 데이터베이스 중 하나를 사용하는 경우 Secrets Manager는 데이터베이스 자격 증명을 교체하는 Lambda 함수를 제공합니다. 이 함수는 기본 교체를 자동으로 수행합니다. 아니면 고급 사용자 지정 교체 전략을 지원하도록 이 함수를 사용자 지정할 수 있습니다.

사용자 지정 서비스에 대한 보안 암호를 생성하도록 선택한 경우 Lambda 함수를 생성해야 합니다. 이 함수의 코드에서 JSON 구조를 작성하고 구문 분석하는 방법을 결정합니다.

보안 암호에서 사용하는 서비스 또는 데이터베이스의 경우 보안 암호에 대한 Lambda 교체 함수는 데이터베이스 또는 서비스와 Secrets Manager 서비스 엔드포인트에 모두 액세스할 수 있어야 합니다. Lambda 교체 함수 및 데이터베이스 또는 서비스가 Amazon VPC에서 제공한 VPC에 있는 경우 Secrets Manager용 VPC 서비스 엔드포인트 또는 NAT 게이트웨이를 통한 직접 인터넷 연결을 사용하여 퍼블릭 Secrets Manager 서비스 엔드포인트에 대한 액세스를 허용하도록 VPC를 구성해야 합니다.

교체에 대한 자세한 정보는 AWS Secrets Manager 보안 암호 교체 단원을 참조하십시오.

스테이징 레이블

Secrets Manager 는 간단한 텍스트 문자열인 스테이징 레이블을 사용하여 서로 다른 버전 비밀의 회전. 암호화된 보안 암호 값을 쿼리할 때마다 검색할 보안 암호 버전을 지정할 수 있습니다. 버전 ID 또는 스테이징 레이블을 사용해 버전을 지정하지 않으면 Secrets Manager에서는 기본적으로 AWSCURRENT 스테이징 레이블이 연결된 버전에 액세스합니다. Secrets Manager에서는 항상 스테이징 레이블 AWSCURRENT를 보안 암호 버전 중 하나에 연결합니다. 작동 방식에 대한 예는 교체에 대한 간단한 소개를 참조하십시오.

보안 암호의 버전에는 0~20의 스테이징 레이블을 연결할 수 있습니다. 예를 들어, SecretAVersion1 20개의 스테이징 레이블이 있으며 다음에 스테이징 레이블을 추가하려는 경우 SecretBVersion1에서 스테이징 레이블을 제거해야 합니다. SecretAVersion1 스테이징 레이블을 SecretBVersion1.

스테이징 레이블은 한 번에 보안 암호의 버전 하나에만 연결할 수 있습니다. 보안 암호의 버전 2개에 같은 스테이징 레이블을 지정할 수 없습니다. 스테이징 레이블을 버전에 연결할 때 동일한 스테이징 레이블을 가진 다른 버전이 있는 경우 레이블을 제거할 버전도 지정해야 합니다. 그렇지 않으면 Secrets Manager에서 오류가 반환됩니다.

보안 암호의 한 버전에는 항상 스테이징 레이블 AWSCURRENT가 있어야 하며 API 작업이 이 동작을 시행합니다. Secrets Manager에서 제공하는 Lambda 교체 함수는 적절한 버전에 대해 AWSPENDING, AWSCURRENTAWSPREVIOUS 레이블을 자동으로 유지합니다.

Versioning

보안 암호의 여러 버전은 보안 암호 교체를 지원합니다. Secrets Manager에서는 각각의 스테이징 레이블을 통해 서로 다른 버전을 구분합니다. 대부분의 시나리오에서는 Secrets Manager 및 제공된 Lambda 교체 함수에서 자동으로 세부 정보를 관리하기 때문에 보안 암호 버전에 대해 걱정할 필요가 없습니다. 하지만 Lambda 교체 함수를 생성하는 경우 코드가 여러 버전의 보안 암호를 관리하고 각 버전 간에 스테이징 레이블을 적절하게 이동해야 합니다. 또한 각 버전에는 버전 간에 이동할 수 있는 스테이징 레이블과는 달리, 항상 동일한 버전과 함께 유지되는 고유한 식별자(일반적으로 UUID 값)가 있습니다. 더 유유아이디 은(는) 다음 사항에 해당합니다. ClientRequestToken 에서 통과됨 PutSecretValue, CreateSecret, 및 UpdateSecret APIs.

항상 AWSCURRENT 레이블이 연결된 보안 암호의 기본 버전을 요청하도록 클라이언트를 구성합니다. 다른 버전이 존재할 수 있지만 특정 버전 ID 또는 스테이징 레이블을 요청해야만 다른 버전에 액세스할 수 있습니다. 보안 암호 값을 요청하고 버전 ID 또는 스테이징 레이블을 지정하지 않은 경우, 기본적으로 AWSCURRENT 스테이징 레이블이 있는 버전이 표시됩니다.

교체 중 Secrets Manager는 보안 암호의 새 버전을 생성하고 AWSPENDING 스테이징 레이블을 연결합니다. 교체 함수는 AWSPENDING 버전을 사용하여 버전이 테스트를 통과할 때까지 해당 버전을 식별합니다. 교체 함수에서 새 자격 증명이 작동하는지 확인하면, Secrets Manager에서 AWSPREVIOUS 레이블을 AWSCURRENT가 있는 이전 버전으로 옮기고, AWSCURRENT 레이블을 새로운 AWSPENDING 버전으로 옮기며, 마지막으로 AWSPENDING을 제거합니다.

교체 지원을 위해 스테이징 레이블이 작동하는 방법에 대한 자세한 정보는 AWS Secrets Manager 보안 암호 교체 단원을 참조하십시오.

보안 암호에 대해 유지되는 각 버전에는 다음 요소가 포함되어 있습니다.

  • 버전의 고유 ID

  • 버전을 식별하는 데 사용하는 스테이징 레이블 모음(보안 암호 내에서 고유함). Secrets Manager에서는 스테이징 레이블이 없는 버전을 더 이상 사용하지 않으며 이러한 버전은 삭제될 수 있습니다.

  • 암호화되어 저장된 보안 암호 텍스트

암호화된 보안 암호 값을 쿼리할 때마다 보안 암호 버전을 지정할 수 있습니다. 버전 ID 또는 스테이징 레이블을 사용해 버전을 지정하지 않으면 Secrets Manager에서는 기본적으로 AWSCURRENT 스테이징 레이블이 연결된 버전에 액세스합니다. Secrets Manager에서는 항상 스테이징 레이블 AWSCURRENT를 보안 암호 버전 중 하나에 연결합니다.