교체 함수 개요Lambda - AWS Secrets Manager

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

교체 함수 개요Lambda

AWS Secrets Manager에서는 AWS Lambda 함수를 사용하여 보안 암호의 실제 교체를 수행합니다. 지원되는 데이터베이스Amazon RDS 중 하나에 대해 보안 암호를 사용하는 경우 에서는 Secrets Manager 함수를 제공합니다.Lambda 또한 Secrets Manager는 지정한 데이터베이스의 요구 사항을 충족하도록 자동으로 함수를 사용자 지정합니다. 다른 서비스에 대해 보안 암호를 사용하는 경우 Lambda 함수에 대한 코드를 입력해야 합니다.

구성된 교체 일정에 따라 또는 수동으로 교체를 트리거할 경우 파라미터가 다를 때마다 Secrets Manager에서 Lambda 함수를 여러 번 호출합니다. Lambda 함수는 보안 암호 교체 프로세스 전체에서 여러 작업을 수행합니다. 각 요청에 대해 수행되는 작업은 요청의 Step 파라미터로 지정됩니다.

Secrets Manager에서는 파라미터의 다음 JSON 요청 구조를 사용하여 Lambda 함수를 호출합니다.

{ "Step" : "request.type", "SecretId" : "string", "ClientRequestToken" : "string" }

다음은 요청의 파라미터에 대한 설명입니다.

  • Step – 호출할 교체 함수 동작의 부분을 지정합니다. 여러 값은 각각 교체 프로세스의 단계를 나타냅니다. 다음 Lambda 교체 함수의 단계 섹션에서는 각 단계에 대해 자세히 설명합니다. 독립적으로 호출되는 단계로 분리되어 있어 AWS Secrets Manager 팀에서 단계 사이에 발생해야 하는 기능을 추가할 수 있습니다.

  • secretId 보안 암호를 교체할 ID 또는 Amazon 리소스 이름(ARN)입니다. –는 처음에 보안 암호를 생성할 때 모든 보안 암호에 ARN을 할당합니다.Secrets Manager 자동으로 교체되는 버전은 레이블이 지정된 기본AWSCURRENT 버전이 됩니다.

  • clientRequestToken –가 Secrets Manager 함수에 제공하는 문자열입니다.Lambda 함수 내에서 호출하는 Secrets Manager APIs에 문자열을 전달해야 합니다. Lambda에서는 이 토큰을 사용하여 개별 호출 실패로 인해 필요한 재시도 중 요청의 멱등성을 보장합니다.Secrets Manager 이 값은 지정된 보안 암호 내에서 고유성을 보장하기 위한 UUID-type 값입니다. 이 값은 보안 암호의 새 버전의 SecretVersionId가 됩니다.

동일한 secretIdclientTokenRequest는 모든 단계를 호출합니다. 호출 시마다 Step 파라미터만 변경됩니다. 이렇게 하면 단계 사이의 모든 상태를 저장할 수 없습니다. 파라미터는 필요한 모든 정보를 —또는 AWSPENDING 또는 AWSCURRENT 레이블로 액세스한 버전의 정보 일부로 제공합니다.

서로 다른 교체 전략에 대해 각 단계에서 수행해야 하는 특정 작업에 대한 설명은 다음 주제를 참조하십시오.

Lambda 교체 함수의 단계

Lambda 교체 함수에서 기본 제공되는 기능은 개별 단계로 구분되어 있습니다. Step 파라미터는 파라미터 값 중 하나로 함수를 호출하여 각 단계를 불러옵니다.

이 Secrets Manager 릴리스에서 Secrets Manager는 자동으로 단계를 순차적으로 호출합니다. 한 단계가 끝나면 바로 Secrets Manager에서 Lambda 함수를 호출해 다음 단계를 불러옵니다.

지원되는 Amazon RDS 데이터베이스 중 하나에 대한 보안 암호를 지정하면 Secrets Manager는 표준 Lambda 함수를 사용하여 보안 암호를 교체합니다. Secrets Manager는 Lambda 함수를 제공하지만 조직의 특정 교체 요구 사항을 충족하도록 Lambda 함수를 수정할 수 있습니다.

단계CreateSecret

