여러 자격 증명을 지원하는 단일 사용자에 대한 AWS Secrets Manager 보안 암호 교체 - AWS Secrets Manager

문서의 영문과 번역 사이에 충돌이 있는 경우에는 영문 버전을 따릅니다. 번역 버전은 기계 번역을 사용하여 제공합니다.

여러 자격 증명을 지원하는 단일 사용자에 대한 AWS Secrets Manager 보안 암호 교체

보안 리소스에 대한 보안 암호를 자동으로 교체하도록 AWS Secrets Manager를 구성할 수 있습니다. 이 주제에서는 자격 증명 세트를 두 개 이상 가진 단일 사용자를 생성하도록 허용하는 인증 시스템에 대해 교체를 구성하는 방법을 설명합니다.

가장 좋은 방법은 주 사용자에 대한 자격 증명을 삭제 및 생성할 권한을 가진 다른 사용자의 자격 증명을 저장할 두 번째 "마스터" 보안 암호를 설정하는 것입니다. 그러면 주 사용자에게 부여되는 권한을 애플리케이션에 필요한 권한으로만 제한할 수 있습니다. 이렇게 하면 관리 작업을 두 번째 사용자에게 오프로드하여 최종 사용자가 액세스하지 못하게 할 수 있습니다. 주 보안 암호의 교체 함수는 두 번째 사용자에 액세스하여 이전 액세스 키를 삭제하고 새 액세스 키를 생성합니다.

교체 시 레이블을 사용하여 여러 자격 증명을 가진 단일 사용자를 관리하는 방법

다음 예에서는 이 시나리오에 대해 좀 더 자세히 설명합니다. 여기서는 교체 함수에서 생성되지 않고 서비스에서 생성되는 두 개별 "API 키"를 사용자가 갖도록 하는 서비스의 예를 사용합니다.

  1. 이 시나리오는 단일 버전 "A"를 가진 보안 암호에 저장된 API 키 중 하나를 사용하여 보안 리소스(데이터베이스)에 액세스하는 애플리케이션으로 시작합니다. 보안 암호의 A 버전에는 AWSCURRENT 스테이징 레이블이 연결되어 있습니다. 이 애플리케이션은 AWSCURRENT 스테이징 레이블이 지정된 버전을 요청하여 보안 암호를 검색합니다(1 및 2단계). 그런 다음 이 애플리케이션은 보안 암호의 해당 버전에 있는 API 키를 사용하여 데이터베이스에 액세스해(3단계) 애플리케이션에 필요한 데이터를 검색합니다(4단계).

  2. 보안 암호 교체 함수는 보안 암호 버전 "A"가 현재 참조하지 않는 API 키를 삭제한 다음 동일한 사용자에 대해 새 API 키를 생성합니다. 그런 다음 교체 함수에서 보안 암호의 새 "B" 버전을 생성합니다(새로운 보안 암호가 아니라 동일한 보안 암호의 새로운 버전). 교체 함수는 "A" 버전의 세부 정보를 복제하지만 API 키 세부 정보는 새로 생성된 API 키의 세부 정보로 바뀝니다. 처음에 보안 암호 버전 "B"에는 교체 프로세스에서 연결한 AWSPENDING 스테이징 레이블이 있습니다. 사용자 지정 애플리케이션이 항상 AWSCURRENT 레이블을 요청하지만 이 레이블이 아직 이동되지 않았기 때문에 이 애플리케이션은 보안 리소스에 액세스하기 위한 API 키를 얻기 위해 계속해서 보안 암호의 원래 A 버전을 검색해 사용합니다.

  3. "B" 버전의 보안 암호가 제대로 작동하는지 테스트한 후 교체 프로세스는 AWSCURRENT 레이블을 "A" 버전에서 옮겨 보안 암호의 새로운 "B" 버전에 연결합니다. 또한 AWSPENDING 스테이징 레이블을 AWSCURRENT 스테이징 레이블이 있는 버전으로 자동으로 옮깁니다. 이렇게 하면 복구가 필요한 경우 보안 암호가 "마지막으로 확인된 정상" 상태로 작동할 수 있습니다.

  4. 이제 “B” 버전에 AWSCURRENT 레이블이 지정되어 있으므로 사용자 지정 애플리케이션의 다음 요청은 보안 암호의 “B” 버전을 수신하는 것입니다. 이때, 고객 애플리케이션은 보안 암호의 새 버전에 있는 API 키를 사용합니다. 다음 교체 주기가 발생하면 보안 암호의 "B" 버전이 "A" 버전이 되고 a단계에서 다시 시작합니다.

사용자의 대체 자격 증명으로 교체 구성

단일 사용자만 갖도록 허용하는 인증 시스템의 교체 메커니즘을 구성하려면 이 절차의 다음 단계를 수행합니다.

