의 회전 활성화 Amazon DocumentDB 비밀 - AWS Secrets Manager

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

의 회전 활성화 Amazon DocumentDB 비밀

크리덴셜을 사용하여 암호 순환을 활성화할 수 있습니다. Amazon DocumentDB 데이터베이스를 사용하여 AWS 비밀 관리자 콘솔, AWS CLI또는 AWS SDKs.

주의

교체를 활성화하면 보안 암호를 저장할 때 해당 보안 암호가 즉시 교체됩니다. 교체를 활성화하기 전에 이 보안 암호 자격 증명을 사용하는 모든 애플리케이션이 Secrets Manager의 보안 암호를 검색하도록 업데이트되어 있는지 확인하십시오. 원래 자격 증명은 초기 교체 후 사용하지 못할 수 있습니다. 모든 애플리케이션을 업데이트하지 않으면 이전 자격 증명이 유효하지 않게 되어 오류가 발생할 수 있습니다.

사전 조건: 회전을 활성화하기 위한 네트워크 요구 사항

교체를 성공적으로 활성화하려면 네트워크 환경을 올바르게 구성하십시오.

  • 더 Lambda 함수가 데이터베이스와 통신할 수 있어야 합니다. 을(를) 실행하는 경우 DocumentDB 데이터베이스 인스턴스 부사장을(를) 구성할 것을 권장합니다. Lambda 동일한 VPC 에서 실행할 수 있습니다. 그러면 교체 함수와 서비스 간에 직접 연결할 수 있습니다. 이렇게 구성하려면 Lambda 함수 세부 정보 페이지에서 네트워크 섹션으로 스크롤한 후 드롭다운 목록에서 인스턴스와 일치하는 VPC를 선택합니다. 또한 인스턴스에 연결된 EC2 보안 그룹이 인스턴스와 Lambda 간의 통신을 활성화하는지 확인해야 합니다.

  • 더 Lambda 와(과) 통신할 수 있어야 합니다. Secrets Manager 서비스 끝점. Lambda 교체 함수가 인터넷에 액세스할 수 있는 경우 VPC에서 실행되도록 함수를 구성하지 않았거나 VPC에 연결된 NAT 게이트웨이가 있으므로 Secrets Manager의 사용 가능한 퍼블릭 엔드포인트 중 하나를 사용할 수 있습니다. 또는 Lambda 함수가 인터넷에 액세스할 수 없는 VPC에서 실행되도록 구성된 경우 프라이빗 Secrets Manager 서비스 엔드포인트를 사용하여 VPC를 구성할 수 있습니다.

Amazon DocumentDB 보안 암호에 대해 교체 활성화 및 구성

다음 탭 중 하나에 있는 단계를 따릅니다.

AWS Management Console 사용
최소 권한

