암호를 하나만 사용하는 단일 사용자에 대해 AWS Secrets Manager 보안 암호 교체 - AWS Secrets Manager

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

암호를 하나만 사용하는 단일 사용자에 대해 AWS Secrets Manager 보안 암호 교체

보안 리소스에 대한 보안 암호를 자동으로 교체하도록 AWS Secrets Manager를 구성할 수 있습니다. 이 주제에서는 암호를 하나만 사용하는 단일 사용자를 생성하도록 허용하는 시스템에 대한 교체 구성에 대해 설명합니다. 필요한 경우 사용자의 암호를 변경할 수 있습니다. 이 시나리오는 간단하지만 가장 많이 사용되는 솔루션을 제공하지 않습니다. 암호 변경 중 클라이언트가 보안 리소스에 계속해서 액세스할 수 있습니다. 이로 인해 "액세스 거부" 상황이 발생할 수 있습니다.

실제 암호 변경 시점과 클라이언트에게 어떤 암호를 사용해야 할지 알려주는 해당 보안 암호에 대한 변경 시점 간의 시간차로 인해 문제가 발생할 수 있습니다. 암호 변경 사항이 모든 멤버 서버로 전파되는 데 시간이 걸리는 "서버 팜"에서 보안 리소스를 호스팅하는 경우 이 문제가 증가할 수 있습니다. 그러나 적절한 재시도 전략을 사용하면 이러한 위험을 크게 완화할 수 있습니다.

이는 서비스에 액세스하는 사용자 이외의 다른 사람이 소유한 서비스의 경우 일반적인 시나리오입니다. 서비스의 소유자는 일반적으로 사용자의 이메일 주소와 같은 정보를 사용자 이름 또는 최소한 고유성 키로 사용하여 고객이 단일 사용자 계정을 생성하도록 합니다. 서비스는 일반적으로 사용자가 필요한 만큼 자주 암호를 변경할 수 있도록 허용합니다. 하지만 사용자 추가 생성 또는 사용자 이름 변경은 허용하지 않습니다.

교체 시 레이블을 사용하여 암호 변경 권한을 가진 단일 사용자를 관리하는 방법

아래에서는 이 시나리오에 대해 좀 더 자세히 설명합니다.

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

  2. 보안 암호 교체 프로세스에서 보안 암호의 새 버전 "B"를 생성합니다(새로운 보안 암호가 아니라 동일한 보안 암호의 새로운 버전). 처음에 이 버전 B 보안 암호에는 교체 프로세스에서 연결한 AWSPENDING 스테이징 레이블이 있습니다. 보안 암호 버전 B에서 새로 생성된 암호를 수신합니다. Secrets Manager에서 보안 암호를 성공적으로 저장하면 바로 교체 프로세스가 데이터베이스 인증 시스템에서 사용자의 암호를 변경합니다. 이때 데이터베이스의 암호 변경 시점과 레이블이 보안 암호의 새 버전으로 이동하는 시점 사이에 4단계에서 클라이언트 로그인 실패가 발생할 수 있습니다. 이러한 위험 때문에 교체 프로세스에서 즉시 다음 단계로 진행해야 합니다.

  3. 보안 암호 버전 B에는 활성 암호가 저장되기 때문에 교체 프로세스는 AWSCURRENT 스테이징 레이블을 보안 암호의 A 버전에서 새로운 B 버전으로 옮깁니다. 또한 AWSPREVIOUS 스테이징 레이블을 이전에 AWSCURRENT 스테이징 레이블이 있던 버전으로 자동으로 옮깁니다. 이렇게 하면 복구가 필요한 경우 보안 암호가 "마지막으로 확인된 정상" 상태로 작동할 수 있습니다.

  4. 이제 보안 암호의 B 버전에 AWSCURRENT 레이블이 있으므로 사용자 지정 애플리케이션의 다음 요청은 보안 암호의 B 버전을 수신하는 것입니다. 이때, 고객 애플리케이션은 보안 암호의 새 버전을 사용합니다.

암호만 변경하도록 교체 구성

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

암호만 교체하도록 교체 구성

  1. 보안 리소스를 보호하는 인증 시스템에서 단일 사용자를 생성합니다. 암호를 기록해 둡니다.

  2. 이전 단계에서 생성한 자격 증명의 세부 정보를 저장할 Secrets Manager 보안 암호를 생성합니다.

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

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

    3. 암호 유형 선택에서 사용 중인 서비스에 가장 잘 맞는 옵션을 선택합니다. 그런 다음 사용자 이름 및 최초 암호 등과 같은 데이터베이스 또는 서비스에 대한 세부 정보를 구성합니다.

    4. AWS KMS Encryption Key(AWS KMS 암호화 키)에서 이 보안 암호를 암호화하는 데 사용할 고객 마스터 키(CMK)를 선택하거나, 계정에 대해 설정된 DefaultMasterKey를 그대로 사용합니다. 기본 키를 사용하려면 보안 암호에 액세스하는 자격 증명이 보안 암호를 소유한 계정과 동일한 계정의 자격 증명이어야 합니다. 사용자 자격 증명이 다른 계정에 있는 경우 사용자 지정 CMK의 Amazon 리소스 이름(ARN)을 생성하여 지정해야 합니다.

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

      참고

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

    6. What credentials can rotation this secret?(이 보안 암호를 교체할 수 있는 자격 증명)에서 Use the same credentials(동일한 자격 증명 사용)를 선택합니다.

      참고

      이 시나리오 예에서는 사용자가 자신의 암호를 변경할 수 있고 첫 번째 사용자에 대한 암호를 변경할 권한이 있는 두 번째 사용자를 사용할 수 없다고 가정합니다.

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

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

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

  3. Lambda 교체 함수의 ARN을 가져오는지 새 보안 암호를 검사합니다.

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

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

    3. 특정 요구 사항에 맞게 교체 함수를 사용자 지정합니다. 각 단계에 대한 다음 요구 사항을 함수 작성을 위한 기준으로 사용할 수 있습니다.

      • createSecret 단계:

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

        • SecretString 필드에서 보호되는 보안 암호 텍스트를 추출하고 수정할 수 있는 구조로 저장합니다.

        • 보호되는 리소스에서 지원하는 최대 길이 및 복잡성 요구 사항에 맞게 암호를 생성하는 알고리즘을 사용하여 새 암호를 생성합니다.

        • 해당 구조의 password 필드를 이전 단계에서 생성한 새 구조를 덮어씁니다. username 및 연결 세부 정보 등 기타 모든 자세한 정보는 동일하게 유지합니다.

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

      • setSecret 단계:

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

        • 보안 리소스 인증 시스템에 대해 명령을 실행하여 기존 사용자 암호를 보안 암호의 새 AWSPENDING 버전에 저장된 암호로 변경합니다.

      • testSecret 단계:

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

        • 보안 리소스에 대한 명령을 실행하여 보안 암호의 자격 증명을 사용하여 보안 리소스에 액세스해 봅니다.

      • finishSecret 단계:

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

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

중요

이 시나리오에서는 새 버전을 생성하여 확인하는 동안 사용자가 이전 버전으로 계속해서 작업할 수가 없습니다. 따라서 암호를 변경하는 setSecret 단계의 시점과 AWSCURRENT 레이블을 새 버전으로 옮겨 지정하는 finishSecret 단계의 시점 사이에 클라이언트가 잘못된 자격 증명을 사용하여 액세스 거부 오류가 발생할 수 있습니다. 위험을 줄이기 위해 이러한 상황에서 클라이언트 애플리케이션에 적절한 재시도 기능을 포함해야 합니다.