이 단계에서 Lambda 함수는 보안 암호의 새 버전을 생성합니다. 시나리오에 따라 새 암호를 생성하는 것만큼이나 간단할 수 있습니다. 또는 보안 리소스에 적절한 사용자 이름 및 암호를 포함하여 완전히 새로운 자격 증명 세트를 생성할 수 있습니다. Secrets Manager는 이러한 값을 보안 암호의 새 버전으로 저장합니다. Secrets Manager는 보안 암호의 기존 버전에서 연결 세부 정보와 같이 변경할 필요가 없는 보안 암호의 다른 값을 복제합니다. 그런 다음 Secrets Manager는 보안 암호의 새 버전에 AWSPENDING라는 스테이징 레이블 로 레이블을 지정합니다.

단계SetSecret

이 단계에서 교체 함수는 AWSPENDING에서 Secrets Manager 레이블이 지정된 보안 암호 버전(이전 단계에서 생성한 버전)을 검색합니다. 그런 다음 교체 함수는 데이터베이스 또는 서비스의 자격 증명 서비스를 호출해 기존 암호를 변경하거나 보안 암호에서 새 자격 증명과 일치하는 새 자격 증명을 생성합니다. 새 사용자가 생성되면 함수는 이전 사용자의 권한을 복제해야 합니다. 그러면 새 사용자가 사용자 지정 애플리케이션에서 필요에 따라 작업을 계속해서 수행할 수 있습니다.

데이터베이스 또는 서비스 인증 시스템에서 암호를 변경하거나 새 자격 증명을 생성하려면 Lambda 함수가 이러한 작업을 수행할 수 있도록 허용해야 합니다. 관리 작업으로 간주되는 작업에는 일반적으로 사용자에게 제공하지 않는 권한이 필요합니다. 교체 전략에 명시된 대로 암호를 변경하거나 기본 보안 암호에 대한 새 사용자를 생성할 수 있는 권한을 가진 두 번째 자격 증명 세트를 사용하는 것이 좋습니다. 이러한 자격 증명을 마스터 보안 암호라고 하고 Secrets Manager에서 기본 보안 암호와 별개의 보안 암호로 저장합니다. 이 마스터 보안 암호의 ARN은 교체 함수에서 사용하도록 기본 보안 암호에 저장됩니다. 마스터 보안 암호는 최종 사용자 지정 애플리케이션에서는 액세스할 필요가 없습니다. Lambda 교체 함수만 기본 보안 암호에 액세스하여 교체 발생 시 데이터베이스에서 자격 증명을 업데이트하거나 새 자격 증명을 생성할 수 있습니다.

단계TestSecret

Lambda 함수의 이 단계에서는 보안 암호의 AWSPENDING 버전을 사용하여 사용자 지정 애플리케이션에서 하는 것과 동일한 방식으로 보안 리소스에 액세스하여 이 버전의 보안 암호를 확인합니다. 애플리케이션에서 데이터베이스에 읽기 전용 상태로 액세스해야 하는 경우 이 함수는 테스트에서 읽기에 성공했는지 확인해야 합니다. 애플리케이션이 데이터베이스에 쓸 수 있어야 하는 경우 이 함수는 몇 가지 쓰기 테스트를 수행해 해당 액세스 수준을 확인해야 합니다.

단계FinishSecret

이 단계에서는 보안 암호의 이 버전에 대해 리소스 관련 마무리를 수행합니다. 이 단계를 마치면 마지막 단계에서는 Lambda 함수가 AWSCURRENT 레이블을 보안 암호의 현재 버전에서 새 버전으로 옮겨 클라이언트가 보안 암호의 새 버전을 사용하도록 해야 합니다. AWSPENDING 레이블을 제거할 수도 있지만, 기술적으로 반드시 필요한 것은 아닙니다. 이때, 기본 교체가 완료됩니다. 모든 클라이언트는 새 버전의 보안 암호를 사용합니다. 이전 버전은 AWSPREVIOUS 스테이징 레이블을 가져오며, 필요한 경우 보안 암호의 마지막으로 확인된 정상 버전으로 복구할 수 있습니다. AWSPREVIOUS 스테이징 레이블이 있는 이전 버전에는 더 이상 연결된 스테이징 레이블이 없으므로 Secrets Manager에서는 이전 버전을 사용하지 않는 것으로 간주하여 삭제할 수 있습니다.