콘솔에서 교체를 활성화하고 구성하려면 다음 관리형 정책이 제공하는 권한이 있어야 합니다.

  • SecretsManagerReadWrite – 모든 Secrets Manager, Lambda 및 AWS CloudFormation 권한을 제공합니다.

  • IAMFullAccess – 역할을 만들고 권한 정책을 연결하는 데 필요한 IAM 권한 제공

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

  2. 교체를 활성화할 보안 암호의 이름을 선택합니다.

  3. [Configure automatic rotation] 섹션에서 [Enable automatic rotation]을 선택합니다. 이를 통해 이 섹션의 다른 컨트롤이 활성화됩니다.

  4. Select rotation interval(교체 간격 선택) 섹션에서 미리 정의된 값을 선택하거나 사용자 지정을 선택하여 교체 간에 원하는 일수를 입력합니다.— 규정 준수 요구 사항을 충족하기 위해 보안 암호를 교체하는 경우 이 값을 규정 준수 필수 간격보다 최소 1일 작게 설정하는 것이 좋습니다.

    Secrets Manager는 이전 교체가 완료되면 다음 교체를 예약합니다. Secrets Manager는 마지막 교체의 실제 날짜에 교체 간격(일수)을 추가하여 날짜를 예약합니다. 이 서비스는 24시간 날짜 기간 내에서 무작위로 시간을 선택합니다. 분도 무작위로 선택되지만, 정시에 가깝게 가중치가 부여되며 부하 분산에 도움이 되는 다양한 요인의 영향을 받습니다.

    참고

    Secrets Manager가 제공하는 Lambda 함수를 사용하여 두 사용자 간에 교대로 설정하는 경우(다음 단계에서 두 번째 마스터 보안 암호 옵션을 선택하면 콘솔에서 이 템플릿을 사용함), 교체 기간을 규정에 따른 최소 간격의 절반으로 설정해야 합니다. 한 번의 추가 교체 주기 동안 적극적으로 사용되지 않는 경우 Secrets Manager는 이전 자격 증명을 계속 사용할 수 있습니다. Secrets Manager는 두 번째 교체 후 사용자가 새 암호로 업데이트한 후에만 이전 자격 증명을 무효화합니다.

    새 보안 암호가 활성화된 후 교체 함수를 수정하여 이전 자격 증명을 즉시 무효화하는 경우 교체 간격을 전체 규정 준수 필수 최소값으로 확장할 수 있습니다. AWSPREVIOUS 스테이징 레이블을 통해 한 번의 추가 주기 동안 이전 자격 증명을 활성 상태로 두면 빠른 복구에 사용될 수 있는 마지막으로 확인된 정상 자격 증명 세트가 제공됩니다. 현재 자격 증명을 중단하는 상황이 발생하는 경우 AWSCURRENT 스테이징 레이블을 AWSPREVIOUS 레이블이 있는 버전으로 옮깁니다. 그런 다음 리소스에 다시 액세스할 수 있습니다. 자세한 정보는 기존 사용자 2명 간에 전환하여 AWS Secrets Manager 보안 암호 교체 단원을 참조하십시오.

  5. 다음 옵션 중 하나를 선택합니다.

    • 새로운 Lambda 회전 기능

      1. 새 Lambda 함수를 생성하여 교체 수행을 선택합니다.

      2. Lambda 함수 이름에 Secrets Manager가 생성하는 Lambda 함수에 지정하려는 이름을 입력합니다.

      3. 교체 함수가 사용할 수 있는 자격 증명으로 보안 암호를 지정합니다. 보호되는 데이터베이스에 대한 사용자 이름과 암호를 업데이트할 수 있는 권한이 사용자에게 있어야 합니다.

        • 이 비밀 사용: 이 암호의 자격 증명이 데이터베이스에서 암호를 변경할 수 있는 권한이 있는 경우 이 옵션을 선택합니다. 이 옵션을 선택하면 Secrets Manager가 단일 사용자를 통해 보안 암호를 교체하는 Lambda 함수를 생성하며, 교체할 때마다 암호가 변경됩니다.

          참고

          Secrets Manager는 이 옵션을 "저가용성" 옵션으로 제공합니다. 교체로 인해 이전 암호가 제거된 시점과 업데이트된 암호를 새 버전의 보안 암호로 사용하여 액세스할 수 있는 시점 사이에 로그인 실패가 발생할 수 있습니다. 이 기간은 일반적으로 1초 이하로 매우 짧습니다.

          이 옵션을 선택하는 경우 클라이언트 애플리케이션이 코드에서 적절한 "백오프 및 지터로 재시도" 전략을 구현하는지 확인합니다. 애플리케이션은 로그인이 더 오랜 시간에 걸쳐 여러 번 실패하는 경우에만 오류를 생성해야 합니다.

        • 이전에 저장했던 비밀을 사용한다 AWS Secrets Manager: 현재 암호의 자격 증명에서 권한 업데이트를 허용하지 않거나 암호에 대한 고가용성이 필요한 경우 이 옵션을 선택합니다. 이 옵션을 선택하려면 보안 암호의 자격 증명을 업데이트할 권한과 자격 증명을 포함한 별도의 "마스터" 보안 암호를 생성해야 합니다. 그런 다음 목록에서 마스터 보안 암호를 선택합니다. 이 옵션을 선택하면 Secrets Manager는 매 교체 시마다 새 사용자 및 암호를 생성하고 기존 사용자를 삭제하여 보안 암호를 교체하는 Lambda 함수를 생성합니다.

          참고

          새 버전이 준비되고 테스트되는 동안 이전 버전의 보안 암호가 계속 작동하고 서비스 요청을 처리하기 때문에, Secrets Manager는 이 옵션을 고가용성 옵션으로 제공합니다. Secrets Manager는 클라이언트가 새 버전으로 전환할 때까지 이전 버전을 사용 중지하지 않습니다. 버전이 변경되는 동안 가동이 중지되지 않습니다.

          이 옵션을 사용하려면 Lambda 함수가 원래 사용자의 권한을 복제하고 새 사용자에게 적용해야 합니다. 이 함수는 매 교체 시마다 두 사용자 간에 교대로 적용됩니다.

          사용자에게 부여된 권한을 변경해야 하는 경우 두 사용자의 권한을 변경해야 합니다.

    • 다음을 사용하고자 합니다. Lambda 다른 암호에 대해 이미 생성한 기능

      1. 기존 Lambda 함수를 사용하여 교체 수행을 선택합니다.

      2. 드롭다운 목록에서 Lambda 함수를 선택합니다.

      3. 교체 함수의 유형을 지정합니다.

        • 단일 사용자 순환: 암호 변경 권한이 있는 사용자의 자격 증명을 저장하는 암호의 순환 기능입니다. 함수를 생성할 때 이 비밀 사용 옵션을 선택하면 생성되는 함수의 유형입니다.

        • 다중 사용자 순환: 암호를 변경할 수 없는 사용자의 자격 증명을 저장하는 암호의 순환 기능입니다. 이 함수에는 이 보안 암호 사용자의 자격 증명을 변경할 권한이 있는 사용자의 자격 증명을 저장하는 별도의 마스터 보안 암호가 필요합니다. AWS Secrets Manager에 저장한 비밀 사용 옵션을 선택하면 생성되는 함수의 유형입니다.

      4. 두 번째 "마스터 보안 암호" 옵션을 지정한 경우 마스터 사용자의 자격 증명을 제공할 수 있는 보안 암호도 선택해야 합니다. 마스터 보안 암호의 자격 증명은 이 보안 암호에 저장된 자격 증명을 업데이트할 수 있는 권한이 있어야 합니다.

  6. [Save]를 선택하여 변경 사항을 저장하고 보안 암호의 최초 교체를 트리거합니다.

  7. 보안 암호를 별도의 마스터 보안 암호로 교체하기로 선택한 경우 Lambda 교체 함수에 마스터 보안 암호에 대한 액세스 권한을 수동으로 부여해야 합니다. 다음 지침들을 따릅니다.

    1. 교체 구성이 완료되면 페이지 상단에 다음 메시지가 표시될 수 있습니다.

      당신의 비밀 <secret name> 이(가) 성공적으로 저장되었으며 비밀 순환이 활성화되었습니다. 회전 구성을 마치려면 역할 암호 값에 액세스할 수 있는 권한 <Amazon Resource Name (ARN) of your master secret>.

      이 메시지가 나타나면, 교체 함수 secretsmanager:GetSecretValue에 마스터 보안 암호에 액세스할 수 있는 권한을 부여하는 역할 정책을 수동으로 수정해야 합니다. Secrets Manager는 보안상의 이유로 이를 사용자 대신 수행할 수 없습니다. Secrets Manager에서 마스터 보안 암호에 액세스할 수 없을 경우 보안 암호 교체는 다음 단계를 완료할 때까지 실패합니다.

    2. Amazon 리소스 이름(ARN)을 메시지에서 클립보드로 복사합니다.

    3. 메시지에서 "role"이라는 단어의 링크를 선택합니다. 그러면 Secrets Manager가 생성한 Lambda 교체 함수에 연결된 역할에 대한 역할 세부 정보 페이지에 IAM 콘솔이 열립니다.

    4. [Permissions] 탭에서 [Add inline policy]를 선택한 후 다음 값을 설정합니다.

      • [Service]에서 [Secrets Manager]를 선택합니다.

      • 대상 조치, 선택 GetSecretValue.

      • [Resources]에서 [secret] 리소스 유형 항목 옆의 [Add ARN]을 선택합니다.

      • Add ARN(s)(ARN 추가) 대화 상자에 이전에 복사한 마스터 보안 암호의 ARN을 붙여 넣습니다.

    5. [Review policy], [Create policy]를 차례로 선택합니다.

      참고

      이전 단계에서 설명한 대로 시각적 편집기를 사용하는 대신 기존 정책이나 새 정책에 다음 명령문을 붙여 넣을 수 있습니다.

      { "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "<ARN of the master secret>" }
    6. AWS Secrets Manager 콘솔로 돌아갑니다.

보안 암호에 할당된 Lambda 함수에 대한 ARN이 아직 없는 경우 Secrets Manager는 함수를 생성하고 필요한 모든 권한을 할당하며 데이터베이스와 연동되도록 해당 함수를 구성합니다. Secrets Manager는 교체 간격에 지정된 일 수를 계산합니다. 0에 도달하면 Secrets Manager에서 보안 암호를 다시 교체하며 다음 주기에 대해 간격을 재설정합니다. 이 작업은 교체를 비활성화할 때까지 계속됩니다.

AWS CLI 또는 SDK 작업 사용
최소 권한

콘솔에서 교체를 활성화하고 구성하려면 다음 관리형 정책이 제공하는 권한이 있어야 합니다.

  • SecretsManagerReadWrite – 모든 Secrets Manager, Lambda 및 AWS CloudFormation 권한을 제공합니다.

  • IAMFullAccess – 역할을 만들고 권한 정책을 연결하는 데 필요한 IAM 권한 제공

다음 Secrets Manager 명령을 사용하여 지원 Amazon RDS 데이터베이스의 기존 보안 암호에 대한 교체를 구성할 수 있습니다.

또한 AWS CloudFormation 및 AWS Lambda의 명령을 사용해야 합니다. 다음 명령에 대한 자세한 내용은 해당 서비스 설명서를 참조하십시오.

중요

보안 암호에 사용해야 하는 보안 암호 값의 정확한 형식은 교체 함수에 의해 결정됩니다. 비밀 값에 대한 각 회전 기능 요구 사항에 대한 자세한 내용은 예상 SecretString 값 해당 회전 기능 아래에 입력 Lambda 교체 함수를 생성하는 데 사용할 수 있는 AWS 템플릿 .

AWS Serverless Application Repository 템플릿을 사용하여 Lambda 교체 함수 생성

다음은 AWS Management Console 사용 탭에 설명된 콘솔 기반 교체 구성과 동일한 역할을 수행하는 AWS CLI 세션의 예입니다. AWS CloudFormation 변경 세트를 사용하여 함수를 생성합니다. 그런 다음 필요한 권한을 사용하여 결과 함수를 구성합니다. 마지막으로, 완성된 함수의 ARN을 사용하여 보안 암호를 구성한 다음 한 번 교체하여 테스트합니다.

다음 예에서는 일반 템플릿을 사용하므로 위에 표시된 마지막 ARN을 사용합니다.

첫 번째 명령은 Secrets Manager가 제공한 템플릿에 따라 AWS CloudFormation 변경 세트를 설정합니다.

데이터베이스 또는 서비스가 Amazon VPC에서 제공하는 VPC에 있는 경우, 해당 VPC와 통신할 함수를 구성하는 다음 네 번째 명령을 포함해야 합니다. VPC가 없으면 명령을 건너뛸 수 있습니다.

또한 VPC가 퍼블릭 인터넷에 액세스할 권한이 없는 경우, Secrets Manager에 대한 프라이빗 서비스 엔드포인트를 사용하여 VPC를 구성해야 합니다. 이 작업은 다음 중 다섯 번째 명령이 수행합니다.

또한 템플릿에는 다음 예제와 같이 --parameter-overrides와 함께 제공된 추가 파라미터가 필요합니다. 이 파라미터의 경우 Secrets Manager가 교체 함수 생성에 영향을 미치는 두 가지 정보를 템플릿에 이름 및 값 페어로 전달해야 합니다.

  • endpoint – 교체 함수가 쿼리하게 하려는 서비스 엔드포인트의 URL입니다. 일반적으로 https://secretsmanager.region.amazonaws.com입니다.

  • functionname – 이 프로세스에서 생성되는 완료된 Lambda 교체 함수의 이름입니다.

$ aws serverlessrepo create-cloud-formation-change-set \ --application-id &region-arn;serverlessrepo:us-east-1:297356227824:applications/SecretsManagerRotationTemplate \ --parameter-overrides '[{"Name":"endpoint","Value":"https://secretsmanager.region.amazonaws.com"},{"Name":"functionName","Value":"MyLambdaRotationFunction"}]' \ --stack-name MyLambdaCreationStack { "ApplicationId": "&region-arn;serverlessrepo:us-west-2:297356227824:applications/SecretsManagerRDSMySQLRotationSingleUser", "ChangeSetId": "&region-arn;cloudformation:us-west-2:123456789012:changeSet/EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE/EXAMPLE2-90ab-cdef-fedc-ba987EXAMPLE", "StackId": "&region-arn;cloudformation:us-west-2:123456789012:stack/aws-serverless-repository-MyLambdaCreationStack/EXAMPLE3-90ab-cdef-fedc-ba987EXAMPLE" }

다음 명령은 방금 생성한 변경 세트를 실행합니다. change-set-name 파라미터는 이전 명령의 ChangeSetId 출력에서 가져옵니다. 이 명령은 출력을 생성하지 않습니다.

$ aws cloudformation execute-change-set --change-set-name &region-arn;cloudformation:us-west-2:123456789012:changeSet/EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE/EXAMPLE2-90ab-cdef-fedc-ba987EXAMPLE

다음 명령은 Secrets Manager 서비스에 사용자를 대신하여 함수를 호출할 수 있는 권한을 부여합니다. 출력에는 역할의 신뢰 정책에 추가된 권한이 표시됩니다.

$ aws lambda add-permission \ --function-name MyLambdaRotationFunction \ --principal secretsmanager.amazonaws.com \ --action lambda:InvokeFunction \ --statement-id SecretsManagerAccess { "Statement": "{\"Sid\":\"SecretsManagerAccess\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"secretsmanager.amazonaws.com\"},\"Action\":\"lambda:InvokeFunction\",\"Resource\":\"&region-arn;lambda:us-west-2:123456789012:function:MyLambdaRotationFunction\"}" }

VPC 환경에서 데이터베이스를 실행하는 경우 Secrets Manager에서는 다음 명령이 필요합니다. 그렇지 않은 경우 이 명령을 건너뜁니다. Amazon RDS 콘솔을 사용하거나 aws rds describe-instances CLI 명령을 사용하여 Amazon RDS DB 인스턴스의 VPC 정보를 찾습니다. 그런 다음 해당 정보를 다음 명령에 추가하고 실행합니다.

$ aws lambda update-function-configuration \ --function-name &region-arn;lambda:us-west-2:123456789012:function:MyLambdaRotationFunction \ --vpc-config SubnetIds=<COMMA SEPARATED LIST OF VPC SUBNET IDS>,SecurityGroupIds=<COMMA SEPARATED LIST OF SECURITY GROUP IDs>

데이터베이스 인스턴스 및 Lambda 교체 함수를 포함하는 VPC에 인터넷 액세스 권한이 없는 경우 Secrets Manager의 프라이빗 서비스 엔드포인트를 사용하여 VPC를 구성해야 합니다. 이렇게 하면 교체 함수가 VPC 내의 엔드포인트에서 Secrets Manager에 액세스할 수 있습니다.

$ aws ec2 create-vpc-endpoint --vpc-id <VPC ID> / --vpc-endpoint-type Interface / --service-name com.amazonaws.<region>.secretsmanager / --subnet-ids <COMMA SEPARATED LIST OF VPC SUBNET IDS> / --security-group-ids <COMMA SEPARATED LIST OF SECURITY GROUP IDs> / --private-dns-enabled

마스터 보안 암호가 필요한 템플릿을 사용하여 함수를 생성한 경우 함수 역할 정책에 다음 명령문을 추가해야 합니다. 이 명령문은 마스터 보안 암호에 대한 보안 암호 값을 검색할 수 있는 권한을 교체 함수에 부여합니다. 전체 지침은 교체 함수에 별도의 마스터 보안 암호에 액세스할 수 있는 권한 부여을 참조하십시오.

{ "Action": "secretsmanager:GetSecretValue", "Resource": "&region-arn;secretsmanager:region:123456789012:secret:MyDatabaseMasterSecret", "Effect": "Allow" },

마지막으로, 보안 암호에 교체 구성을 적용하고 최초 교체를 수행할 수 있습니다.

$ aws secretsmanager rotate-secret \ --secret-id production/MyAwesomeAppSecret \ --rotation-lambda-arn &region-arn;lambda:us-west-2:123456789012:function:aws-serverless-repository-SecretsManagerRDSMySQLRo-10WGBDAXQ6ZEH \ --rotation-rules AutomaticallyAfterDays=7

자체 Lambda 교체 함수를 생성하려는 경우 이전 단계에 따라 SecretsManagerRotationTemplate AWS CloudFormation 템플릿을 사용하는 것이 좋습니다. Secrets Manager에서 대부분의 권한 및 구성을 설정합니다.