기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
비데이터베이스 AWS Secrets Manager 보안 암호의 자동 교체 설정
이 자습서에서는 비데이터베이스 보안 암호에 대해 Lambda 함수로 교체를 설정하는 방법을 설명합니다. 교체는 주기적으로 보안 암호를 업데이트하는 프로세스입니다. 보안 암호를 교체하면 보안 암호와 보안 암호가 사용되는 데이터베이스 또는 서비스 모두에서 보안 인증이 업데이트됩니다.
데이터베이스 보안 암호는 데이터베이스 보안 암호 자동 교체(콘솔) 섹션을 참조하세요.
주의
자동 교체를 켜려면 Lambda 교체 함수에 대한 IAM 실행 역할을 생성하고 이 역할에 권한 정책을 연결할 수 있는 권한이 있어야 합니다. iam:CreateRole
및 iam:AttachRolePolicy
권한이 모두 필요합니다. 자격 증명에 이러한 권한을 부여하면 해당 자격 증명은 자신에게 모든 권한을 부여할 수 있습니다.
단계:
1단계: 일반 교체 함수 생성
시작하려면 Lambda 교체 함수를 생성합니다. 보안 암호를 교체하기 위한 코드는 포함되지 않으므로 이후 단계에서 작성하겠습니다. 교체 함수의 작동 방식에 대한 내용은 Lambda 교체 함수 단원을 참조하세요.
지원되는 리전에서는 AWS Serverless Application Repository를 사용하여 템플릿에서 함수를 생성할 수 있습니다. 지원되는 리전 목록은 AWS Serverless Application Repository FAQ
일반 교체 함수를 생성하는 방법
-
AWS Serverless Application Repository가 해당 리전에서 지원되는지 확인하려면 AWS General Reference의 AWS Serverless Application Repository endpoints and quotas 단원을 참조하세요.
-
다음 중 하나를 수행합니다.
AWS Serverless Application Repository가 해당 리전에서 지원되는 경우:
탐색 창에서 애플리케이션을 선택한 다음 애플리케이션 생성을 선택합니다.
애플리케이션 생성 페이지에서 서버리스 애플리케이션 탭을 선택합니다.
퍼블릭 애플리케이션 아래의 검색 상자에
SecretsManagerRotationTemplate
을 입력합니다.Show apps that create custom IAM roles or resource policies를 선택합니다.
SecretsManagerRotationTemplate 타일을 선택합니다.
-
검토, 구성 및 배포 페이지의 애플리케이션 설정 타일에서 필수 필드를 채웁니다.
엔드포인트의 경우
https://
를 포함하여, 리전의 엔드포인트를 입력합니다. 엔드포인트 목록은 AWS Secrets Manager 엔드포인트 섹션을 참조하세요.Lambda 함수를 VPC에 입력하려면 vpcSecurityGroupIds 및 vpcSubnetIds를 포함합니다.
배포를 선택합니다.
AWS Serverless Application Repository가 해당 리전에서 지원되지 않는 경우:
Lambda 콘솔 페이지의 함수를 선택하고 함수 생성을 선택합니다.
함수 생성 페이지에서 다음을 수행합니다.
새로 작성을 선택합니다.
Function name(함수 이름)에 교체 함수의 이름을 입력합니다.
Runtime(런타임)에서 Python 3.9를 선택합니다.
함수 생성(Create function)을 선택합니다.
2단계: 교체 함수 코드 작성
이 단계에서는 보안 암호를 업데이트하고, 보안 암호가 사용되는 서비스 또는 데이터베이스를 업데이트하는 코드를 작성합니다. 교체 함수를 직접 작성할 경우에 대한 팁을 포함하여, 교체 함수의 기능에 대한 자세한 내용은 Lambda 교체 함수 단원을 참조하세요. 교체 함수 템플릿도 참조로 사용할 수 있습니다.
3단계: 보안 암호에 대한 교체 구성
이 단계에서는 보안 암호에 대한 교체 일정을 설정하고, 교체 함수를 보안 암호에 연결합니다.
교체를 구성하고 교체 함수를 생성하려면
https://console.aws.amazon.com/secretsmanager/
에서 Secrets Manager 콘솔을 엽니다. -
보안 암호(Secrets) 페이지에서 보안 암호를 선택합니다.
-
보안 암호 세부 정보(Secret details) 페이지의 교체 구성(Rotation configuration) 섹션에서 교체 편집(Edit rotation)을 선택합니다. Edit rotation configuration(교체 구성 편집) 대화 상자에서 다음을 수행합니다.
Automatic rotation(자동 교체)을 켭니다.
-
Rotation schedule(교체 일정)에서 Schedule expression builder(예약 표현식 빌더) 또는 Schedule expression(예약 표현식)으로 일정(UTC 표준 시간대)을 입력합니다. Secrets Manager는 일정을
rate()
또는cron()
표현식으로 저장합니다. 교체 기간은 Start time(시작 시간)을 지정하지 않는 한 자정에 자동으로 시작됩니다. 보안 암호를 4시간마다 교체할 수 있습니다. 자세한 내용은 교체 일정 단원을 참조하십시오. -
(선택 사항) Window duration(지속 시간)에서 Secrets Manager가 보안 암호를 교체할 기간의 길이를 입력합니다. 예를 들어
3h
는 3시간입니다. 기간은 그 다음 교체 기간까지 연장되지 않아야 합니다. 시간 단위의 교체 일정에서 지속 시간을 지정하지 않으면 한 시간 후에 자동으로 종료됩니다. 일 단위의 교체 일정인 경우 해당 날짜의 하루가 끝나면 자동으로 종료됩니다. (선택 사항) 변경 사항을 저장할 때 보안 암호가 교체되게 하려면 보안 암호를 저장할 때 즉시 교체(Rotate immediately when the secret is stored)를 선택합니다. 확인란의 선택을 취소하는 경우에는 설정한 예약에 따라 첫 번째 교체가 시작됩니다.
교체 함수에서 1단계에서 생성한 Lambda 함수를 선택합니다.
Save(저장)를 선택합니다.
4단계: 교체 함수가 Secrets Manager와 데이터베이스 또는 서비스에 액세스하도록 허용
Lambda 교체 함수에는 Secrets Manager의 보안 암호에 액세스할 수 있는 권한과, 데이터베이스 또는 서비스에 액세스할 수 있는 권한이 필요합니다. 이 단계에서는 Lambda 실행 역할에 이러한 권한을 부여합니다. AWS 관리형 키 aws/secretsmanager
이외의 KMS 키를 사용하여 보안 암호를 암호화할 경우 Lambda 실행 역할에 키 사용 권한을 부여해야 합니다. SecretARN 암호화 컨텍스트를 사용하여 암호 해독 기능의 사용을 제한할 수 있으므로 교체 함수 역할은 교체를 담당하는 암호의 암호 해독에만 액세스할 수 있습니다. 정책 예시는 교체 권한 섹션을 참조하세요.
지침은 AWS Lambda 개발자 안내서의 Lambda 실행 역할을 참조하세요.
5단계: Secrets Manager가 교체 함수를 간접적으로 호출하도록 허용
Secrets Manager가 설정한 교체 일정에 따라 교체 함수를 간접적으로 호출하도록 허용하려면, Lambda 함수의 리소스 정책에서 Secrets Manager 서비스 보안 주체에게 lambda:InvokeFunction
권한을 부여해야 합니다.
교체 함수에 대한 리소스 정책에서는 컨텍스트 키 aws:SourceAccount
를 포함하여 Lambda가 혼동된 대리자로 사용되지 않도록 하는 것이 좋습니다. 일부 AWS 서비스의 경우 혼동된 대리자 시나리오를 방지하기 위해 aws:SourceArn
및 aws:SourceAccount
전역 조건 키를 모두 사용하는 것을 AWS에서는 권장합니다. 그러나 교체 함수 정책에 aws:SourceArn
조건을 포함하는 경우 교체 함수는 해당 ARN에서 지정한 보안 암호를 교체하는 데만 사용할 수 있습니다. 여러 보안 암호에 대해 교체 기능을 사용할 수 있도록 컨텍스트 키 aws:SourceAccount
만 포함하는 것이 좋습니다.
리소스 정책을 Lambda 함수에 연결하려면 Lambda에 대한 리소스 기반 정책 사용을 참조하세요.
다음 정책에서는 Secrets Manager가 Lambda 함수를 간접적으로 호출하도록 허용하는 방법을 보여줍니다.
{ "Version": "2012-10-17", "Id": "default", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "secretsmanager.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Condition": { "StringEquals": { "AWS:SourceAccount": "
123456789012
" } }, "Resource": "LambdaRotationFunctionARN
" } ] }
6단계: 교체 함수에 대한 네트워크 액세스 설정
이 단계에서는 교체 함수가 Secrets Manager에 연결하고, 보안 암호가 사용되는 서비스 또는 데이터베이스에도 연결할 수 있도록 허용합니다. 보안 암호를 교체하려면 교체 함수가 두 가지 모두에 액세스할 수 있어야 합니다. Lambda 교체 함수에 대한 네트워크 액세스 섹션을 참조하세요.
다음 단계
3단계에서 교체를 구성한 경우, 보안 암호를 교체하기 위한 일정을 설정합니다. 예약된 시간에 교체가 실패하면 Secrets Manager는 교체를 여러 번 시도합니다. 보안 암호 즉시 교체의 지침에 따라 즉시 교체를 시작할 수도 있습니다.
교체에 실패한 경우 교체 문제 해결 단원을 참조하세요.