자격 증명 세트 두 개가 있는 사용자에 대한 교체를 구성하려면

  1. 보안 리소스를 보호하는 인증 시스템에서 사용자를 생성합니다. 설정한 사용자 이름 및 자격 증명을 적어 놓습니다. 이 경우에는 이러한 자격 증명을 Creds1Creds2라고 하겠습니다.

  2. 이전 단계에서 생성한 자격 증명의 세부 정보를 저장할 Secrets Manager 보안 암호 하나를 생성합니다. 이 보안 암호는 처음에는 사용자에 대해 Creds1을 보유하고 있습니다.

    1. 에서 콘솔에 로그인합니다.Secrets Managerhttps://console.aws.amazon.com/secretsmanager/

    2. 새 암호를 선택합니다.

    3. 암호 유형 선택에서 사용자 이름 및 첫 번째 자격 증명 세트를 포함해 다른 암호 유형을 선택합니다. 예를 들어, 보호되는 보안 암호 텍스트에 대해 키 값 쌍 2개를 입력합니다. 이 페어는 다음 예제와 유사할 수 있습니다.

      UserName <사용자 이름>
      APIKey <API 키>
      APIKeyId <두 API 키 중 이 버전으로 저장되는 키 식별>
    4. AWS KMS Encryption Key(AWS KMS 암호화 키)에서 이 보안 암호를 암호화하는 데 사용할 키를 선택하거나 계정에 대해 설정된 기본값인 DefaultMasterKey를 그대로 사용합니다. 기본 키를 사용하려면 보안 암호에 액세스하는 자격 증명이 보안 암호를 소유한 계정과 동일한 계정의 자격 증명이어야 합니다. 사용자 자격 증명이 다른 계정에 있는 경우 사용자 지정 고객 마스터 키(CMK)를 생성해 지정해야 합니다.

    5. Select rotation period(교체 기간 선택)에 교체 사이의 일수를 입력합니다.

      참고

      Secrets Manager 콘솔을 사용하여 교체를 구성한 경우 기본적으로 Secrets Manager에서는 만료가 자동으로 활성화되고 교체 간격 일 수에 7을 더한 값으로 자동 설정됩니다.

    6. Select the Lambda rotation function(Lambda 교체 함수 선택)에서 함수 생성을 선택합니다.

    7. [Next step]을 선택합니다.

    8. 암호 이름을 입력하고, 필요한 경우 설명을 입력합니다. 선택적으로 태그를 추가할 수 있습니다.

    9. [Store secret]을 선택합니다.

  3. Lambda 교체 함수의 Amazon 리소스 이름(ARN)을 찾는지 새 보안 암호를 검사합니다.

    1. 비밀 목록 페이지에서 2단계에서 생성한 보안 암호의 이름을 선택합니다.

    2. Secret details / Secret rotation(보안 암호 세부 정보/보안 암호 교체) 섹션에서 교체 함수의 ARN을 선택해 Lambda에서 엽니다.

    3. 교체 함수를 작성하기 위한 기준으로 다음 로직을 사용합니다.

      • createSecret 단계:

        • 작업을 사용하여 보안 암호의 버전을 검색합니다.AWSCURRENTGetSecretValue

        • 보안 암호의 SecretString 값을 추출하고 수정할 수 있는 구조로 저장합니다.

        • 보안 암호의 AWSCURRENT 버전에서 참조하지 않는 비활성 API 키를 확인합니다.

        • 서비스에 대한 명령을 실행하여 이전 단계에서 확인한 비활성 API 키를 삭제합니다.

        • 서비스에 대한 명령을 실행하여 동일한 사용자에 대해 새 액세스 키를 생성합니다.

        • 보안 암호 구조의 사본에 있는 API 키와 식별자를 방금 생성한 새 API 키로 덮어 씁니다. 모든 다른 세부 정보는 동일하게 유지합니다.

        • PutSecretValue에 대한 호출에서 보호된 보안 암호 텍스트의 수정된 사본을 SecretString 파라미터로 전달하여 저장합니다. Secrets Manager에서는 보안 암호의 새 버전에 AWSPENDING이라는 레이블을 지정합니다.

      • setSecret 단계:

        • 이 시나리오의 setSecret 단계에서는 아무 것도 하지 않습니다. 보안 암호에 저장할 API 키와 식별자가 있어야 하기 때문에 createSecret 단계에서 API 키를 생성했습니다. 대부분의 다른 시나리오에서처럼 고유한 키를 생성하지 않습니다.

      • testSecret 단계:

        • 작업을 사용하여 보안 암호의 버전을 검색합니다.AWSPENDINGGetSecretValue

        • 보안 리소스에 대한 명령을 실행하여 보안 암호의 이 버전에 있는 API 키를 사용하여 보안 리소스에 액세스해 봅니다.

      • finishSecret 단계:

        • AWSPENDING 레이블이 지정된 버전으로 AWSCURRENT 레이블을 옮겨 지정합니다. 또한 이렇게 하면 AWSPREVIOUS 스테이징 레이블이 방금 AWSCURRENT를 제거한 보안 암호로 자동으로 이동합니다.

        • (선택 사항) 보안 암호의 해당 버전에서 AWSPENDING 레이블을 제거합니다.