aws secrets manager · 2020. 12. 2. · aws secrets manager 사용 설명서 secrets manager의...

201
AWS Secrets Manager 사용 설명서

Upload: others

Post on 19-Jan-2021

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager사용 설명서

Page 2: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서

AWS Secrets Manager: 사용 설명서Copyright © Amazon Web Services, Inc. and/or its affiliates. All rights reserved.

Amazon의 상표 및 트레이드 드레스는 Amazon이 제공하지 않는 제품 또는 서비스와 관련하여 고객에게 혼동을 유발할수 있는 방식 또는 Amazon을 폄하하거나 평판에 악영향을 주는 방식으로 사용될 수 없습니다. Amazon이 소유하지 않은기타 모든 상표는 Amazon과 제휴 관계이거나 관련이 있거나 후원 관계 여부에 관계없이 해당 소유자의 자산입니다.

Page 3: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서

Table of ContentsAWS Secrets Manager란 무엇입니까? ................................................................................................... 1

Secrets Manager 시작하기 ........................................................................................................... 1기본 Secrets Manager 시나리오 ................................................................................................... 1Secrets Manager 기능 ................................................................................................................. 2

런타임에 프로그래밍 방식으로 암호화 된 비밀 값 검색 ............................................................. 2는 서로 다른 유형의 보안 암호를 저장합니다. ......................................................................... 2비밀 데이터 암호화 ............................................................................................................. 3비밀을 자동으로 회전 .......................................................................................................... 3보안 암호에 대한 액세스 제어 .............................................................................................. 4

표준 준수 .................................................................................................................................. 4Secrets Manager 액세스 .............................................................................................................. 6Secrets Manager 요금 ................................................................................................................. 7

AWS KMS — 사용자 지정 암호화 키 ..................................................................................... 7AWS CloudTrail 로깅 — 스토리지 및 알림 .............................................................................. 7

AWS Secrets Manager 에 대한 Support 및 의견 .............................................................................. 7시작하기 ............................................................................................................................................ 9

용어 및 개념 .............................................................................................................................. 9Secret ............................................................................................................................... 9보안 서비스 ...................................................................................................................... 11Rotation ........................................................................................................................... 11스테이징 레이블 ............................................................................................................... 12Versioning ........................................................................................................................ 12

자습서 ............................................................................................................................................. 14자습서: 비밀 만들기 및 검색 ....................................................................................................... 14

Prerequisites .................................................................................................................... 14단계 1: AWS Secrets Manager에서 보안 암호 생성 및 저장 ..................................................... 14

자습서: AWS 데이터베이스의 보안 암호 교체 ................................................................................ 17Prerequisites .................................................................................................................... 17필수 권한 ......................................................................................................................... 18테스트 MySQL 데이터베이스 구성 ....................................................................................... 18단계 2: 보안 암호 생성 ...................................................................................................... 19단계 3: 최초 보안 암호 확인 ............................................................................................... 20단계 4: 보안 암호에 대한 교체 구성 ..................................................................................... 21단계 5: 교체 성공 확인 ...................................................................................................... 21단계 6: 정리 ..................................................................................................................... 22

자습서: 마스터 암호로 사용자 암호 회전 ....................................................................................... 22Prerequisites .................................................................................................................... 17단계 1: 데이터베이스 및 사용자 보안 암호에 대한 새 사용자 만들기 .......................................... 23단계 2: 초기 비밀의 유효성 검사 ......................................................................................... 24단계 3: 비밀에 대한 순환 구성 ............................................................................................ 24단계 4: 순환 성공 확인 ...................................................................................................... 24단계 5: 정리 ..................................................................................................................... 25

모범 사례 ......................................................................................................................................... 26추가적인 중요 정보 보호 ............................................................................................................ 26AWS 제공 클라이언트 측 캐싱 구성 요소를 사용하여 성능 개선 ....................................................... 26애플리케이션에 재시도 횟수 추가 ................................................................................................ 27Lambda 함수를 로깅하고 디버깅할 때의 위험 완화 ........................................................................ 28AWS CLI를 사용하여 비밀을 저장할 때의 위험 완화 ....................................................................... 28교차 계정 액세스 — 사용자/역할 또는 계정을 지정해야 합니까? ....................................................... 29VPC 모두 실행 ......................................................................................................................... 30암호에 태그를 지정합니다. ......................................................................................................... 30

보안 암호에 대한 속성 기반 액세스 제어 (ABAC) 구현 ............................................................ 31일정에 따라 보안 암호 교체 ........................................................................................................ 32암호에 대한 액세스 감사 ............................................................................................................ 32

iii

Page 4: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서

AWS Config를 사용하여 보안 암호 모니터링 ................................................................................. 32Secrets Manager 사용하여 Lambda 함수에 데이터베이스 자격 증명 제공 .......................................... 32모범 사례에 대한 추가 리소스 ..................................................................................................... 32

AWS Secrets Manager 대한 인증 및 액세스 제어 .................................................................................. 34.............................................................................................................................................. 34

개요 ........................................................................................................................................ 34Authentication ................................................................................................................... 35액세스 제어 및 권한 부여 ................................................................................................... 36

비밀에 대한 액세스 권한 결정 ..................................................................................................... 42정책 평가 ......................................................................................................................... 42리소스 정책 검사 .............................................................................................................. 43IAM 정책 검사 .................................................................................................................. 44

보안 Secrets Manager 대한 자격 증명 기반 정책 (IAM 정책) 및 ABAC 사용 ........................................ 45Secrets Manager 대한 AWS 관리형 정책 .............................................................................. 45사용자에게 전체 Secrets Manager 관리자 권한 부여 .............................................................. 46하나의 비밀에 대한 읽기 액세스 권한 부여 ........................................................................... 46특정 작업에 대한 액세스 제한 ............................................................................................. 47특정 보안 암호에 대한 액세스 제한 ...................................................................................... 47특정 스테이징 레이블 또는 태그 (ABAC) 를 사용하여 비밀에 대한 액세스 제한 ............................ 48별도의 마스터 암호에 액세스할 수 있는 순환 함수 권한 부여 ................................................... 49

보안 Secrets Manager 대한 리소스 기반 정책 사용 ........................................................................ 51보안 주체의 보안 암호에 제어된 .......................................................................................... 51역할에 대한 읽기 전용 액세스 권한 부여 .............................................................................. 52

보안 암호 생성 및 관리 ...................................................................................................................... 53보안 암호 생성 ......................................................................................................................... 53보안 암호 수정 ......................................................................................................................... 57Secrets 값 검색 ........................................................................................................................ 62

AWS에서 개발한 오픈 소스 클라이언트 측 캐싱 구성 요소 사용 ................................................ 63비밀 Secrets Manager 에 대 한 향상 된 검색 기능 ......................................................................... 64

필터 없이 검색 사용 .......................................................................................................... 65비밀 삭제 및 복원 ..................................................................................................................... 66보안 암호에 리소스 기반 정책 관리 ............................................................................................. 71

보안 암호에 리소스 기반 정책 연결 ...................................................................................... 72보안 암호에서 리소스 기반 정책 검색 .................................................................................. 75보안 암호에서 리소스 기반 정책 삭제 .................................................................................. 75

다중 영역 Secrets Manager 만들기 및 관리 .................................................................................. 76기본 및 복제본 암호 구성 ................................................................................................... 77비밀 관리자에서 다중 지역 비밀 관리 .................................................................................. 80

보안 암호 교체 ................................................................................................................................. 83보안 암호를 자동으로 교체하는 데 필요한 권한 ............................................................................. 83

교체를 구성하는 사용자의 권한과 교체를 트리거하는 사용자의 권한 ......................................... 83Lambda 교체 함수와 연결된 권한 ........................................................................................ 84

보안 암호 교체를 지원하도록 네트워크 구성 ................................................................................. 86교체 Amazon RDS .................................................................................................................... 86

Amazon RDS 데이터베이스 암호에 대한 순환 활성화 ............................................................. 88보안 Secrets Manager 에 의해 제공되는 Lambda 교체 함수 사용자 지정 .................................... 93

Amazon Redshift 보안 암호 교체 ................................................................................................. 94Amazon Redshift 보안 암호에 교체 활성화 ........................................................................... 95

Amazon DocumentDB 보안 암호 교체 ........................................................................................ 101Amazon DocumentDB 암호에 대한 순환 활성화 ................................................................... 102

기타 보안 암호 교체 ................................................................................................................ 107기타 보안 암호 교체 ........................................................................................................ 108다른 데이터베이스 또는 서비스에 대한 보안 암호 교체를 활성화하는 경우 ................................ 110

Lambda 회전 함수 이해 및 사용자 지정 ...................................................................................... 112Lambda 교체 함수 개요 ................................................................................................... 113보안 암호 교체 - 단일 사용자, 단일 암호 ............................................................................. 116보안 암호 교체 - 기존 사용자 간에 전환 .............................................................................. 119

iv

Page 5: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서

보안 암호 교체 - 암호만 ................................................................................................... 122교체 함수 삭제 ........................................................................................................................ 125

VPC 엔드포인트로 Secrets Manager 사용하기 ..................................................................................... 129VPC 엔드포인트를 통해 Secrets Manager에 연결 ......................................................................... 129Secrets Manager VPC 프라이빗 엔드포인트 생성 ......................................................................... 130Secrets Manager VPC 프라이빗 엔드포인트에 연결 ..................................................................... 132정책 설명에 VPC 프라이빗 엔드포인트 사용 ................................................................................ 132Secrets Manager VPC 엔드포인트의 엔드포인트 정책 생성 ........................................................... 134Secrets Manager VPC 엔드포인트 사용 감사 ............................................................................... 135

보안 암호 모니터링 ......................................................................................................................... 137AWS AWS CloudTrail 을 사용하여 AWS Secrets Manager API 호출 로깅 ......................................... 137

AWS Secrets Manager 비 API 이벤트 로깅 ......................................................................... 137CloudTrail 의 보안 Secrets Manager 정보 ........................................................................... 138Secrets Manager 로그 파일 항목 검색 ................................................................................ 138보안 Secrets Manager 로그 파일 항목 이해 ......................................................................... 139

Amazon CloudWatch Events ..................................................................................................... 140삭제하도록 예약된 보안 암호 버전 모니터링 ........................................................................ 141

다른 서비스와 함께 사용 .................................................................................................................. 143AWS CloudFormation 을 사용하여 비밀의 생성 자동화 ................................................................. 143AWS Config를 사용하여 보안 암호 모니터링 ............................................................................... 143AWS Identity and Access Management (IAM) 를 사용하여 보안 암호 보호 ........................................ 144AWS CloudTrail 및 아마존 클라우드워치로 비밀 모니터링 ............................................................. 144AWS KMS 로 비밀 암호화 ........................................................................................................ 144파라미터 스토어 API로 보안 암호 검색 ....................................................................................... 145Amazon Elastic Secrets Manager tainer Service 통합 ................................................................... 145AWS Secrets Manager와 AWS Fargate 의 통합 ........................................................................... 145AWS IoT Greengrass와 보안 Secrets Manager 통합 ..................................................................... 145Secrets Manager SageMaker 리포지토리 자격 증명 관리 .............................................................. 146Security Hub 사용 하 여 보안 모범 사례 Secrets Manager ............................................................. 146Secrets Manager 사용하여 AWS CodeBuild 레지스트리 자격 증명 저장 ........................................... 146Secrets Manager 사용하여 Amazon EMR 레지스트리 자격 증명 저장 .............................................. 147Secrets Manager 리소스 정책과 젤 코바 통합 .............................................................................. 147AWS CloudFormation 에서 보안 생성 자동화 ............................................................................... 147

Examples ....................................................................................................................... 148AWS Config 를 사용하여 Secrets Manager 비밀 모니터링 ............................................................. 153

AWS Config 를 통해 비밀을 추적하는 이점 ......................................................................... 153보안 관리자 AWS Config 에서 지원되는 규칙 ...................................................................... 154AWS Config 를 사용하여 비밀 관리 모범 사례 구현 .............................................................. 154AWS Config Secrets Manager 규칙 구성 ............................................................................ 155보안 암호 관리를 위한 AWS Config 다중 계정 다중 리전 데이터 집계자 구성 ............................. 156

Secrets Manager 비밀을 Kubernetes 비밀 저장소 CSI 드라이버와 통합 ........................................... 156Prerequisites .................................................................................................................. 157CSI 드라이버 설치 .......................................................................................................... 157

AWS SecRts Manager에서 제공하는 보안 .......................................................................................... 161AWS Secrets Manager 에서 데이터 보호 .................................................................................... 161

저장 데이터 암호화 ......................................................................................................... 162전송 중 데이터 암호화 ..................................................................................................... 162암호화 키 관리 ................................................................................................................ 162인터네트워크 트래픽 개인 정보 보호 .................................................................................. 162

인프라 보안 ............................................................................................................................ 163복원성 ................................................................................................................................... 163규정 준수 확인 ........................................................................................................................ 163

AWS Secrets Manager ..................................................................................................................... 164AWS Secrets Manager AWS KMS 사용하는 방법 ........................................................................ 164

암호 값 보호 ................................................................................................................... 164암호 암호화 및 해독 ........................................................................................................ 165AWS KMS CMK 사용 ...................................................................................................... 166

v

Page 6: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서

CMK 사용 권한 부여 ........................................................................................................ 167Secrets Manager 암호화 컨텍스트 ..................................................................................... 168AWS KMS 와의 Secrets Manager 상호 작용 모니터링 .......................................................... 170

AWS Secrets Manager 를 위한 할당량 ....................................................................................... 171이름에 대한 제한 사항 ..................................................................................................... 172최대 할당량 .................................................................................................................... 172비율 할당량 .................................................................................................................... 172

교체 함수 템플릿 ..................................................................................................................... 173아마존 RDS 데이터베이스용 템플릿 ................................................................................... 174다른 데이터베이스용 템플릿 ............................................................................................. 178다른 서비스용 템플릿 ...................................................................................................... 179

관리형 정책 ............................................................................................................................ 180작업, 리소스 및 콘텍스트 키 ..................................................................................................... 180

작업 .............................................................................................................................. 180리소스 ........................................................................................................................... 180콘텍스트 키 .................................................................................................................... 181

AWS SecRets Manager ................................................................................................................... 184일반적인 문제 해결 ................................................................................................................. 184

AWS Secret Manager에 요청을 전송하면 “액세스 거부됨” 메시지가 표시됩니다. ........................ 184임시 보안 자격 증명으로 요청을 전송하면 "액세스 거부됨" 메시지가 표시됩니다. ....................... 184변경 사항이 경우에 따라 즉시 표시되지 않습니다. ................................................................ 185보안 암호를 생성할 때 “비대칭 CMK로 데이터 키를 생성할 수 없습니다.”라는 메시지가 나타납니다. ................................................................................................................................ 185

교체 문제 해결 ........................................................................................................................ 185Lambda 교체 함수에 대한 진단 로그를 찾는 방법 ................................................................. 186교체가 시작되는 시기를 예측할 수 없음 .............................................................................. 186보안 암호 교체를 구성하려고 할 때 "액세스 거부됨" .............................................................. 186교체를 활성화한 후 첫 번째 교체가 실패함 .......................................................................... 186보안 암호 값의 형식이 교체 함수에서 요구하는 대로 지정되지 않았기 때문에 교체가 실패합니다. .. 187보안 Secrets Manager 교체를 성공적으로 구성했지만 암호가 교체되고 있지 않다는 메시지를 표시함 .............................................................................................................................. 187교체가 "Internal failure(내부 오류)" 메시지와 함께 실패함 ...................................................... 187CloudTrail 에서 교체 중 액세스가 거부되었다는 오류를 표시함 ............................................... 188

HTTPS 쿼리 요청 실행 .................................................................................................................... 189Endpoints ............................................................................................................................... 189HTTPS 필요 ........................................................................................................................... 189Secrets Manager 에 대한 API 요청에 서명 .................................................................................. 190

문서 기록 ....................................................................................................................................... 191AWS 용어집 ................................................................................................................................... 194................................................................................................................................................... cxcv

vi

Page 7: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Secrets Manager 시작하기

AWS Secrets Manager란 무엇입니까?

과거에는 데이터베이스에서 정보를 검색하는 사용자 지정 애플리케이션을 생성하면 일반적으로 데이터베이스에 액세스하기 위한 자격 증명(보안 암호)을 애플리케이션에 직접 포함시켰습니다. 자격 증명을 교체할 시기가 되면 새 자격 증명을 생성하는 것보다 더 많은 작업을 해야 했습니다. 시간을 들여 새 자격 증명을 사용하도록 애플리케이션을 업데이트해야 했습니다. 그런 다음 업데이트된 애플리케이션을 배포했습니다. 자격증명을 공유하는 애플리케이션이 여러 개 있는데 이러한 애플리케이션 중 하나를 업데이트하지 못한 경우 해당 애플리케이션에 오류가 발생합니다. 이러한 위험 때문에 많은 고객들은 정기적으로 자격 증명을 교체하지않기로 결정하며, 이 위험 대신 다른 위험에 직면하게 됩니다.

Secrets Manager 는 코드의 암호를 포함해 하드 코딩된 자격 증명을 SecreSecrets Manager 에서 프로그래밍 방식으로 보안 암호를 검색하도록 하는 API 호출로 바꿀 수 있습니다. 이렇게 하면 보안 암호가 코드에 더이상 존재하지 않기 때문에 코드를 검사하는 누군가에 의해 보안 암호가 손상되지 않도록 방지할 수 있습니다. 또한 사용자가 지정된 일정에 따라 SecreSecrets Manager 가 자동으로 보안 암호를 교체하도록 구성할수 있습니다. 따라서 단기 보안 암호로 장기 보안 암호를 교체할 수 있어 손상 위험이 크게 줄어듭니다.

Secrets Manager 시작하기보안 Secrets Manager 최대한 활용하기 위해 여러분이 이해해야 하는 용어 및 개념 목록은AWS SecretsManager 에 사용되는 주요 용어 및 개념 (p. 9)를 선택합니다.

Secrets Manager 의 일반적인 사용자에게는 다음 역할 중 하나 이상이 있을 수 있습니다.

• Secrets Manager 관리자 — Secrets Manager 서비스를 관리합니다. 여기 나열된 다른 역할을 수행할 수있는 개인에게 권한을 부여합니다.

• 데이터베이스 또는 서비스 관리자 — Secrets Secrets Manager 에 저장된 보안 암호를 사용하여 데이터베이스 또는 서비스를 관리합니다. 자신의 보안 암호에 대한 교체 및 만료 설정을 결정하고 구성합니다.

• 응용 프로그램 개발자 — 응용 프로그램을 생성하고 Secrets Manager 에서 적절한 자격 증명을 요청하도록 애플리케이션을 구성합니다.

기본 Secrets Manager 시나리오다음은 이 기본 시나리오를 설명한 다이어그램입니다. 이 다이어그램은 Secrets Manager 에서 데이터베이스의 자격 증명을 저장한 후 이 애플리케이션에서 자격 증명을 사용하여 데이터베이스에 액세스할 수 있습니다.

1

Page 8: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Secrets Manager 기능

1. 데이터베이스 관리자가 MyCustomApp라는 애플리케이션에서 사용할 수 있도록 인력 데이터베이스에 대한 자격 증명 세트를 생성합니다. 또한 관리자는 이 애플리케이션에서 인력 데이터베이스에 액세스하는데 필요한 권한을 사용하여 이러한 자격 증명을 구성합니다.

2. 데이터베이스 관리자는 자격 증명을 보안 암호 Secrets Manager 로 저장합니다.MyCustomAppCreds를선택합니다. 그런 다음 Secrets Manager에서 자격 증명을 암호화하여 보안 암호 내에 저장합니다.보호된비밀 텍스트를 선택합니다.

3. MyCustomApp App에서 데이터베이스에 액세스하는 경우 이 애플리케이션은 보안 Secrets ManagerMyCustomAppCreds.

4. Secrets Secrets Manager 는 보안 암호를 검색하고 보호되는 보안 암호 텍스트의 암호를 해독해 보안(TLS를 통한 HTTPS) 채널을 통해 클라이언트 앱에 보안 암호를 반환합니다.

5. 이 클라이언트 애플리케이션은 응답에서 자격 증명, 연결 문자열 및 기타 필요한 정보를 구문 분석한 다음이러한 정보를 사용해 데이터베이스 서버에 액세스합니다.

Note

Secrets Manager 에서는 많은 유형의 보안 암호를 지원합니다. 그러나 Secrets Manager기본자격증명 교체지원되는 AWS 데이터베이스 (p. 4)추가 프로그래밍없이. 하지만 다른 데이터베이스또는 서비스에 대한 보안 암호를 교체하려면 Secrets Manager 가 데이터베이스 또는 서비스와 상호 작용하는 방식을 정의하는 사용자 지정 Lambda 함수를 생성해야 합니다. 이러한 함수를 생성하려면 몇 가지 프로그래밍 기술이 필요합니다. 자세한 내용은 AWS Secrets Manager 보안 암호 교체 (p. 83) 단원을 참조하세요.

Secrets Manager 기능런타임에 프로그래밍 방식으로 암호화 된 비밀 값 검색SecreSecrets Manager 는 애플리케이션 소스 코드에서 하드 코딩된 자격 증명을 제거하고 애플리케이션 자체에 자격 증명을 저장하지 않음으로써 보안 상태를 개선할 수 있습니다. 애플리케이션에 자격 증명을 저장하면 애플리케이션 또는 애플리케이션의 구성 요소를 조사할 수 있는 모든 사람으로 인해 자격 증명이 손상될 수 있습니다. 이전 자격 증명을 사용 중지하기 전에 애플리케이션을 업데이트하고 모든 클라이언트에 변경 사항을 배포해야 하기 때문에 자격 증명을 교체하는 것이 어려워집니다.

Secrets Manager는 저장된 자격 증명을 Secrets Manager 웹 서비스에 대한 런타임 호출로 바꿀 수 있으며필요할 때 자격 증명을 동적으로 검색할 수 있습니다.

대부분의 경우 고객은 암호화된 보안 암호 값의 최신 버전에 액세스하고자 합니다. 암호화된 보안 암호 값을쿼리하는 경우 버전 정보를 전혀 지정하지 않고 보안 암호 이름 또는 Amazon 리소스 이름(ARN)만 제공하도록 선택할 수 있습니다. 이렇게 하면 SecreSecrets Manager 는 자동으로 보안 암호 값의 최신 버전을 반환합니다.

하지만 다른 버전도 동시에 존재할 수 있습니다. 대부분의 시스템에서는 연결 세부 정보, 사용자 ID 및 암호가 포함된 전체 자격 증명 세트와 같이 단순한 암호보다 복잡한 보안 암호를 지원합니다. Secrets Manager사용하면 이러한 자격 증명의 여러 집합을 동시에 저장할 수 있습니다. Secrets Manager 에서는 각 세트를서로 다른 버전의 보안 암호로 저장합니다. 보안 암호 교체 프로세스 동안 SecreSecrets Manager 는 교체가완료될 때까지 이전 자격 증명과 사용하려는 새 자격 증명을 추적합니다. 스테이징 레이블 (p. 12)을 사용하여 이렇게 서로 다른 버전을 추적할 수 있습니다.

는 서로 다른 유형의 보안 암호를 저장합니다.SecreSecrets Manager 에서는 텍스트를 보안 암호의 암호화된 보안 암호 데이터로 저장할 수 있습니다. 일반적으로 여기에는 데이터베이스나 서비스의 연결 세부 정보가 포함됩니다. 세부 정보에는 서버 이름, IP 주

2

Page 9: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서비밀 데이터 암호화

소 및 포트 번호 등과 같이 서비스에 로그인하는 데 사용되는 사용자 이름 및 암호 등이 포함될 수 있습니다.보안 암호에 대한 자세한 내용은 최대 및 최소값을 참조하십시오. 다음은 보호되는 텍스트에 포함되지 않습니다.

• 보안 암호 이름 및 설명• 교체 또는 만료 설정• 보안 암호에 연결된 AWS KMS 고객 마스터 키 (CMK) 의 ARN• 연결된 모든 AWS 태그

비밀 데이터 암호화Secrets Manager를 사용하여 보안 암호의 보호된 텍스트를 암호화합니다.AWS Key ManagementService(AWS KMS)를 선택합니다. 많은 AWS 서비스는 키 스토리지 및 암호화에 AWS KMS 를 사용합니다.AWS KMS 는 저장 시 비밀의 보안 암호화를 보장합니다. Secrets Manager 모든 비밀을 AWS KMS CMK와연결합니다. 계정의 보안 Secrets Manager 대한 기본 CMK를 사용하거나 고객이 만든 CMK를 사용할 수 있습니다.

SecreSecrets Manager 는 새 버전의 보호된 보안 암호 데이터를 암호화할 때마다 SecreSecrets ManagerAWS KMS 에 지정된 CMK에서 새 데이터 키를 생성하도록 요청합니다. Secrets Manager 는이 데이터 키를봉투 암호화를 선택합니다. Secrets Manager 에서는 암호화된 데이터 키를 보호되는 보안 암호 데이터와 함께 저장합니다. 보안 암호가 복호화해야 할 때마다 보안 Secrets Manager AWS KMS 에서 데이터 키를 복호화하도록 요청합니다. 그런 다음 보안 암호 데이터의 암호를 해독하는 데 이 데이터 키를 사용합니다.Secrets Manager 는 데이터 키를 암호화하지 않은 형태로 저장하지 않으며 사용 후에는 항상 데이터 키를 즉시 폐기합니다.

또한 Secrets Manager 는 기본적으로 개방형 표준을 사용하는 호스트에서 보낸 요청 만 수락합니다.TLS(전송 계층 보안)및완벽한 전송 보안 암호를 선택합니다. SecreSecrets Manager 는 보안 암호를 검색하는 데 사용하는 컴퓨터 간에 보안 암호를 전송할 때에도 암호화되도록 보장합니다.

비밀을 자동으로 회전사용자의 개입 없이 지정한 일정에 따라 자동으로 보안 암호를 교체하도록 Secrets Secrets Manager 를 구성할 수 있습니다.

AWS Lambda 함수를 사용하여 교체 정의 및 구현합니다. 이 함수는 Secrets Manager 에서 다음 작업을 수행하는 방법을 정의합니다.

• 새로운 버전의 보안 암호를 생성합니다.• Secrets Manager에 보안 암호를 저장합니다.• 새 버전을 사용하도록 보호된 서비스를 구성합니다.• 새 버전을 확인합니다.• 새 버전을 프로덕션용으로 표시합니다.

스테이징 레이블을 사용하면 보안 암호의 여러 버전을 추적할 수 있습니다. 각 버전에는 스테이징 레이블이여러 개 연결될 수 있지만, 각 스테이징 레이블은 한 가지 버전에만 연결할 수 있습니다. 예를 들어 SecretsManager 는 현재 사용 중인 보안 암호의 활성 버전에는AWSCURRENT를 선택합니다. 항상 최신 보안 암호 버전을 쿼리하도록 애플리케이션을 구성해야 합니다. 교체 프로세스에서 보안 암호의 새 버전을 생성하는 경우SecreSecrets Manager 는 스테이징 레이블을 자동으로 추가합니다.AWSPENDING를 테스트 및 유효성 검사가 완료 될 때까지 새 버전으로 업그레이드하십시오. 그런 다음에야 Secrets ManagerAWSCURRENT새 버전에 스테이징 레이블을 추가합니다. 애플리케이션에서 다음에 AWSCURRENT 버전을 쿼리하면 바로 새 보안 암호를 사용하기 시작합니다.

3

Page 10: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서보안 암호에 대한 액세스 제어

완전하게 구성되고 즉시 사용 가능한 순환 지원 기능이 있는 데이터베이스교체를 활성화하도록 선택하면 Secrets Manager 는 AWS 가 작성하고 테스트한 Lambda 교체 함수 템플릿및 교체 프로세스의 전체 구성을 사용하여 다음 Amazon RDS (Amazon Relational Database Service) 데이터베이스를 지원합니다.

• Amazon RDS의 Amazon Aurora• Amazon RDS의 MySQL• Amazon RDS의 PostgreSQL• Amazon RDS의 Oracle• Amazon RDS의 MariaDB• Amazon RDS의 Microsoft SQL Server

완전하게 구성되고 즉시 사용 가능한 순환 지원을 제공하는 기타서비스AWS 작성 및 테스트한 Lambda 교체 함수 템플릿 및 교체 프로세스의 전체 구성을 완전히 지원하는 다음 서비스에서 교체를 활성화하도록 선택할 수 있습니다.

• Amazon DocumentDB• Amazon Redshift

대부분의 다른 유형 데이터베이스 또는 서비스에 대한 보안 암호를 저장할 수도 있습니다. 하지만 보안 암호를 자동으로 교체하기 위해서는 사용자 지정 Lambda 교체 함수를 생성하고 구성해야 합니다. 데이터베이스또는 서비스에 대한 사용자 지정 Lambda 함수를 작성하는 방법에 대한 자세한 내용은 단원을 참조하십시오.Lambda 교체 함수 개요 (p. 113)를 선택합니다.

보안 암호에 대한 액세스 제어특정 보안 암호에 대한 액세스 권한을 부여하거나 거부하려는 사용자, 그룹 및 역할에 IAM (ID and AccessManagement) 권한 정책을 연결해 해당 보안 암호의 관리를 제한할 수 있습니다. 예를 들어, 보안 암호를 완전히 관리 및 구성하는 권한이 필요한 구성원이 있는 그룹에 정책 하나를 연결할 수 있습니다. 애플리케이션에서 사용하는 역할에 연결된 다른 정책은 애플리케이션이 실행되는 데 필요한 보안 암호에 대한 읽기 권한만 부여할 수 있습니다.

또는 보안 암호에 직접 리소스 기반 정책을 연결해 보안 암호 및 해당 버전을 읽거나 수정할 수 있는 사용자를 지정하는 권한을 부여할 수 있습니다. 사용자, 그룹 또는 역할에 자동으로 적용되는 자격 증명 기반 정책과 달리 보안 암호에 연결된 리소스 기반 정책은 Principal 요소를 사용하여 정책의 대상을 식별합니다.Principal 요소는 다른 계정의 보안 암호나 보안 주체와 동일한 계정의 사용자 및 역할을 포함할 수 있습니다.

표준 준수AWS Secrets Manager 는 다음 표준에 대한 감사를 거쳤으며 규정 준수 인증을 획득해야 할 때 솔루션의 일부로 사용할 수 있습니다.

4

Page 11: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서표준 준수

AWS는 HIPAA (Health 보험 이전 및 책임법) 규정 준수 프로그램을 확장해 AWS SecretsManager가HIPAA 대상 서비스를 선택합니다. AWS 와 BAA (비즈니스 제휴 계약) 를 체결한경우 Secrets Manager 로 HIPAA 규정 준수 애플리케이션을 구축할 수 있습니다. AWS 에서는HIPAA 중심의 백서에서 의료 정보의 처리 및 저장을 위해 AWS 를 활용하는 방법에 대해 자세히 알아보고 싶은 고객을 대상으로 합니다. 자세한 내용은 HIPAA 규정 준수를 참조하십시오.

AWS Secrets Manager는 서비스 공급자 레벨 1에서 PCI DSS (결제 결제 산업 데이터 보안 표준) 버전 3.2의 규정 준수 증명을 보유하고 있습니다. AWS 제품 및 서비스를 사용하여 카드 소지자 데이터를 저장, 처리 또는 전송하는 고객은 자체 PCI DSS 규정 준수 인증을 관리할 때AWS Secrets Manager 를 사용할 수 있습니다. AWS PCI 규정 준수 패키지의 사본을 요청하는방법 같은 PCI DSS 관련 추가 정보는 PCI DSS 레벨 1을 참조하십시오.

AWS Secrets Manager 는 ISO/IEC 27001, ISO/IEC 27017, ISO/IEC 27018 및 ISO 9001에 대한 규정 준수 인증을 성공적으로 획득했습니다. 자세한 정보는 ISO 27001, ISO 27017, ISO27018, ISO 9001을 참조하십시오.

SOC (시스템 및 조직 제어) 보고서는 Secrets Manager 가 주요 규정 준수 제어 항목 및 목표를어떻게 달성하고 있는지를 보여주는 독립적인 타사 심사 보고서입니다. 이러한 보고서의 목적은 운영 및 규정 준수를 뒷받침하는 AWS 제어 기능을 고객과 고객 측 감사 기관이 이해하도록도움을 주는 데 있습니다. 자세한 내용은 SOC 규정 준수를 참조하십시오.

FedRAMP(연방정부 위험 및 권한 부여 관리 프로그램)는 클라우드 제품 및 서비스의 보안 평가, 권한 부여 및 지속적인 모니터링에 대한 표준화된 접근 방식을 제공하는 정부 차원의 프로그램입니다. 또한 FedRAMP 프로그램은 동부/서부 및 GovCloud에서 정부 또는 규제 데이터를사용할 수 있도록 서비스 및 리전에 대한 잠정 권한을 제공합니다. 자세한 내용은 FedRAMP규정 준수 단원을 참조하십시오.

국방부 (DoD) 클라우드 컴퓨팅 보안 요구 사항 가이드 (SRG) 는 DoD 고객에게 서비스를 제공할 수 있도록 클라우드 서비스 공급자 (CSP) 가 DoD 임시 인증을 획득할 수 있도록 표준화된평가 및 인증 프로세스를 제공합니다. 자세한 내용은 단원을 참조하십시오.DoD SRG 리소스

5

Page 12: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Secrets Manager 액세스

정보 보안 등록 평가자 프로그램 (IRAP) 을 통해 호주 정부 고객은 적절한 통제가 이루어졌는지검증하고,호주 사이버 보안 센터 (ACSC). 자세한 내용은 단원을 참조하십시오.IRAP 리소스

Amazon Web Services (AWS) 는 아웃소싱 서비스 제공업체의 감사 보고서 (OSPAR) 증명을획득했습니다. AWS가 싱가포르 은행 협회 (ABS) 관리 목표 및 아웃소싱 서비스 프로바이더를위한 절차에 관한 가이드라인 (ABS 가이드라인) 과 연계하면 AWS가 금융 서비스 업계가 정한클라우드 서비스 제공업체에 대한 높은 기대치를 충족시키려는 고객의 노력을 보여 줍니다.싱가포르. 자세한 내용은 단원을 참조하십시오.OSPAR 리소스

Secrets Manager 액세스다음 방법 중 하나를 사용하여 Secrets Manager로 작업할 수 있습니다.

AWS Management 콘솔

를 사용하여 보안 암호를 관리할 수 있습니다.Secrets Manager 콘솔콘솔을 사용하여 보안 암호에 연결된 거의 모든 작업을 수행할 수 있습니다.

현재, 콘솔에서는 다음 작업을 수행할 수 없습니다.• 보안 암호에 이진수 데이터를 저장합니다. 콘솔은 현재 보안 암호의 SecretString 필드에만 데이

터를 저장하며, SecureBinary 필드를 사용하지 않습니다. 현재 이진 데이터를 저장하려면 AWS CLI또는 AWS SDK 중 하나를 사용해야 합니다.

AWS 명령줄 도구

AWS 명령줄 도구를 통해 시스템 명령줄에서 명령을 실행하여 Secrets Manager 및 다른 AWS 작업을수행할 수 있습니다. 명령줄을 사용하는 것이 콘솔을 사용하는 것보다 더 빠르고 편리할 수 있습니다.AWS 작업을 수행하는 스크립트를 작성할 때도 명령줄 도구가 유용할 수 있습니다.

AWS 에서는 다음과 같은 두 가지 명령줄 도구 세트를 제공합니다.AWS 명령줄 인터페이스(AWS CLI)및Windows PowerShell용 AWS 도구를 선택합니다. AWS CLI 설치 및 사용에 대한 자세한 내용은 단원을 참조하십시오.AWS 명령줄 인터페이스 사용 설명서를 선택합니다. Windows PowerShell 용 도구 설치 및 사용에 대한 자세한 내용은Windows PowerShell 용 AWS 도구 사용 설명서를 선택합니다.

AWS SDK

AWS SDK는 다양한 프로그래밍 언어 및 플랫폼(Java, Python, Ruby, .NET, iOS 및 Android, 기타)을 위한 라이브러리와 샘플 코드로 구성되어 있습니다. SDK는 요청에 암호화 방식으로 서명, 오류 관리 및 자동으로 요청 재시도와 같은 작업을 포함합니다. 다운로드 및 설치 방법을 비롯한 AWS SDK에 대한 자세한 정보는 Amazon Web Services용 도구를 참조하십시오.

보안 Secrets Manager HTTPS 쿼리 API

Secrets Manager HTTPS 쿼리 API를 사용하면 Secrets Manager 및 AWS 에 프로그래밍 방식으로 액세스할 수 있습니다. HTTPS 쿼리 API를 이용하면 HTTPS 요청을 서비스에 직접 보낼 수 있습니다.HTTPS API를 사용할 때는 자격 증명을 사용하여 요청에 디지털 방식으로 서명하는 코드를 포함해야 합니다. 자세한 내용은 단원을 참조하십시오.HTTP 쿼리 요청을 통한 API 호출및AWS Secrets ManagerAPI 참조를 선택합니다.

6

Page 13: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Secrets Manager 요금

Note

HTTPS 쿼리 API를 사용하는 대신 선호하는 프로그래밍 언어와 관련된 SDK를 사용하는 것이좋습니다. SDK는 사용자가 수동으로 수행하는 많은 유용한 작업을 수행합니다. 한 예로 SDK는자동으로 요청에 서명하고, 응답을 사용 중인 언어에 구문상 적절한 구조로 변환합니다. SDK를사용할 수 없는 경우에만 HTTPS 쿼리 API를 사용합니다.

Secrets Manager 요금Secrets Manager 를 사용하는 경우 사용하는 내역에 대해서만 지불하며 최소 또는 설정 요금이 없습니다. 현재 기준의 전체 요금 목록은AWS Secrets Manager 요금를 선택합니다.

AWS KMS — 사용자 지정 암호화 키AWS KMS로 보안 암호를 암호화하는 자체 고객 마스터 키를 생성하는 경우 AWS는 현재 AWS KMS 요금을 청구합니다. 하지만 AWS Secrets Manager 가 계정에 대해 생성하는 “기본” 키를 무료로 사용할 수 있습니다. 고객이 생성한 AWS KMS 키 비용에 대한 자세한 내용은 단원을 참조하십시오.AWS Key ManagementService 요금를 선택합니다.

AWS CloudTrail 로깅 — 스토리지 및 알림계정에서 AWS CloudTrail 을 활성화하면 AWS Secrets Manager 전송한 API 호출에 대한 로그를 얻을 수있습니다. Secrets Manager 모든 이벤트를 관리 이벤트로 기록합니다. 데이터 이벤트는 없습니다. AWSCloudTrail Trail에서 관리 이벤트를 캡처하기 위해 단일 추적을 캡처하는 데 발생하는 추가 요금은 없습니다.AWS CloudTrail 은 모든 관리 이벤트의 첫 사본이 무료로 저장됩니다. 하지만 알림을 활성화하면 AmazonS3 및 Amazon SNS 대한 비용이 발생할 수 있습니다. 또한 추적을 추가로 설정한 경우 관리 이벤트의 추가사본으로 인해 비용이 발생할 수 있습니다. 자세한 내용은 단원을 참조하십시오.AWS CloudTrail요금 페이지를 참조하십시오.

AWS Secrets Manager 에 대한 Support 및 의견우리는 여러분의 의견을 환영합니다. [email protected]으로 의견을 보낼 수 있습니다. 또한 당사의 의견과 질문을 올리시면 됩니다.AWS Secrets Manager 지원 포럼를 선택합니다. AWSSupport 포럼에 대한 자세한 내용은 단원을 참조하십시오.포럼 도움말를 선택합니다.

AWS Secrets Manager 콘솔 또는 명령줄 도구에 대한 새로운 기능을 요청하려면[email protected]를 선택합니다.

아마존 문서에 대한 의견을 제출하기 위해 각 웹페이지 하단에 있는 의견 링크를 사용할 수 있습니다. 발생한문제와 문서가 어떤 점에서 도움이 되지 않았는지에 대해 구체적으로 기술해 주십시오. 표시된 내용과 생각했던 것과 어떤 차이가 있었는지 알려 주십시오. 그러면 문서를 개선하기 위해 무엇을 해야 할지 파악하는 데도움이 됩니다.

여기 몇 가지 사용 가능한 추가 리소스를 소개합니다.

• AWS 교육 카탈로그AWS 기술을 연마하고 실용적인 경험을 얻는 데 도움이 될 수 있는 자습형 실습입니다.

• AWS 개발자 도구AWS 로 혁신적인 애플리케이션을 구축하는 데 도움이 될 수 있는 문서, 코드 예제, 출시정보 및 기타 정보를 제공하는 도구 및 리소스 링크입니다.

• AWS 지원 센터— AWS Support 사례를 생성 및 관리하는 허브. 포럼, 기술 FAQ, 서비스 상태 및 AWSTrusted Advisor 등의 기타 유용한 자료에 대한 링크가 있습니다.

• AWS Support클라우드에서 1대 1로 애플리케이션을 구축 및 실행하도록 지원하는 빠른 응답 지원 채널입니다.

7

Page 14: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서AWS Secrets Manager 에 대한 Support 및 의견

• 문의처— AWS 결제, 계정, 이벤트 및 기타 문제에 대해 문의할 수 있는 중앙 연락 창구입니다.• AWS 사이트 약관— 저작권 및 상표, 사용자 계정, 라이선스, 사이트 액세스 및 기타 주제에 대한 자세한 정

보입니다.

8

Page 15: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서용어 및 개념

AWS Secrets Manager 시작하기AWS Secrets Manager 사용을 시작하려면 다음 주제를 검토하는 것이 좋습니다.

• 용어 및 개념 (p. 9)- API, SDK 명령 및 콘솔 인터페이스 전체에서 사용하는 기본 개념 및 SecretsManager 용어입니다.

AWS Secrets Manager 에 사용되는 주요 용어 및 개념

다음은 AWS Secrets Manager와 그 작동 방식을 이해하는 데 중요한 용어 및 개념입니다.

SecretSecreSecrets Manager 에서 보안 암호는 자격 증명 세트 (사용자 이름 암호) 와보안 서비스 (p. 11)를 선택합니다. 보안 암호를 안전하게 저장하고 권한이 있는 사용자만 보안 암호에 액세스하도록 할 수 있습니다.Secrets Secrets Manager 는 항상 보안 암호 텍스트를 암호화된 형식으로 저장하고, 전송 중인 보안 암호를암호화합니다.

Secrets Manager 는 IAM 권한 정책을 사용하여 권한 있는 사용자만 보안 암호에 액세스하거나 보안 암호를수정할 수 있도록 합니다. 이 정책을 사용자 또는 역할에 연결하고 사용자가 액세스할 수 있는 보안 암호를지정할 수 있습니다. 보안 암호에 대한 액세스 제어에 대한 자세한 정보는 AWS Secrets Manager 대한 인증및 액세스 제어 (p. 34) 단원을 참조하십시오.

자격 증명을 저장할 때 보안 서비스별로 다른 정보가 필요할 수 있습니다. SecreSecrets Manager 는 텍스트문자열로 구성된 키-값 페어로 보안 암호를 저장하여 이러한 유연성을 제공합니다. SecreSecrets Manager에서 지원되는 데이터베이스를 선택한 경우 Secrets Manager는 선택한 데이터베이스에 대한 교체 함수 요구 사항에 따라 키-값 페어를 정의합니다. Secrets Manager 쌍을 다음과 같이 포맷합니다.JSON텍스트. 에서Lambda 함수를 제공하지 않는 일부 다른 서비스 또는 데이터베이스 Secrets Manager 를 선택한 경우 사용자가 정의한 JSON 키-값 페어로 보안 암호를 지정할 수 있습니다.

저장되어 있는 암호화된 보안 암호 텍스트는 다음 예와 유사한 형태일 수 있습니다.

{ "host" : "ProdServer-01.databases.example.com", "port" : "8888", "username" : "administrator", "password" : "My-P@ssw0rd!F0r+Th3_Acc0unt", "dbname" : "MyDatabase", "engine" : "mysql"}

명령줄 도구 또는 API를 사용할 경우 보안 암호에 이진 데이터를 저장할 수도 있습니다. Secrets Manager 콘솔에서는 이진 데이터를 지원하지 않습니다.

SecreSecrets Manager 는 지정된 일정에 따라 보안 암호를 자동으로 교체할 수 있습니다. 암호만 저장하지않고 사용자 또는 계정에 대한 자격 증명 세트 전체를 저장하도록 선택하면 서비스 중단 없이 자격 증명을 교체할 수 있습니다. 암호만 변경하거나 교체하는 경우에는 이전 암호가 즉시 사용할 수 없게 되므로 고객이 바로 새 암호를 사용하기 시작하지 않으면 액세스에 실패합니다. 대신 새 암호가 지정된 새 사용자를 생성하거

9

Page 16: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Secret

나 최소한 두 사용자 간에 번갈아 사용하면 이전 사용자 및 암호를 사용할 수 없다고 선택할 때까지 이전 정보가 새 정보와 함께 계속해서 작동할 수 있습니다. 이렇게 하면 새 자격 증명을 테스트하고 확인하는 동안모든 클라이언트가 계속 작업할 수 있는 시간이 제공됩니다. 새 자격 증명이 테스트를 통과한 이후에는 모든클라이언트가 새 자격 증명을 사용하도록 설정하고 이전 자격 증명을 제거합니다.

지원되는 데이터베이스

Secrets Manager 콘솔을 사용 하 고 암호를 지정 하는 경우Secrets Manager 기본적으로 지원하는 데이터베이스 중 하나 (p. 4)이면 Secrets Manager 모든 구조 및 구문 분석을 관리합니다. 콘솔에서 특정 유형의 데이터베이스에 대한 세부 정보를 입력하라는 메시지가 표시됩니다. 보안 Secrets Manager 필요한 구조를 구성하고, 해당 정보를 저장한 다음 사용자가 이 정보를 검색할 때 이해하기 쉬운 텍스트 정보로 다시 구문 분석합니다.

기타 데이터베이스 또는 서비스

대신 "사용자 지정" 데이터베이스 또는 서비스에 대한 보안 암호를 지정한 경우 보안 암호 검색 후 보안 암호텍스트와 관련해 수행할 작업과 보안 암호를 해석하는 방식은 사용자가 제어합니다. Secrets Manager 콘솔에서는 보안 암호를 키-값 문자열로 수용하고 저장하기 위해 JSON 구조로 자동으로 변환합니다. 콘솔에서보안 암호를 검색하면 SecreSecrets Manager 에서 사용자가 볼 수 있도록 키-값 텍스트 문자열로 보안 암호를 자동으로 구문 분석합니다. 보안 암호를 프로그래밍 방식으로 검색하는 경우 적절한 JSON 구문 분석 라이브러리(대부분의 프로그래밍 언어에 사용 가능)를 사용하여 유용한 방식으로 보안 암호를 구문 분석할 수있습니다. 보안 암호에 저장할 데이터의 크기가 암호당 크기 제한인 65,536바이트보다 클 경우 키-값 페어를보안 암호 2개로 분할하고 검색할 때 다시 연결할 수 있습니다.

다중 리전 보안

Secrets Manager 및 다중 영역 비밀은 두 가지 유형의 비밀을 사용합니다.

• 기본 보안- Secrets Manager 기본 암호를 사용하여 응용 프로그램에서 사용할 수있는 다른 지역에 연결된메타 데이터를 복제합니다.

• 복제본 보안- 기본 암호를 복제하여 다른 지역에서 동일한 암호를 만듭니다. 복제 암호는 쉽게 검색할 수있도록 기본 암호와 공통 이름을 공유합니다. Secrets Manager AWS Key Management Service 및 KMS관리 키뿐만 아니라 지역별 고객 관리 키 (CMK) 를 사용합니다.

보안 Secrets Manager보안 Secrets Manager 에는 암호화된 보안 암호 텍스트뿐만 아니라 보안 암호를 설명하고 에서 보안 암호를처리해야 하는 방식을 정의하는 여러 메타데이터 요소가 포함되어 있습니다.

10

Page 17: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서보안 서비스

• 메타데이터 — 보안 암호에 대한 세부 정보• 보안 암호의 이름, 설명과 고유한 식별자로 사용되는 Amazon 리소스 이름(ARN)을 포함한 기본 정보• AWS Key Management Service (AWS KMS ey SecreSecrets Manager 의 ARN 에서는 보안 암호의

보호되는 텍스트를 암호화 및 암호 해독하는 데 사용합니다. 이 정보를 제공하지 않으면 보안 SecretsManager 계정에 기본 AWS KMS 키를 사용합니다.

• 얼마나 빈도에 대한 정보를 회전하려면 (p. 11)키와 교체를 수행하는 데 사용하는 Lambda 함수입니다.

• 사용자가 제공한 태그 세트. 태그를 키-값 페어로 AWS 구성, 논리적 그룹화 및비용 할당를 선택합니다.• 버전 — 버전 한 개 이상으로 구성된 모음버전 (p. 12)암호화 된 비밀 텍스트

• 일반적으로 보안 암호 버전은 한 번에 한 개만 활성 상태일 수 있지만 데이터베이스 또는 서비스에 대한보안 암호를 교체하는 동안에는 여러 버전이 존재할 수 있습니다. 보안 암호를 변경할 때마다 에서 새 버전을 생성합니다.

• 각 버전에는 암호화된 보안 암호 값의 사본이 들어 있습니다.• 각 버전에는 보안 암호의 교체 주기의 스테이지를 식별하는 하나 이상의 스테이징 레이블 (p. 12)이

연결될 수 있습니다.

보안 서비스Secrets Manager는 보안 서비스를 데이터베이스 또는 네트워크 서버에서 실행되는 다른 서비스로 정의하며, 보안 암호에 저장된 자격 증명으로 액세스를 제어합니다. 보안 서비스는 동일한 액세스 방법을 공유하는단일 서버 또는 대규모 서버 그룹을 나타낼 수 있습니다. 보안 서비스에 성공적으로 액세스하기 위해서는 보안 암호가 필요합니다. 보안 암호에는 고객이 보안 서비스에 액세스하는 데 필요한 정보가 모두 들어 있습니다. 이 설명서에서는 “보안 서비스”라는 일반적인 용어를 사용하여 AWS Secrets Manager 보안 암호를 보호할 수 있는 여러 유형의 데이터베이스 및 서비스를 모두 나타냅니다.

RotationSecreSecrets Manager 에서는 교체를 공격자가 보안 서비스에 액세스하는 것을 더욱 어렵게 만들기 위해 보안 암호를 주기적으로 변경하는 프로세스로 정의합니다. Secrets Manager를 사용하면 모든 클라이언트에서보안 암호를 수동으로 변경하여 보안 암호를 업데이트할 필요가 없습니다. 대신 Secrets Manager 는 AWSLambda 함수를 사용하여 정기적으로 교체되는 모든 단계를 자동으로 수행합니다.

데이터베이스(보안 서비스 (p. 11))에 액세스하는 애플리케이션을 실행하는 많은 클라이언트가 있다고 상상해 보십시오. 자격 증명을 애플리케이션에 하드 코딩하는 대신 애플리케이션은 필요할 때마다 SecreSecrets Manager 에 요청을 보내 보안 암호 세부 정보를 수신합니다. 보안 암호를 교체할 경우Lambda Rotation 함수가 다음 단계를 자동으로 수행합니다.

1. 교체 함수는 보안 서비스의 인증 시스템에 접속해 데이터베이스에 액세스하기 위한 새 자격 증명 세트를생성합니다. 자격 증명은 일반적으로 사용자 이름, 암호 및 연결 세부 정보로 구성되지만 시스템마다 다를 수 있습니다. Secrets Manager 이러한 새 자격 증명을 보안 텍스트로 새version (p. 12)와 보안 암호의AWSPENDING스테이징 레이블이 첨부되었습니다.

2. 그런 다음 교체 함수가 보안 암호의 AWSPENDING 버전을 테스트하여 자격 증명이 작동하는지 확인하고보안 서비스에 필요한 액세스 권한 수준을 부여합니다.

3. 테스트에 성공하면 교체 함수는 AWSCURRENT 레이블을 새 버전으로 옮겨 지정해 새 버전을 기본 버전으로 표시합니다. 이렇게 하면 모든 클라이언트가 이전 버전 대신 이 버전의 보안 암호를 사용하게 됩니다.또한 교체 함수는 이전 버전에 AWSPREVIOUS 레이블을 할당하여 "마지막으로 확인된 정상" 버전으로 표시합니다. AWSPREVIOUS 스테이징 레이블이 있었던 버전에 이제 스테이징 레이블이 없으므로 더 이상 사용되지 않습니다.

선택한 경우 Lambda 회전 함수를 수동으로 트리거할 수 있습니다.보안 암호 교체를 실행할 수도 있고, 자동으로 모든n일 수를 지정하여 순환 예약을 지정할 수 있습니다. 당신이 사용하는 경우Secrets Manager 기본적으로 지원하는 AWS 데이터베이스 중 하나 (p. 4)에서 데이터베이스 자격 증명을 교체하는 Lambda 함수를

11

Page 18: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서스테이징 레이블

제공합니다. 이 함수는 기본 교체를 자동으로 수행합니다. 아니면 고급 사용자 지정 교체 전략을 지원하도록이 함수를 사용자 지정할 수 있습니다.

사용자 지정 서비스에 대한 보안 암호를 생성하도록 선택한 경우 Lambda 함수를 생성해야 합니다. 이 함수의 코드에서 JSON 구조를 작성하고 구문 분석하는 방법을 결정합니다.

보안 암호에서 사용하는 서비스 또는 데이터베이스의 경우 보안 암호에 대한 Lambda 교체 함수는 데이터베이스 또는 서비스와 보안 Secrets Manager 서비스 엔드포인트에 모두 액세스할 수 있어야 합니다.Lambda 교체 함수 및 데이터베이스 또는 서비스가 Amazon VPC에서 제공한 VPC에 있는 경우보안 SecretsManager 용 VPC 서비스 엔드포인트 (p. 86)또는NAT 게이트웨이를 사용하여 직접 인터넷 연결를 사용하여 공용 Secrets Manager 서비스 끝점에 대한 액세스를 허용할 수 있습니다.

교체에 대한 자세한 정보는 AWS Secrets Manager 보안 암호 교체 (p. 83) 단원을 참조하십시오.

스테이징 레이블Secrets Manager 에서는 간단한 텍스트 문자열인 스테이징 레이블을 사용하여 다른버전 (p. 12)동안 보안 암호의교체 (p. 11)를 선택합니다. 암호화된 보안 암호 값을 쿼리할 때마다 검색할 보안 암호 버전을지정할 수 있습니다. 버전 ID 또는 스테이징 레이블을 사용해 버전을 지정하지 않으면 에서는 기본적으로스테이징 레이블이 있는 버전에 Secrets Manager.AWSCURRENT에 연결됩니다. Secrets Manager 항상 준비 레이블을 첨부합니다.AWSCURRENT를 보안 암호 버전 중 하나에 추가합니다. 작동 방식에 대한 예는 교체 (p. 11)에 대한 간단한 소개를 참조하십시오.

보안 암호 버전에는 0~20개의 스테이징 레이블을 연결할 수 있습니다. 예를 들어,SecretAVersion1에는20 개의 스태이징 레이블이 있고 스테이징 레이블을SecretBVersion1에서 스테이징 레이블을 제거해야합니다.SecretAVersion1에 스테이징 레이블을 추가하십시오.SecretBVersion1를 선택합니다.

스테이징 레이블은 한 번에 보안 암호의 버전 하나에만 연결할 수 있습니다. 보안 암호의 버전 2개에 같은 스테이징 레이블을 지정할 수 없습니다. 스테이징 레이블을 버전에 연결할 때 동일한 스테이징 레이블을 가진다른 버전이 있는 경우 레이블을 제거할 버전도 지정해야 합니다. 그렇지 않으면 에서 오류가 반환됩니다.

보안 암호의 한 버전에는 항상 스테이징 레이블 AWSCURRENT가 있어야 하며 API 작업이 이 동작을시행합니다. Secrets Manager 제공하는 Lambda 회전 함수는 자동으로AWSPENDING,AWSCURRENT,및AWSPREVIOUS레이블을 해당 버전에 추가합니다.

Versioning보안 암호의 여러 버전은 보안 암호 교체 (p. 11)를 지원합니다. Secrets Manager 서로 다른 버전을 구별하는스테이징 레이블 (p. 12)를 선택합니다. 대부분의 시나리오에서는 및 암호 버전에 대해 걱정할 필요가 없습니다. Secrets Manager 와 제공된 Lambda 교체 함수에서 자동으로 세부 정보를 관리하기 때문에 하지만 Lambda 교체 함수를 생성하는 경우 코드가 여러 버전의 보안 암호를 관리하고 각 버전 간에 스테이징레이블을 적절하게 이동해야 합니다. 또한 각 버전에는 버전 간에 이동할 수 있는 스테이징 레이블과는 달리, 항상 동일한 버전과 함께 유지되는 고유한 식별자(일반적으로 UUID 값)가 있습니다. 이UUID에 해당합니다.ClientRequestToken전달된PutSecretValue,CreateSecret, 및UpdateSecretAPI.

항상 AWSCURRENT 레이블이 연결된 보안 암호의 기본 버전을 요청하도록 클라이언트를 구성합니다. 다른 버전이 존재할 수 있지만 특정 버전 ID 또는 스테이징 레이블을 요청해야만 다른 버전에 액세스할 수 있습니다.보안 암호 값을 요청하고 버전 ID 또는 스테이징 레이블을 지정하지 않은 경우, 기본적으로 AWSCURRENT 스테이징 레이블이 있는 버전이 표시됩니다.

교체 중 SecreSecrets Manager 는 보안 암호의 새 버전을 생성하고 스테이징 레이블을 연결합니다.AWSPENDING를 선택합니다. 교체 함수는 AWSPENDING 버전을 사용하여 버전이 테스트를 통과할 때까지 해당 버전을 식별합니다. 순환 함수가 새 자격 증명이 작동하는지 확인한 후 Secrets Manager 레이블을 이동합니다.AWSPREVIOUS를 사용하여 이전 버전으로AWSCURRENT를 선택하고 레이블을 이동합니다.AWSCURRENT에서 새로운AWSPENDING버전입니다.

교체 지원을 위해 스테이징 레이블이 작동하는 방법에 대한 자세한 정보는 AWS Secrets Manager 보안 암호교체 (p. 83) 단원을 참조하십시오.

12

Page 19: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Versioning

보안 암호에 대해 유지되는 각 버전에는 다음 요소가 포함되어 있습니다.

• 버전의 고유 ID• 버전을 식별하는 데 사용하는 스테이징 레이블 모음으로, 보안 암호 내에서 고유합니다. Secrets Manager

는 스테이징 레이블이 없는 버전을 더 이상 사용하지 않으며 이러한 버전은 삭제될 수 있습니다.• 암호화되어 저장된 보안 암호 텍스트

암호화된 보안 암호 값을 쿼리할 때마다 보안 암호 버전을 지정할 수 있습니다. 버전 ID 또는 스테이징레이블을 사용해 버전을 지정하지 않으면 에서는 기본적으로 스테이징 레이블이 있는 버전에 SecretsManager.AWSCURRENT에 연결됩니다. Secrets Manager 항상 준비 레이블을 첨부합니다.AWSCURRENT를 보안 암호 버전 중 하나에 추가합니다.

13

Page 20: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서자습서: 비밀 만들기 및 검색

AWS Secrets Manager이 섹션의 자습서를 사용하여 AWS Secrets Manager 를 사용하여 작업을 수행하는 방법을 알아봅니다.

자습서: 비밀 만들기 및 검색 (p. 14)

단계별 지침을 실행하여 보안 암호를 생성한 다음 검색합니다. 이 자습서에서는 사전 구성된 AWS 데이터베이스가 필요하지 않습니다.

자습서: AWS 데이터베이스의 보안 암호 교체 (p. 17)

Amazon SecreMySQL Manager 그런 다음 데이터베이스에 액세스하는 데 사용되는 보안 암호를 교체하고, 일정에 따라 교체되도록 보안 암호를 구성합니다.

자습서: 마스터 암호로 사용자 암호 회전 (p. 22)

이전 자습서의 비밀을master별개의 회전 할 수 있습니다 비밀userAWS SecreMySQL Manager 그런 다음 마스터 보안 암호와 교대 사용자로 로그인하여 사용자 보안 암호를 교체합니다.

자습서: 비밀 만들기 및 검색이 자습서에서는 보안 암호를 생성하여 AWS Secrets Manager 에 저장합니다. 그런 다음 AWS ManagementConsole 또는 AWS CLI를 사용하여 보안 암호를 검색할 수 있습니다.

Secrets Manager 를 처음 사용하는 사용자는 30일 무료 평가판에 등록하면 혜택을 받을 수 있으며 이 자습서에서 수행한 활동에 대한 청구는 받지 못합니다.

단계 1: AWS Secrets Manager에서 보안 암호 생성 및 저장 (p. 14)

이 단계에서는 보안 암호를 생성하고 AWS Secrets Manager에서 요구하는 기본 정보를 제공합니다.단계 2: AWS 비밀 관리자에서 비밀 검색 (p. 16)

그런 다음 보안 Secrets Manager 콘솔 및 AWS CLI를 사용하여 보안 암호를 검색합니다.

Prerequisites이 자습서에서는 사용자가 AWS 계정에 대한 액세스 권한을 가지고 있고, AWS Secrets Manager 콘솔에서보안 암호를 생성 및 검색할 수 있는 권한을 가지고 있거나 AWS CLI에서 이에 상응하는 명령을 사용할 수 있는 IAM 사용자로 AWS에 로그인할 수 있다고 가정합니다. IAM 사용자 구성에 대한 자세한 정보는IAM 설명서.

단계 1: AWS Secrets Manager에서 보안 암호 생성 및저장Secrets Manager Console

콘솔에서 보안 암호 생성 및 저장

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

2. 서비스 소개 페이지 또는 비밀 목록 페이지에서 새 비밀 저장을 선택합니다.3. 새 비밀 저장 페이지에서 다른 유형의 비밀을 선택합니다. 비밀은 데이터베이스에 적용되지 않으므

로 이 유형의 암호를 선택합니다.

14

Page 21: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서단계 1: AWS Secrets Manager에서 보안 암호 생성 및 저장

4. 보안 암호에 저장할 키/값 페어 지정에서 첫 번째 필드에 MyFirstSecret를 입력합니다. 암호를구성하려면 다음 필드에 값을 추가합니다.

키 이름 및 값 문자열 쌍으로 자격 증명 및 연결 세부 정보와 같은 보안 암호 정보를 입력합니다. 예를 들어 “UserName”을 키 이름으로, 사용자 로그인 이름을 값으로 지정할 수 있습니다.

5. 암호화 키 선택에서 DefaultEncryptionKey를 선택합니다. Secrets Manager 이 옵션을 선택하면 항상 암호를 암호화하고 사용자에게 무료로 제공합니다. 사용자 지정 KMS 키를 사용하도록 선택한경우 AWS는 표준 AWS KMS 요금으로 요금을 청구합니다.

Secrets Manager 계정 내에 있는 고유한 암호화 키를 사용하며 동일한 영역의 Secrets Manager 에서만 사용할 수 있습니다.

6. [Next]를 선택합니다.7. 비밀 이름 아래의 텍스트 필드에 보안 암호 이름을 입력합니다. 영숫자와 /_+=.@- 문자만 사용해야

합니다.

예를 들어 보안 암호 이름을 사용할 수 있습니다.tutorials/MyFirstSecret를 선택합니다. 이렇게 하면 가상 폴더에 보안 암호가 저장됩니다.자습서값을 로 바꿉니다.마이퍼스트시크릿를 선택합니다. 비밀을 쉽게 관리할 수 있는 계층적 방식으로 비밀의 이름을 지정하는 것이 좋습니다.

8. 설명 필드에 보안 암호에 대한 설명을 입력합니다.

예를 들어 설명에 Create Secret을 입력합니다.9. 태그 섹션의 키 및 값 - 선택적 텍스트 필드에서 원하는 태그를 추가합니다.

이 자습서에서는 태그를 비워 두어도 됩니다. 그러나 암호를 식별하는 데 도움이 되는 모범 사례로태그를 사용하는 것이 좋습니다.

10. [Next]를 선택합니다.11. 이 자습서에서는 자동 교체 비활성화를 선택한 후 다음을 선택합니다.

Note

다음 자습서에서는 비밀 회전에 대해 설명합니다.12. 검토 페이지에서 보안 암호 설정을 확인할 수 있습니다. 또한, 반드시 검토하십시오샘플 코드섹션에

서 잘라내기 및 붙여넣기가 가능한 코드를 사용하여 자신의 응용 프로그램에 추가하고 이 암호를 사용하여 자격 증명을 검색할 수 있습니다. 각 탭에는 다른 프로그래밍 언어의 코드가 있습니다.

13. 변경 사항을 저장하려면 저장을 선택합니다.

Secrets Manager 콘솔은 이제 목록에 새 보안 암호가 포함되어 있는 계정의 보안 암호 목록으로 돌아갑니다.

Secrets Manager CLI

1. 명령 프롬프트를 열어 AWS CLI를 실행합니다. 아직 AWS CLI를 아직 설치하지 않았다면 단원을 참조하십시오.AWS 명령줄 인터페이스 설치를 선택합니다.

2. 암호 생성

다음 명령과 파라미터를 입력합니다.

$ aws secretsmanager create-secret --name tutorials/MyFirstSecret --description "Basic Create Secret" --secret-string S3@tt13R0cks

명령의 출력에는 다음 정보가 표시됩니다.

{

15

Page 22: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서단계 1: AWS Secrets Manager에서 보안 암호 생성 및 저장

"ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:tutorials/MyFirstSecret-rzM8Ja", "Name": "MyFirstSecret", "VersionId": "35e07aa2-684d-42fd-b076-3b3f6a19c6dc"}

단계 2: AWS 비밀 관리자에서 비밀 검색이 단계에서는 보안 암호 Secrets Manager 콘솔 및 AWS CLI를 사용하여 보안 암호를 검색합니다.

AWS Secrets Manager 콘솔에서 보안 암호 검색

1. 콘솔에 아직 로그인하지 않았다면 콘솔로 이동합니다.https://console.aws.amazon.com/secretsmanager/을 클릭하고 Secrets Manager 서비스에 로그인합니다.

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

Secrets Manager 다음을 표시합니다.보안 암호 세부페이지에서 보안 암호를 확인합니다.3. 비밀 값 섹션에서 비밀 값 검색을 선택합니다.4. 보안 암호를 키/값 쌍 또는 JSON 텍스트 구조로 볼 수 있습니다.

AWS Secrets Manager CLI를 사용하여 보안 암호를 검색하려면

1. 명령 프롬프트를 열어 AWS CLI를 실행합니다. 아직 AWS CLI를 아직 설치하지 않았다면 단원을 참조하십시오.AWS 명령줄 인터페이스 설치를 선택합니다.

2. 보안 암호에 액세스할 수 있는 권한을 가진 자격 증명을 사용하여 다음 명령 및 파라미터를 입력합니다.

암호화된 텍스트를 제외한 모든 보안 암호 세부 정보를 확인하려면:

$ aws secretsmanager describe-secret --secret-id tutorials/MyFirstSecret{ "ARN": "arn:aws:secretsmanager:region:123456789012:secret:tutorials/MyFirstSecret-jiObOV", "Name": "tutorials/MyFirstSecret", "Description": "Basic Create Secret", "LastChangedDate": 1522680794.8, "LastAccessedDate": 1522627200.0, "VersionIdsToStages": { "EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE": [ "AWSCURRENT" ] }}

VersionIdsToStages 응답 값을 검토합니다. 출력에는 보안 암호의 모든 활성 버전 및 각 버전에 연결된스테이징 레이블의 목록이 포함됩니다. 이 자습서에서는 단일 스테이징 레이블 AWSCURRENT에 매핑되는 하나의 버전 ID(UUID 유형 값)를 확인할 수 있습니다.

보안 암호의 암호화된 텍스트를 확인하려면:

$ aws secretsmanager get-secret-value --secret-id tutorials/MyFirstSecret --version-stage AWSCURRENT{ "ARN": "arn;secretsmanager:region:123456789012:secret:tutorials/MyFirstSecret-jiObOV", "Name": "tutorials/MyFirstSecret", "VersionId": "EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE", "SecretString": "S3@ttl3R0cks",

16

Page 23: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서자습서: AWS 데이터베이스의 보안 암호 교체

"VersionStages": [ "AWSCURRENT" ], "CreatedDate": 1522680764.668}

와 다른 스테이징 레이블을 가진 버전에 대한 세부 정보를 확인하려는 경우AWSCURRENT를 포함해야 합니다.--version-stage매개 변수를 이전 명령에서. Secrets Manager 사용AWSCURRENT를 기본값으로 사용합니다.

나머지 결과에는 보안 암호 값의 JSON 버전이 SecretString 응답 필드에 포함됩니다.

Summary

이 자습서에서는 간단한 보안 암호를 생성하고 필요할 때마다 보안 암호 값을 검색할 수 있는 간편한 방법을확인했습니다. 보안 암호를 생성하고 자동으로 교체되도록 구성하는 방법에 대한 또 다른 자습서는 자습서:AWS 데이터베이스의 보안 암호 교체 (p. 17) 단원을 참조하십시오.

자습서: AWS 데이터베이스의 보안 암호 교체이 자습서에서는 AWS 데이터베이스에 대한 보안 암호를 생성하여 일정에 따라 교체하도록 구성합니다. 교체를 수동으로 한 번 트리거한 후 보안 암호의 새 버전으로 계속해서 액세스할 수 있는지 확인합니다.

테스트 MySQL 데이터베이스 구성 (p. 18)

이 단계에서는 Amazon Replication Database Service (Amazon RDS) 에서 테스트 데이터베이스를 생성합니다. 이 자습서에서 테스트 데이터베이스는 MySQL을 실행합니다.

단계 2: 보안 암호 생성 (p. 19)

그 다음 Secrets Manager 콘솔을 사용하여 보안 암호를 생성하고, 이를 MySQL 데이터베이스의 최초 사용자 이름 및 암호로 채웁니다. 반환된 자격 증명을 사용해서 데이터베이스에 로그인하여 보안 암호를테스트합니다.

단계 3: 최초 보안 암호 확인 (p. 20)

3단계에서 새 보안 암호를 사용하여 자격 증명을 테스트하고 이를 사용하여 데이터베이스에 연결할 수있는지 확인합니다.

단계 4: 보안 암호에 대한 교체 구성 (p. 21)

4단계에서 보안 암호의 교체를 활성화하고 최초 교체를 수행합니다.단계 5: 교체 성공 확인 (p. 21)

이 단계에서는 최초 교체가 완료된 후 확인 단계를 반복하여 교체 중에 생성된 새 자격 증명을 통해 데이터베이스에 계속 액세스할 수 있는 것을 보여 줍니다.

단계 6: 정리 (p. 22)

마지막 단계에서는 불필요한 비용을 방지하기 위해 Amazon RDS 데이터베이스 인스턴스 및 보안 암호를 제거합니다.

Prerequisites이 자습서는 사용자가 AWS 계정에 대한 액세스 권한을 가지고 있고, 콘솔 또는 AWS CLI의 동등한 명령을사용하여 AWS Secrets Manager 및 Amazon RDS를 구성할 전체 권한을 가진 사용자로 AWS에 로그인할 수있다고 가정합니다.

17

Page 24: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서필수 권한

이 자습서에서는 MySQL 클라이언트 도구인 MySQLWorkbench를 사용하여 데이터베이스와 상호 작용하고사용자를 구성하며 상태를 점검합니다. 이 자습서에는 다음 단계의 해당 지점에 있는 설치 지침이 포함되어있습니다.

이 자습서에서 구성한 데이터베이스는 자습서의 간편한 설정을 위해 포트 3306에서 퍼블릭 인터넷에액세스할 수 있습니다. 이 자습서를 완료하려면 인터넷 연결 컴퓨터에서 MySQL 클라이언트 도구인MySQLWorkbench를 사용하여 MySQL 데이터베이스에 액세스할 수 있어야 합니다. 프로덕션 서버를 안전하게 구성하려면 Lambda 및 Amazon EC2 VPC 설명서의 지침을 따르는 것이 좋습니다.

Important

교체를 수행하려면 네트워크 환경에서 데이터베이스 및 Secrets Manager 서비스와 통신하기 위해 Lambda 교체 함수를 허용해야 합니다. 이 자습서에서는 퍼블릭 인터넷 액세스로 데이터베이스를 구성하기 때문에 Lambda 는 퍼블릭 IP 주소를 통해 데이터베이스에 액세스하도록 교체 함수를자동으로 구성합니다. 데이터베이스 인스턴스에 대한 퍼블릭 인터넷 액세스를 차단할 경우 데이터베이스 인스턴스와 동일한 VPC 실행하도록 Lambda 함수를 구성해야 합니다. 그런 다음 중 하나를 수행해야합니다.프라이빗 Secrets Manager 엔드포인트로 VPC 구성 (p. 86)또는NAT 게이트웨이를 사용하여 퍼블릭 인터넷 액세스로 VPC 구성합니다.를 사용하여 Lambda 순환 함수가 공용Secrets Manager 끝점에 액세스할 수 있도록 합니다.

필수 권한이 자습서를 성공적으로 실행하려면Secrets Manager 관리AWS 정책 작성를 선택합니다. 또한 IAM 역할을 만들어 권한 정책을 이 역할에 연결할 수 있는 권한이 있어야 합니다. 다음 중 하나를 부여 할 수 있습니다.AWS 관리형 정책를 할당하거나 명시 적으로iam:CreateRole및iam:AttachRolePolicy를 선택합니다.

Warning

iam:CreateRole 및 iam:AttachRolePolicy를 통해 사용자는 권한을 스스로 부여할 수 있으므로 계정의 신뢰할 수 있는 사용자에게만 이러한 정책을 부여하십시오.

테스트 MySQL 데이터베이스 구성1. 자습서의 이 단계에서는 계정에 로그인하고 Amazon RDS에서 MySQL 데이터베이스를 구성합니다.2. 다음 단계를 수행합니다.

a. AWS Management Console에 로그인하고 에서 Amazon RDS 콘솔을 엽니다.https://console.aws.amazon.com/rds/를 선택합니다.

b. [Dashboard]에서 아래로 스크롤하여 [Create database] 섹션으로 이동한 후 [Create database]를 선택합니다.

c. 아마존 RDS 자습서를 참조하십시오MySQL DB 인스턴스 만들기에서 RDS 데이터베이스 설정에대한 최신 정보를 확인하십시오.

데이터베이스를 생성할 때 다음 정보를 사용하십시오.

• DB 인스턴스 식별자: MyTestDatabaseInstance를 선택합니다.• Master username: adminuser를 선택합니다.• Master password: 최초 보안 암호를 입력하고[Confirm Password]상자에 표시됩니다. 이 암호를

기억해야 합니다. 2단계에서 보안 암호를 생성할 때 필요합니다.

Note

데이터베이스 생성은 최대 20분이 걸릴 수 있으며 이후 DB 인스턴스를 사용할 수 있습니다.

18

Page 25: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서단계 2: 보안 암호 생성

d. [RDS > Databases]의 사용 가능한 데이터베이스 목록에서 데이터베이스를 선택한 다음 [Modify]를선택합니다.

e. 에서네트워크 및 보안섹션에서퍼블릭 액세스 가능성아래로 변경합니다.예를 선택합니다.f. [Backup] 섹션에서 [Backup retention period]를 [0 days]로 설정하여 백업을 비활성화합니다.g. 나머지 설정은 기본값을 유지합니다.h. [Continue]를 선택합니다.i. 에서수정 사항섹션에서즉시 적용그리고 나서DB 인스턴스 수정를 선택합니다.j. 해당요약단면 화면표시응시 가능언더Info을 선택하고 페이지를 새로 고치고연결 및 보안섹션에 나

와 있습니다.k. 에서보안섹션에서기본값언더VPC 보안 그룹를 선택합니다. Amazon EC2 용 콘솔이 열리고, 구성

된보안 그룹를 선택합니다.l. 인바운드 규칙을 선택한 다음 인바운드 규칙 편집을 선택합니다.m. [Source type] 아래에서 [Anywhere]를 선택하고 [Save rules]를 선택합니다.

Note

자습서를 올바르게 구성하려면 최소한 이러한 설정을 사용하십시오. 프라이빗 VPC 가 필요한 경우해당 VPC에서 실행하도록 Lambda 함수를 구성해야 합니다. 다음으로 VVPCSecrets Manager 엔드포인트 (p. 86)를 사용하여 퍼블릭 인터넷 액세스로 VPC 구성합니다.NAT 게이트웨이를 선택합니다. 이러한 구성을 사용하면 Lambda 교체 함수가 퍼블릭 Secrets Manager 엔드포인트에 액세스할 수 있습니다.

단계 2: 보안 암호 생성이 단계에서는 SecreSecrets Manager 에서 보안 암호를 생성하고, 이를 데이터베이스 및 마스터 사용자의자격 증명을 포함하는 테스트 세부 정보로 채웁니다.

보안 암호를 만들려면

a. 에서 보안 Secrets Manager 콘솔을 엽니다.https://console.aws.amazon.com/secretsmanager/를 선택합니다.

b. 콘솔을 이전 단계에서 Amazon RDS MySQL 데이터베이스를 생성한 리전과 동일한 리전으로 설정해야합니다.

c. [Store a new secret]을 선택합니다.d. [Store a new secret] 페이지의 [Select secret type] 섹션에서 [Credentials for RDS database]를 선택합니

다.e. 사용자 이름에 1.3단계에서 제공한 마스터 사용자 이름과 일치하도록 adminuser를 입력합니다.f. [Password]에는 데이터베이스를 생성할 때 [adminuser]에 대해 제공한 것과 동일한 암호를 입력합니다.g. [Select the encryption key]에서 이를 [DefaultEncryptionKey]로 설정합니다. AWS 기본 CMK 대신 사용자

지정 마스터 키 (CMK) 를 사용하는 경우 해당 계정에 청구합니다.h. [Select which RDS database this secret will access]에서, 1단계에서 생성한 [MyTestDatabaseInstance]

인스턴스를 선택합니다. [Next]를 선택합니다.i. Secret name and description(보안 암호 이름 및 설명) 섹션의 Secret name(보안 암호 이름)에

MyTestDatabaseMasterSecret을 입력합니다. [Next]를 선택합니다.j. 자동 교체 구성 섹션에서 교체를 비활성화합니다. [Next]를 선택합니다.k. 검토 섹션에서 세부 정보를 확인한 후 저장을 선택합니다.

Secrets Manager 가 현재 새로운 보안 암호가 포함되어 있는 보안 암호 목록으로 돌아갑니다.

19

Page 26: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서단계 3: 최초 보안 암호 확인

단계 3: 최초 보안 암호 확인보안 암호를 자동으로 교체하도록 구성하기 전에 보안 암호의 정보가 정확하고 데이터베이스에 연결하는 데사용될 수 있는지 확인해야 합니다. 이 자습서는 GUI 기반 애플리케이션인 MySQL Workbench를 설치하여연결을 테스트하는 방법을 설명합니다. 운영 체제에 맞는 클라이언트를 다운로드합니다.

최소한 AWS CLI 또는 Secrets Manager 콘솔을 사용하여 보안 암호를 검색할 수 있습니다. 그런 다음 사용자이름과 암호를 잘라내어 MySQL 데이터베이스 클라이언트에 붙여 넣습니다.

데이터베이스 연결을 테스트하려면

a. MySQLWorkbench 클라이언트 소프트웨어를 설치한 후 MySQLWorkbench 클라이언트를 열어MySQLWorkbench 소개 인터페이스를 표시합니다.

b. 에서MySQL 연결를 선택하고+아이콘을 클릭하여 표시합니다.새 연결 설정를 선택합니다.

c. Connection Name에 대해 MyTestDatabaseInstance를 입력합니다.d. 호스트 이름에 대해 데이터베이스의 엔드포인트(예:

MyTestDatabase.hostname.region.rds.amazonaws.com)를 입력합니다.

데이터베이스의 세부 정보 페이지에서 엔드포인트를 찾을 수 있습니다. Amazon RDS 콘솔에서데이터베이스의 단원RDS > 데이터베이스 > MyTestDatabaseInstance를 선택합니다.

e. 포트를 기본값인 3306으로 유지합니다.f. 사용자 이름 필드에 데이터베이스에 대해 생성한 사용자 이름(adminuser)을 입력합니다.g. 선택연결 테스트을 선택하고암호필드를 선택합니다.

h. 올바르게 구성되면 MySQLWorkbench는 연결 성공 메시지를 표시합니다.

20

Page 27: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서단계 4: 보안 암호에 대한 교체 구성

i. 확인을 선택합니다.

문제 해결 도움말

MySQLWorkbench 클라이언트에서 데이터베이스 연결이 실패하는 경우 데이터베이스가 있는VPC에 연결된 보안 그룹을 확인하십시오. 보안 그룹의 기본 규칙은 모든 아웃바운드 트래픽을허용하지만, 규칙을 정의하여 명시적으로 허용한 트래픽을 제외한 모든 인바운드 트래픽은 차단합니다. 퍼블릭 인터넷에서 컴퓨터를 실행하는 경우, 데이터베이스가 통신하도록 구성한 TCP 포트(일반적으로 포트 3306)에서 인터넷의 인바운드 트래픽을 보안 그룹이 허용해야 합니다. 다른TCP 포트를 사용하도록 MySQL을 구성한 경우 그에 맞게 보안 규칙을 업데이트해야 합니다.

단계 4: 보안 암호에 대한 교체 구성이제 보안 암호의 초기 자격 증명이 확인되었으므로 첫 번째 교체를 구성하고 시작할 수 있습니다.

보안 암호 교체를 구성하려면

a. Secrets Manager 콘솔에서 보안 암호를 선택합니다.MyTestDatabaseMasterSecret를 선택합니다.b. 비밀 세부 정보 페이지의 비밀 구성 섹션에서 교체 편집을 선택합니다.c. [Edit rotation configuration] 페이지에서 [Enable automatic rotation]을 선택합니다.d. [Select rotation interval]에서 [30 days]를 선택합니다.e. 교체 수행에 사용할 보안 암호 선택에서 이 보안 암호 사용을 선택합니다.f. 저장을 선택합니다. Secrets Manager 교체 함수를 만들고 보안 암호 관리자가 함수를 호출할 수 있게 하

는 역할을 연결하는 등 보안 Secrets Manager 에 대한 교체 구성을 시작합니다.g. 교체가 구성되는 중입니다.라는 메시지가 보안 암호 MyTestDatabaseMasterSecret을 저장했고 보안 암호

교체가 활성화되었습니다.로 변경될 때까지 콘솔 페이지에서 기다립니다.

단계 5: 교체 성공 확인보안 암호를 교체한 후에는 보안 암호의 새 자격 증명이 데이터베이스와 연결되는지 확인할 수 있습니다.

a. 에서 보안 Secrets Manager 콘솔을 엽니다.https://console.aws.amazon.com/secretsmanager/를 선택합니다.

b. 보안 암호 MyTestDatabaseMasterSecret을 선택합니다.c. 보안 암호 값 검색을 선택합니다.d. 암호 필드를 찾습니다.

보안 암호를 성공적으로 교체한 경우 암호가 원래 보안 암호 대신 E4%I)rj)vmpRg)U}++=}GHAnNDD1v0cJ와 비슷한 보안 암호로 변경되어야 합니다.

e. 데이터베이스에 액세스하려면 MySQLWorkbench를 열고 MyTestDatabase 연결을 선택합니다.f. 암호를 묻는 메시지가 나타나면 보안 Secrets Manager 암호를 복사하여암호필드를 선택합니다. 확인을

선택합니다.

21

Page 28: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서단계 6: 정리

새 암호로 데이터베이스에 성공적으로 액세스하고 보안 암호 교체가 작동하는지 확인할 수 있습니다.

단계 6: 정리Important

자습서: 마스터 암호로 사용자 암호 회전 (p. 22) 자습서도 수행하려면 해당 자습서를 완료할 때까지 이 단계를 수행하지 않습니다.

데이터베이스 및 보안 암호로 인해 AWS 청구서에 요금이 부과될 수 있으므로 자습서 실험을 완료한 후 이자습서에서 생성한 데이터베이스 인스턴스와 보안 암호를 제거해야 합니다.

보안 암호 삭제

a. 에서 보안 Secrets Manager 콘솔을 엽니다.https://console.aws.amazon.com/secretsmanager/를 선택합니다.

b. 보안 암호 목록에서 이 자습서용으로 생성한 MyTestDatabaseSecret 보안 암호를 선택합니다.c. [Actions]를 선택한 후 [Delete secret]을 선택합니다.d. 비밀 삭제 예약 대화 상자의 대기 기간 입력에 허용된 최소값인 7을 입력합니다.e. [Schedule deletion]을 선택합니다.

복구 기간의 일수가 경과한 후 SecreSecrets Manager 가 보안 암호를 영구적으로 제거합니다.

데이터베이스 인스턴스를 삭제하려면

a. 에서 Amazon RDS 콘솔을 엽니다.https://console.aws.amazon.com/rds/를 선택합니다.b. 탐색 창에서 인스턴스를 선택합니다.c. 사용 가능한 인스턴스 목록에서 이 자습서용으로 생성한 MyTestDatabaseInstance 인스턴스를 선택합니

다.d. [Instance actions]를 선택한 다음 [Delete]를 선택합니다.e. DB 인스턴스 삭제 페이지에서 옵션 섹션의 최종 스냅샷 생성에서 아니요를 선택합니다.f. 모든 데이터가 손실된다는 설명을 확인하고 삭제를 선택합니다.

자습서: 마스터 암호로 사용자 암호 회전이 자습서는 첫 번째 자습서의 단원에서 완료한 작업을 기반으로 합니다. 자습서: AWS 데이터베이스의 보안암호 교체 (p. 17)를 선택합니다. 이 자습서를 시작하기 전에 이전 자습서를 완료하십시오.

이 자습서에서는 이미 만든 보안 암호를 데이터베이스의 마스터 사용자로 사용합니다. 제한된 새 사용자를생성하고 해당 사용자의 보안 암호를 생성합니다. 그런 다음 마스터 보안 암호의 자격 증명을 사용하여 사용자 보안 암호에 대한 교체를 구성합니다. 마스터 보안 암호에 대한 Lambda 교체 함수는 첫 번째 사용자를 복제한 다음 사용자 간에 교대로 암호를 변경합니다.

단계 1: 데이터베이스 및 사용자 보안 암호에 대한 새 사용자 만들기 (p. 23)

먼저 Amazon RDS MySQL 데이터베이스에 새롭게 제한된 권한 사용자를 생성하고 이러한 자격 증명을새로운 보안 암호에 저장합니다.

단계 2: 초기 비밀의 유효성 검사 (p. 24)

2단계에서 보안 암호에 저장된 자격 증명을 사용하여 새 사용자로 데이터베이스에 액세스할 수 있는지확인합니다.

22

Page 29: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Prerequisites

단계 3: 비밀에 대한 순환 구성 (p. 24)

3단계에서는 사용자 보안 암호에 대한 교체를 구성합니다. 교체 함수에 대한 액세스 권한을 부여하는 데사용할 마스터 보안 암호를 지정합니다.

단계 4: 순환 성공 확인 (p. 24)

이 단계에서는 보안 암호를 두 번 교체하여 데이터베이스에 액세스할 수 있는 두 교대 사용자가 작업 중인 자격 증명을 검색하는 것을 보여줍니다.

단계 5: 정리 (p. 25)

마지막 단계에서는 불필요한 비용이 발생하지 않도록 생성한 Amazon RDS 데이터베이스 인스턴스 및보안 암호를 제거합니다.

Prerequisites• 이 자습서는 사용자가 AWS 계정에 대한 액세스 권한을 가지고 있고, 콘솔 또는 AWS CLI의 동등한 명령을

사용하여 또는 를 사용하여 AWS Secrets Manager 및 Amazon RDS를 구성할 전체 권한을 가진 사용자로AWS에 로그인할 수 있다고 가정합니다.

• 마지막 단원에서 설명한 대로 데이터베이스와 사용자를 삭제하지 않고 자습서: AWS 데이터베이스의 보안암호 교체 (p. 17) 자습서의 단계를 완료해야 하며 다음 항목이 제공됩니다.• 라는 아마존 RDS MySQL 데이터베이스MyTestDatabase라는 인스턴스에서 실

행MyTestDatabaseInstance를 선택합니다.• 관리자 권한이 있는 adminuser라는 이름의 마스터 사용자• 라는 이름의 비밀AdminUser를 Secrets Manager 저장된 자격 증명으로 변경합니다.

단계 1: 데이터베이스 및 사용자 보안 암호에 대한 새 사용자 만들기원래 자습서에서는 단일 관리자와 함께 Amazon RDS MySQL 데이터베이스를 사용할 수 있습니다.master해당 사용자를 선택합니다. 해당 마스터 사용자에 대한 최신 자격 증명을 검색하기 위해 사용할 수 있는 보안암호를 보유하게 되었습니다. 이 단계에서는 제한된 새 사용자를 생성하고 해당 자격 증명을 보안 암호에 저장합니다. 이 보안 암호는 예를 들어 데이터베이스의 정보를 쿼리하는 모바일 앱에서 사용될 수 있습니다. 사용자에게 다른 권한은 필요하지 않습니다.

a. MySQLWorkbench를 열고 MyTestDatabaseInstance 연결을 선택하고 데이터베이스에 로그인합니다.b. 쿼리 1 인터페이스에서 CREATE USER mytestuser IDENTIFIED BY 'userpassword';를 입력합

니다.c.

아이콘을 사용하여 쿼리를 실행합니다.

Action Output(작업 출력)을 검토하여 쿼리가 성공적으로 완료되었는지 확인합니다.d. 쿼리 1에서 이전 쿼리를 삭제합니다.e. 다음 텍스트를 입력합니다.\{1\} 쿼리: GRANT SELECT on *.* TO mytestuser를 실행하고 쿼리를 실

행합니다.f. Action Output(작업 출력)을 검토하여 쿼리가 성공적으로 완료되었는지 확인합니다.

콘솔을 사용하여 새 비밀 만들기a. 에서 보안 Secrets Manager 콘솔을 엽니다.https://console.aws.amazon.com/secretsmanager/를 선택합

니다.

23

Page 30: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서단계 2: 초기 비밀의 유효성 검사

b. 계정에 보안 암호 목록이 표시된 페이지에서 [Store a new secret]을 선택합니다.c. [Create Secret] 페이지의 [Select secret type] 섹션에서 [Credentials for RDS database]를 선택합니다.d. 사용자 이름에 1b단계에서 생성한 사용자 이름과 일치하도록 mytestuser를 입력합니다.e. 암호에 1b단계에서 mytestuser에 대해 제공한 것과 동일한 암호를 입력합니다.f. [Select the encryption key]에서 이를 [DefaultEncryptionKey]로 설정합니다.g. 이 비밀에서 액세스할 RDS 데이터베이스 선택에서, 이전 자습서에서 생성한 MyTestDatabaseInstance

인스턴스를 선택합니다.h. [Next]를 선택합니다.i. Secret name and description(보안 암호 이름 및 설명) 섹션의 Secret name(보안 암호 이름)에

MyTestDatabaseUserSecret을 입력합니다.j. [Configure automatic rotation] 섹션에서 현재 교체를 비활성화 상태로 둡니다. [Next]를 선택합니다.k. [Review] 섹션에서 세부 정보를 확인한 다음 [Store]를 선택합니다.

현재 새로운 보안 암호가 포함되어 있는 보안 암호 목록으로 돌아갑니다.

단계 2: 초기 비밀의 유효성 검사보안 암호를 자동으로 교체하도록 구성하기 전에 보안 암호의 정보가 정확하고 데이터베이스에 연결하는 데사용될 수 있는지 확인해야 합니다. 이전 자습서에서는 MySQLWorkbench 클라이언트 구성 요소를 설치했습니다. 이 자습서에서 MySQLWorkbench 클라이언트를 계속 사용합니다.

AWS CLI 또는 보안 암호 관리자 콘솔을 사용하여 보안 암호를 검색할 수 있습니다. 사용자 이름과 암호를 잘라내어 사용하는 MySQL 데이터베이스 클라이언트에 붙여 넣습니다.

a. MySQLWorkbench 를 열고+를 사용하여 새 연결을 생성합니다.b. 연결 이름에 대해 MyTestUser를 입력합니다.c. MySQL 호스트 이름을 복사하여 호스트 이름에 붙여넣습니다. 포트를 3306 상태로 둡니다.d. [Username]에 mytestuser를 입력하고 [Test Connection]을 선택합니다.e. MySQLWorkbench는 데이터베이스에 성공적으로 연결되었음을 나타내는 메시지를 반환합니다.

단계 3: 비밀에 대한 순환 구성이제 보안 암호의 초기 자격 증명이 확인되었으므로 첫 번째 교체를 구성하고 시작할 수 있습니다.

a. 보안 Secrets Manager 콘솔에서 보안 암호를 선택합니다.MyTestDatabaseUserSecret를 선택합니다.b. 보안 암호 세부 정보 페이지의 [Rotation configuration] 섹션에서 [Edit rotation]을 선택합니다.c. [Edit rotation configuration] 페이지에서 [Enable automatic rotation]을 선택합니다.d. [Select rotation interval]에서 [30 days]를 선택합니다.e. 목록에서 Lambda 함수를 선택합니다.f. [Select which secret will be used to perform the rotation]에서 [Use a secret that I have previously stored

in AWS Secrets Manager]를 선택합니다.g. 보안 암호 목록이 나타나면 [MyTestDatabaseMasterSecret]을 선택합니다.h. 저장을 선택합니다.

단계 4: 순환 성공 확인이제 보안 암호를 교체했으므로 보안 암호의 새 자격 증명이 데이터베이스와 연결되는지 확인할 수 있습니다.

24

Page 31: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서단계 5: 정리

a. 에서 보안 Secrets Manager 콘솔을 엽니다.https://console.aws.amazon.com/secretsmanager/를 선택합니다.

b. [Secrets] 목록 페이지에서 사용자 보안 암호의 이름을 선택합니다.c. [Retrieve secret value]를 선택하고 현재 암호를 확인합니다. 보안 암호 값은 원래 암호 또는 교체로 인해

생성된 새 암호여야 합니다. 원래 암호가 계속 표시되는 경우 보안 암호 값 섹션을 닫고, 보안 암호 값이 성공적으로 변경될 때까지 다시 엽니다. 이 단계는 몇 분 정도 걸릴 수 있습니다.

d. 새 보안 암호가 나타나면 복사하여 MySQLWorkbench MyTestUser 연결에 붙여넣습니다.e. MySQL Workbench는 새 보안 암호로 데이터베이스에 성공적으로 로그인했음을 나타내는 메시지를 반환

합니다.

단계 5: 정리데이터베이스 및 보안 암호로 인해 AWS 청구서에 요금이 부과될 수 있으므로 이 자습서에서 생성한 데이터베이스 인스턴스와 보안 암호를 제거해야 합니다.

보안 암호 삭제

a. 에서 보안 Secrets Manager 콘솔을 엽니다.https://console.aws.amazon.com/secretsmanager/를 선택합니다.

b. 보안 암호 목록에서 이 자습서용으로 생성한 MyTestDatabaseSecret 보안 암호를 선택합니다.c. [Actions]를 선택한 다음 [Delete secret]을 선택합니다.d. 비밀 삭제 예약 대화 상자의 대기 기간 입력에 허용된 최소값인 7을 입력합니다.e. [Schedule deletion]을 선택합니다.

복구 기간의 일수가 경과한 후 보안 Secrets Manager 보안 암호를 영구적으로 제거합니다.

데이터베이스 인스턴스를 삭제하려면

a. 에서 Amazon RDS 콘솔을 엽니다.https://console.aws.amazon.com/rds/를 선택합니다.b. 탐색 창에서 인스턴스를 선택합니다.c. 사용 가능한 인스턴스 목록에서 이 자습서용으로 생성한 MyTestDatabaseInstance 인스턴스를 선택합니

다.d. [Instance actions]를 선택한 다음 [Delete]를 선택합니다.e. DB 인스턴스 삭제 페이지에서 옵션 섹션의 최종 스냅샷 생성에서 아니요를 선택합니다.f. 모든 데이터가 손실된다는 설명을 확인하고 삭제를 선택합니다.

25

Page 32: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서추가적인 중요 정보 보호

AWS Secrets Manager 모범 사례AWS Secrets Manager를 더욱 안전하게 사용하는 데 도움이 되는 권장 사항은 다음과 같습니다.

주제• 추가적인 중요 정보 보호 (p. 26)• AWS 제공 클라이언트 측 캐싱 구성 요소를 사용하여 성능 개선 (p. 26)• 애플리케이션에 재시도 횟수 추가 (p. 27)• Lambda 함수를 로깅하고 디버깅할 때의 위험 완화 (p. 28)• AWS CLI를 사용하여 비밀을 저장할 때의 위험 완화 (p. 28)• 교차 계정 액세스 — 사용자/역할 또는 계정을 지정해야 합니까? (p. 29)• VPC 모두 실행 (p. 30)• 암호에 태그를 지정합니다. (p. 30)• 일정에 따라 보안 암호 교체 (p. 32)• 암호에 대한 액세스 감사 (p. 32)• AWS Config를 사용하여 보안 암호 모니터링 (p. 32)• Secrets Manager 사용하여 Lambda 함수에 데이터베이스 자격 증명 제공 (p. 32)• 모범 사례에 대한 추가 리소스 (p. 32)

추가적인 중요 정보 보호일반적으로 보안 암호에는 사용자 이름 및 암호 이외의 여러 가지 정보가 포함되어 있습니다. 데이터베이스,서비스 또는 웹 사이트에 따라 중요한 데이터를 추가로 포함하도록 선택할 수 있습니다. 이 데이터에는 암호를 복구하기 위해 사용할 수 있는 암호 힌트나 질문과 답변 등이 포함될 수 있습니다.

보안 암호의 자격 증명에 대한 액세스 권한을 얻는 데 사용할 수 있는 정보는 자격 증명 자체처럼 안전하게보호해야 합니다. 이러한 유형의 정보는 Description 또는 보안 암호의 암호화되지 않은 다른 부분에 저장하지 마십시오.

대신 이와 같이 민감한 정보는 모두 암호화된 보안 암호 값의 일부로 저장합니다(SecretString 또는SecretBinary 필드). 보안 암호에는 최대 65,536바이트까지 저장할 수 있습니다. SecretString 필드에서 텍스트는 일반적으로 다음 예에 표시된 것처럼 JSON 키-값 문자열 쌍의 형태입니다.

{ "engine": "mysql", "username": "user1", "password": "i29wwX!%9wFV", "host": "my-database-endpoint.us-east-1.rds.amazonaws.com", "dbname": "myDatabase", "port": "3306"}

AWS 제공 클라이언트 측 캐싱 구성 요소를 사용하여 성능 개선

보안 암호를 가장 효율적으로 사용하려면 단순히 자격 증명이 필요할 때마다 보안 Secrets Manager 보안 암호 값을 검색하면 안 됩니다. 대신 지원되는 보안 Secrets Manager 클라이언트 구성 요소를 사용하여 보안

26

Page 33: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서애플리케이션에 재시도 횟수 추가

암호를 캐싱하고 교체 시 필요할 때만 업데이트하십시오. AWS 는 그러한 클라이언트 구성 요소를 생성하여오픈 소스로 사용할 수 있게 만듭니다. 자세한 내용은 AWS에서 개발한 오픈 소스 클라이언트 측 캐싱 구성요소 사용 (p. 63) 단원을 참조하십시오.

애플리케이션에 재시도 횟수 추가AWS 클라이언트에서 Secrets Manager 호출이 클라이언트 측에서 예기치 않은 문제로 인해 실패하는 것을확인할 수 있습니다. 또는 호출하려는 Secrets Manager 리소스의 속도 제한으로 인해 호출이 실패할 수 있습니다. API 요청 할당량을 초과하면 보안 Secrets Manager 요청을 조절합니다. 즉, 유효한 요청을 거부하고ThrottlingException오류가 발생합니다. 응답하려면백오프 및 재시도 전략두 경우 모두 이러한 종류의 실패는 종종 특별한 처리가 필요하지 않으며 주로 짧은 대기 기간 후에 다시 호출해야 합니다. AWS는 이러한 종류의 오류 또는 예외가 발생할 때 AWS 서비스에 대한 클라이언트 호출을 다시 시도하는 데 도움이되는 여러 기능을 제공합니다.

다음과 같은 오류가 발생하는 경우에는retries애플리케이션 코드에 추가합니다.

일시적 오류 및 예외

• RequestTimeout

• RequestTimeoutException

• PriorRequestNotComplete

• ConnectionError

• HTTPClientError

서비스 측 조절 및 제한 오류 및 예외

• Throttling

• ThrottlingException

• ThrottledException

• RequestThrottledException

• TooManyRequestsException

• ProvisionedThroughputExceededException

• TransactionInProgressException

• RequestLimitExceeded

• BandwidthLimitExceeded

• LimitExceededException

• RequestThrottled

• SlowDown

자세한 내용 및 예제 코드, 재시도, 지수 백오프 및 지터에 대한 자세한 내용은 다음 리소스를 참조하십시오.

• 지수 백오프 및 지터• 지터를 사용한 시간 초과, 재시도 및 백오프• AWS 에서 오류 재시도 횟수 및 지수 백오프를 선택합니다.• KMS: 요청 할당량• Python용 AWS SDK• AWS 도구 및 SDK 공유 구성 및 자격 증명 참조 가이드• Java용 AWS SDK

27

Page 34: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Lambda 함수를 로깅하고 디버깅할 때의 위험 완화

• Ruby 용 AWS SDK• Go용 AWS SDK API 참조

Lambda 함수를 로깅하고 디버깅할 때의 위험 완화보안 암호 Secrets Manager 지원하기 위해 사용자 지정 Lambda 교체 함수를 생성하는 경우 함수에 디버깅또는 로깅 명령문을 포함하는데 주의해야 합니다. 이러한 명령문은 함수의 정보를 CloudWatch에 쓰도록 할수 있습니다. CloudWatch 에 정보를 로깅할 때 암호화된 보안 암호 값에 민감한 데이터가 포함되지 않는지확인합니다. 또한 테스트 및 디버깅을 위해 개발하는 동안 코드에 이러한 문을 포함하려는 경우 프로덕션에서 사용되기 전에 코드에서 해당 행을 제거해야 합니다. 또한 개발 중 수집된 민감한 정보가 포함된 모든 로그가 더 이상 필요 없으면 잊지 말고 삭제하십시오.

AWS 에서 제공하는 Lambda 함수 및지원되는 데이터베이스 (p. 4)에는 로깅 및 디버그 문이 포함되어 있지않습니다.

AWS CLI를 사용하여 비밀을 저장할 때의 위험 완화AWS Command Line Interface (AWS CLI) 를 사용하여 AWS 작업을 호출하려면 명령 셸에 해당 명령을 입력합니다. 예를 들어 Windows 명령 프롬프트나 Windows PowerShell 또는 Bash나 Z shell 등을 사용할 수 있습니다. 이러한 명령 셸 대부분에는 생산성을 높이기 위해 설계된 기능이 포함되어 있습니다. 하지만, 이 기능은 보안 암호의 보안을 약화시키는 데 사용될 수 있습니다. 예를 들어 대부분의 셸에서 위쪽 화살표 키를 사용하면 마지막으로 입력한 명령을 볼 수 있습니다. 명령 기록 기능은 보호되지 않는 세션에 액세스한 누군가가 악용할 수 있습니다. 또한 백그라운드에서 작동하는 다른 기능이 명령 파라미터에 액세스할 수 있습니다.이러한 기능은 모두 작업을 보다 효율적으로 수행하도록 지원하기 위한 것입니다. 이러한 위험을 줄이기 위해서는 다음 단계를 수행해야 합니다.

• 콘솔에서 자리를 비우는 경우에는 항상 컴퓨터를 잠급니다.• 필요 없거나 더 이상 사용하지 않는 콘솔 유틸리티는 제거하거나 비활성화합니다.• 셸 또는 원격 액세스 프로그램(사용하는 경우)에서 입력한 명령을 로깅하지 않도록 합니다.• 셸 명령 기록에서 캡처하지 않는 파라미터를 전달하는 기술을 사용합니다. 다음 예는 텍스트 파일에 보안

암호 텍스트를 입력한 후 이 파일을 AWS Secrets Manager 명령으로 전달하고 바로 폐기하는 방법을 보여줍니다. 즉, 일반적인 셸 기록에 보안 암호 텍스트가 캡처되지 않습니다.

다음 예에는 일반적인 Linux 명령이 나와 있습니다. 사용 중인 셸에 약간 다른 명령이 필요할 수 있습니다.

$ touch secret.txt # Creates an empty text file$ chmod go-rx secret.txt # Restricts access to the file to only the user$ cat > secret.txt # Redirects standard input (STDIN) to the text fileThisIsMyTopSecretPassword^Z # Everything the user types from this point up to the CTRL-D (^D) is saved in the file$ aws secretsmanager create-secret --name TestSecret --secret-string file://secret.txt # The Secrets Manager command takes the --secret-string parameter from the contents of the file$ shred -u secret.txt # The file is destroyed so it can no longer be accessed.

이러한 명령을 실행한 후에는 위쪽 및 아래쪽 화살표를 사용해 명령 기록을 스크롤하고 보안 암호 텍스트가임의의 행에 표시되지 않았는지 확인할 수 있어야 합니다.

28

Page 35: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서교차 계정 액세스 — 사용자/역

할 또는 계정을 지정해야 합니까?

Important

기본적으로 명령 기록 버퍼 크기를 먼저 1로 줄이지 않으면 Windows에서는 동일한 기능을 수행할수 없습니다.

Windows 명령 프롬프트를 1개의 명령 기록 버퍼만 갖도록 구성하려면

1. 관리자 명령 프롬프트(관리자로 실행)를 엽니다.2. 왼쪽 위에 있는 아이콘을 선택한 다음 속성을 선택합니다.3. 옵션 탭에서 버퍼 크기 및 버퍼 수를 둘 다 1로 설정하고 확인을 선택합니다.4. 기록에 표시하지 않으려는 명령을 입력해야 할 때마다 다음과 같은 다른 명령 하나를 즉시 입력합니다.

echo.

그러면 민감한 명령이 플러시됩니다.

Windows 명령 프롬프트 셸에서 SysInternals SDelete 도구를 다운로드하고 다음과 유사한 명령을 사용할 수있습니다.

C:\> echo. 2> secret.txt # Creates an empty fileC:\> icacls secret.txt /remove "BUILTIN\Administrators" "NT AUTHORITY/SYSTEM" /inheritance:r # Restricts access to the file to only the ownerC:\> copy con secret.txt /y # Redirects the keyboard to text file, suppressing prompt to overwriteTHIS IS MY TOP SECRET PASSWORD^Z # Everything the user types from this point up to the CTRL-Z (^Z) is saved in the fileC:\> aws secretsmanager create-secret --name TestSecret --secret-string file://secret.txt # The Secrets Manager command takes the --secret-string parameter from the contents of the fileC:\> sdelete secret.txt # The file is destroyed so it can no longer be accessed.

교차 계정 액세스 — 사용자/역할 또는 계정을 지정해야 합니까?

보안 암호에 연결된 리소스 기반 정책을 사용하여 다른 AWS 계정의 IAM 보안 주체에 액세스를 부여하려는경우 두 가지 옵션을 사용할 수 있습니다.

• 다른 계정 ID만 지정—Principal요소에 대해 “외부” 계정 루트의 Amazon 리소스 이름 (ARN) 을 지정합니다. 이렇게 하면 외부 계정의 관리자에게 외부 계정의 역할에 대한 액세스 권한을 위임할 수 있습니다.그런 다음 이 관리자는 보안 암호에 액세스해야 하는 역할에 IAM 권한 정책을 할당해야 합니다.

"Principal": {"AWS": arn:aws:iam::AccountId:root}

• 다른 계정의 정확한 사용자 또는 역할 지정— 정확한 사용자 또는 역할 ARNPrincipal비밀 기반 정책의.다른 계정의 관리자에게서 ARN을 받습니다. 계정의 특정 단일 사용자 또는 역할만 리소스에 액세스할 수있습니다.

"Principal": [ {"AWS": "arn:aws:iam::AccountId:role/MyCrossAccountRole"},

29

Page 36: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서VPC 모두 실행

{"AWS": "arn:aws:iam::AccountId:user/MyUserName"}]

다음과 같은 이유로 보안 암호 기반 정책에서 계정만 지정하는 것이 가장 좋습니다.

• 두 경우 모두 다른 계정의 관리자를 신뢰합니다. 첫 번째 경우, 권한이 있는 사용자만 IAM 사용자에 액세스하거나 지정된 역할을 수임하게 할 수 있도록 관리자를 신뢰합니다. 이렇게 하면 기본적으로 계정 ID만 지정하는 경우와 동일한 신뢰 수준이 생성됩니다. 계정과 관리자를 신뢰합니다. 계정 ID만 지정하는 경우 관리자에게 사용자를 관리할 수 있는 유연성을 제공합니다.

• 정확한 역할을 지정하는 경우 IAM에서는 역할을 해당 역할에 고유한 “보안 주체 ID”로 내부적으로 변환합니다. 역할을 삭제하고 동일한 이름으로 다시 만들면 새로운 보안 주체 ID가 부여됩니다. 즉, 새 역할이 리소스에 대한 액세스 권한을 자동으로 받지 않습니다. IAM은 보안을 위한 이 기능을 제공하며 실수로 삭제및 복원하면 액세스 권한이 “손상”될 수 있습니다.

계정 루트에만 권한을 부여하면 권한 세트가 계정 관리자가 사용자 및 역할에 위임할 수 있는 옵션을 제한합니다. 계정에 먼저 권한을 부여하지 않으면 관리자가 리소스에 권한을 부여할 수 없습니다.

Important

역할을 사용하지 않고 교차 계정 액세스를 보안 암호에 직접 부여하도록 선택하는 경우, 사용자 지정 AWS KMS 고객 마스터 키 (CMK) 를 사용하여 보안 암호를 암호화해야 합니다. 다른 계정의 보안 주체는 보안 암호 및 사용자 지정 AWS KMS CMK 모두에 대한 권한을 부여 받아야 합니다.

VPC 모두 실행가능한 경우 대부분의 인프라를 퍼블릭 인터넷에서 액세스할 수 없는 프라이빗 네트워크에서 실행해야 합니다. 이를 위해서는 Amazon VPC에서 제공하는 가상 프라이빗 클라우드 (VPC) 에서 서버와 서비스를 호스팅하십시오. AWS는 계정의 리소스에만 액세스할 수 있는 가상 프라이빗 네트워크를 제공합니다. 명시적으로액세스할 수 있도록 구성하지 않는 한 퍼블릭 인터넷에서 보거나 액세스할 수 없습니다. 예를 들어, NAT 게이트웨이를 추가할 수 있습니다. Amazon VPC 대한 자세한 내용은 단원을 참조하십시오.Amazon VPC 사용설명서를 선택합니다.

VPC 환경에서 보안 암호 교체를 활성화하려면 다음과 같이 합니다.

1. 교체 암호를 사용하여 데이터베이스 서버나 서비스와 동일한 VPC 실행하도록 Lambda 교체 함수를 구성합니다. 자세한 내용은 단원을 참조하십시오.Amazon VPC 리소스에 액세스하도록 Lambda 함수 구성의AWS Lambda 개발자 안내서를 선택합니다.

2. 현재 VPC 내에서 실행 중인 Lambda 교체 함수는 Secrets Manager 서비스 엔드포인트에 액세스할 수 있어야 합니다. VPC PC에서 인터넷에 직접 연결할 수 없는 경우, VPC 모든 리소스에서 액세스할 수 있는프라이빗 보안 Secrets Manager 엔드포인트를 사용하여 VPC를 구성할 수 있습니다. 세부 정보는 보안 암호 교체를 지원하도록 네트워크 구성 (p. 86) 단원을 참조하십시오.

암호에 태그를 지정합니다.여러 AWS 서비스를 통해태그를 리소스에 추가하고 Secrets Manager 사용하면 비밀에 태그를 지정할 수 있습니다. Secrets Manager 는 고객이 정의한 키와 선택적 값으로 구성된 간단한 레이블로 태그를 정의합니다.태그를 사용하여 AWS 계정의 리소스를 손쉽게 관리 및 검색하고 필터링할 수 있습니다. 보안 암호에 태그를지정할 경우 다음 지침을 준수하십시오.

• 모든 리소스에 대해 표준 이름 지정 체계를 사용하십시오. 태그는 대/소문자를 구분한다는 점을 유의하십시오.

• 다음을 수행할 수 있도록 태그 세트를 생성합니다.

30

Page 37: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서보안 암호에 대한 속성 기반 액세스 제어 (ABAC) 구현

• 보안/액세스 제어— 보안 암호에 연결된 태그를 확인하여 보안 암호에 대한 액세스를 허가하거나 거부할수 있습니다.

• 비용 할당 및 추적— AWS 청구서를 태그별로 그룹화하고 분류할 수 있습니다. 자세한 내용은 단원을 참조하십시오.비용 할당 태그 사용의AWS BBilling and Cost Management 사용 설명서를 선택합니다.

• 자동화— 태그를 사용하여 자동화 작업을 위해 리소스를 필터링할 수 있습니다. 예를 들어, 일부 고객은업무 외 시간에 개발 환경의 가동을 중단하는 자동화된 시작/중지 스크립트를 실행하여 비용을 절감합니다. 특정 Amazon EC2 인스턴스를 종료에 포함할지 여부를 지정하는 태그를 생성한 후 확인할 수 있습니다.

• AWS Management 콘솔— 일부 AWS 서비스 콘솔을 사용하여 표시된 리소스를 태그에 따라 분류하고,태그별로 정렬 및 필터링할 수 있습니다. AWS 는 Resource Groups 도구를 제공하여 태그를 기반으로 리소스를 통합하고 체계화하는 사용자 지정 콘솔을 생성합니다. 자세한 내용은 단원을 참조하십시오.Resource Groups 작업의AWS Management Console 시작 안내서를 선택합니다.

태그를 창의적으로 사용하여 보안 암호를 관리하십시오. 하지만 태그에 보안 암호에 대한 민감한 정보를 저장하지 마십시오.

보안 암호를 생성할 때 (p. 53) 또는 보안 암호를 편집할 때 (p. 57) 태그를 지정할 수 있습니다.

자세한 내용은 단원을 참조하십시오.AWS 태깅 전략에 있는AWS Answers웹 사이트를 참조하십시오.

보안 암호에 대한 속성 기반 액세스 제어 (ABAC) 구현ABAC(속성 기반 액세스 제어)는 속성을 기반으로 권한을 정의하는 권한 부여 전략입니다. AWS 에서는 이러한 속성을 태그라고 합니다. 태그는 IAM 보안 주체 (사용자 또는 역할) 와 AWS 리소스에 연결할 수 있습니다. IAM 보안 주체에 대해 단일 ABAC 정책 또는 작은 정책 세트를 생성할 수 있습니다. 이러한 ABAC 정책은보안 주체의 태그가 리소스 태그와 일치할 때 작업을 허용하도록 설계될 수 있습니다. ABAC는 빠르게 성장하는 환경에서 유용하며 정책 관리가 번거로운 상황에 도움이 됩니다.

예를 들어, 특정 태그를 가진 보안 주체에 대해서만 다른 계정에 대한 액세스를 허용할 수 있습니다. 다른 계정에서 역할을 만들 때 역할에 태그를 추가하여 역할에 필요한 비밀에 액세스할 수 있도록 합니다.

다음 리소스 정책은 권한을 부여합니다.GetSecretValue계정에123456789012태그의 경우에만access-project는 비밀 및 액세스 역할에 대해 동일한 값을 갖습니다.

{ "Version" : "2012-10-17", "Statement" : [ { "Effect": "Allow", "Principal" : {"AWS": "123456789012"}, "Condition" : { "StringEquals" : { "aws:ResourceTag/access-project": "${aws:PrincipalTag/access-project}" } }, "Action" : "secretsmanager:GetSecretValue", "Resource" : "*" } ] }

이 전략을 적용하여 액세스 제어 관리를 간소화할 수 있습니다. 자세한 내용은 AWS용 ABAC란 무엇입니까?단원을 참조하십시오.

이 기능을 비밀에 추가하는 방법에 대한 자습서는IAM 자습서: 태그를 기반으로 AWS 리소스에 액세스할 수있는 권한을 정의합니다.

31

Page 38: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서일정에 따라 보안 암호 교체

일정에 따라 보안 암호 교체오랜 기간 동안 보안 암호를 바꾸지 않으면 보안 암호가 손상될 가능성이 높아집니다. 더 많은 사용자가 보안암호에 액세스할 수 있으므로 누군가가 잘못 취급하여 권한 없는 사용자에게 유출할 수 있습니다. 보안 암호는 로그 및 캐시 데이터를 통해 유출될 수 있습니다. 디버깅 목적으로 보안 암호를 공유할 수 있으며, 디버깅이 끝나도 보안 암호를 변경하거나 취소하지 않습니다. 이러한 모든 이유로 보안 암호는 자주 교체해야 합니다.

보안 Secrets Manager 구성하여 보안 암호를 자주 교체하도록 구성하여 애플리케이션에 동일한 보안 암호를 사용하지 마십시오. 30일마다 보안 암호를 교체하는 것이 좋습니다.

AWS Secrets Manager 보안 암호 교체 (p. 83)섹션을 참조하십시오.

암호에 대한 액세스 감사가장 좋은 방법은 보안 암호 사용을 모니터링하고 변경 사항을 기록하는 것입니다. 이를 통해 예기치 않은 사용 또는 변경을 조사하고 원치 않는 변경 사항을 취소할 수 있습니다.

AWS CloudTrail을 사용하여 보안 암호 액세스를 모니터링하고 보안 Secrets Manager 대한 모든 활동을 기록할 수 있습니다. 또한 부적절한 보안 암호 사용에 대한 자동 검사를 설정해야 합니다.

AWS Secrets Manager 보안 암호 사용 (p. 137)섹션을 참조하십시오.

비밀을 삭제하려는 시도를 알려주도록 CloudWatch 를 구성할 수도 있습니다.

AWS Config를 사용하여 보안 암호 모니터링AWS Secrets Manager는 AWS Config와 통합되며, 이를 통해 Secrets Manager의 보안 암호 변경 사항을더욱 쉽게 추적할 수 있습니다. AWS Config는 보안 암호 관리 모범 사례에 대한 조직의 내부 지침을 정의하는 데 도움이 될 수 있습니다. 또한 보안 규칙을 준수하지 않는 보안 암호를 신속하게 식별하는 것은 물론Amazon SNS에서 보안 암호의 구성 변경에 대한 알림을 받을 수 있습니다.

AWS Config 를 사용하여 Secrets Manager 비밀 모니터링 (p. 153)섹션을 참조하십시오.

Secrets Manager 사용하여 Lambda 함수에 데이터베이스 자격 증명 제공

Secret Secrets Manager 를 사용하면 Lambda 함수에 데이터베이스 자격 증명을 안전하게 제공하고 데이터베이스를 보호할 수 있을 뿐만 아니라 코드의 암호를 하드 코딩하거나 환경 변수를 통해 전달하지 않고도 자격 증명을 사용하여 연결하고 쿼리할 수 있습니다. 수명 주기가 연장된 비밀은 중요한 시스템에 안전하게 액세스할 수 있도록 정기적으로 교체해야 합니다. Secrets Manager 관리 하 고 데이터베이스 암호를 회전 하는기능을 제공 합니다.

이 기능 구현에 대한 자세한 내용은 단원을 참조하십시오.AWS Secrets Manager 사용하여 Lambda 함수에데이터베이스 자격 증명을 안전하게 제공하는 방법

모범 사례에 대한 추가 리소스보안에 대한 전반적인 모범 사례는보안 기둥 — AWS Well-Architected Framework를 선택합니다.

32

Page 39: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서모범 사례에 대한 추가 리소스

Secrets Manager 대한 자세한 내용은비밀을 안전하게 저장 및 사용를 선택합니다.

33

Page 40: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서개요

AWS Secrets Manager 대한 인증 및액세스 제어

AWS 비밀 관리자에 액세스하려면 AWS 자격 증명이 필요합니다. 이러한 자격 증명에는 액세스하려는 AWS리소스에 대한 권한 (예: 보안 Secrets Manager) 이 있어야 합니다. 다음 단원에서는 AWS IAM (Identity forAccess Management) 정책을 사용하여 보안 암호에 안전하게 액세스하도록 지원하고 보안 암호에 액세스할수 있는 사람과 보안 암호를 관리하는 사람을 제어하는 방법에 대해 자세히 설명합니다.

보안 암호에는 매우 민감한 정보가 포함되어 있으므로 보안 암호에 대한 액세스는 엄격하게 제어해야 합니다. AWS 및 IAM 권한 정책의 권한 기능을 사용하여 보안 암호에 액세스하는 사용자 또는 서비스를 제어할수 있습니다. 사용자가 권한 있는 보안 암호에 대해 수행할 수 있는 API, CLI 및 콘솔 작업을 지정할 수 있습니다. 의 세분화된 액세스 기능을 활용하여IAM 정책 언어에서 태그를 필터로 사용하여 사용자를 비밀의 하위 집합으로 제한하거나 심지어 하나의 개인 비밀로 제한하도록 선택할 수 있습니다. 또한 스테이징 레이블을 필터로 사용하여 사용자를 보안 암호의 특정 버전으로 제한할 수도 있습니다.

또한 누가 어떤 보안 암호를 관리할지 결정할 수도 있습니다. 보안 암호 및 관련 메타데이터를 업데이트하거나 수정할 사용자를 지정합니다. AWS 보안 암호 관리자 서비스에 대한 관리자 권한이 있는 경우 다른 사용자에게 권한을 부여하여 보안 암호 관리자 작업에 대한 액세스 권한을 위임할 수 있습니다.

권한 정책을 사용자, 그룹 및 역할에 연결하고 연결된 자격 증명에서 액세스할 수 있는 보안 암호를 지정할수 있습니다. Secrets Manager 다음과 같이이 프로세스를 참조자격 증명 기반 정책를 선택합니다. 또는 권한 정책을 보안 암호에 직접 연결하고 보안 암호에 대한 액세스를 지정할 수 있습니다. Secrets Manager 는이 프로세스 a를 참조리소스 기반 정책를 선택합니다. 어느 방법이든 권한 정책은 각 보안 주체가 보안 암호에 대해 수행할 수 있는 작업을 지정합니다.

IAM 권한 정책에 대한 일반적인 내용은 단원을 참조하십시오.IAM 정책 개요의IAM 사용 설명서를 선택합니다.

AWS Secrets Manager 에서 사용하도록 특별히 제공되는 권한은 단원을 참조하십시오.IAM 정책 또는 AWSSecrets Manager 보안 암호 정책에서 사용할 수 있는 작업, 리소스 및 컨텍스트 키 (p. 180)를 선택합니다.

다음 단원에서는 AWS Secrets Manager 대한 권한을 관리하는 방법을 설명합니다. 먼저 개요를 읽어 보면도움이 됩니다.

• 보안 Secrets Manager 에 대한 액세스 권한 관리 개요 (p. 34)• 보안 Secrets Manager 대한 자격 증명 기반 정책 (IAM 정책) 및 ABAC 사용 (p. 45)• 보안 Secrets Manager 대한 리소스 기반 정책 사용 (p. 51)

보안 Secrets Manager 에 대한 액세스 권한 관리 개요

AWS 계정은 AWS 보안 암호 관리자에 저장한 보안 암호를 포함하여 모든 AWS 리소스를 소유합니다. AWS에는 리소스를 생성하거나 액세스하는 권한 정책이 포함되어 있습니다. 계정 관리자는 리소스(보안 암호) 또는 리소스에 대한 액세스 권한이 필요한 IAM 자격 증명(사용자, 그룹 및 역할)에 직접 권한 정책을 연결하여AWS 리소스에 대한 액세스를 제어할 수 있습니다.

Note

관리자(또는 관리자 사용자)는 관리자 권한을 갖습니다. 이는 일반적으로 이러한 사용자에게 서비스의 모든 리소스에 대한 작업을 모두 수행할 수 있는 권한이 있음을 의미합니다. 자세한 내용은IAM 사용 설명서의 IAM 모범 사례 단원을 참조하십시오.

34

Page 41: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Authentication

Secrets Manager 계정 관리자는 계정 내 다른 IAM 사용자 또는 역할에 관리자 권한을 위임하는 것을 포함한관리 작업을 수행할 수 있습니다. 이렇게 하려면 IAM 권한 정책을 IAM 사용자, 그룹 또는 역할에 연결해야 합니다. 기본적으로 사용자는 어떤 권한도 가지지 않습니다. 즉 사용자는 암시적 거부 권한을 갖습니다. 연결한정책은 사용자가 수행할 수 있는 작업과 사용자가 작업을 수행할 수 있는 리소스를 지정하는 명시적 허용으로 암시적 거부를 재정의합니다. 정책은 계정 내 사용자, 그룹 및 역할에 연결할 수 있습니다. 권한을 역할에부여하면, 해당 역할은 조직 내 다른 계정의 사용자가 맡을 수 있습니다.

주제• Authentication (p. 35)• 액세스 제어 및 권한 부여 (p. 36)

AuthenticationAWS 는 인증을 액세스하는 서비스에서 사용자를 나타내는 자격 증명을 설정하는 프로세스로 정의합니다.일반적으로 관리자가 사용자에게 자격 증명을 할당하고 사용자는 사용자 이름 및 암호와 같은 요청에 자격증명을 제공하거나 AWS 액세스 키로 요청을 암호화하여 자격 증명에 액세스합니다.

AWS 는 다음 자격 증명 유형을 지원합니다.

• AWS 계정 루트 사용자— AWS에 가입할 때 AWS 계정의 이메일 주소 및 암호를 입력해야 합니다. AWS는 이 정보를자격 증명계정 루트 사용자에 대한 모든 액세스 권한을 제공하며, 모든 AWS 리소스에 대한모든 액세스 권한을 제공합니다.

Important

보안상 관리자 사용자, 즉 AWS 계정에 대한 전체 권한이 있는 IAM 사용자를 만들 때만 루트 사용자 자격 증명을 사용하는 것이 좋습니다. 그런 다음 이 관리자 사용자를 사용하여 작업 또는역할에 대해 제한된 특정 권한이 있는 다른 IAM 사용자 및 역할을 생성할 수 있습니다. https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#create-iam-usershttps://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started_create-admin-group.html자세한 정보는 IAM 사용 설명서의 개별 IAM 사용자 만들기(IAM 모범 사례) 및 관리자 및 그룹 만들기를 참조하십시오.

• IAM 사용자–IAM 사용자에는 보안 암호 Secrets Manager 보안 암호에 액세스하는 등의 특정 권한이 있는AWS 계정 내 자격 증명이 있습니다. IAM 사용자 이름과 암호를 사용하여 AWS 웹 페이지에 로그인할 수있습니다.AWS Management 콘솔,AWS 토론 포럼또는AWS 지원 센터를 선택합니다.

사용자 이름과 암호 이외에 각 사용자별 액세스 키를 생성하여 사용자가 AWS SDK 중 하나 또는 명령줄도구를 통해 프로그래밍 방식으로 AWS 서비스에 액세스하도록 할 수도 있습니다. SDK와 명령줄 도구는액세스 키를 사용하여 암호화 방식으로 API 요청에 서명합니다. AWS 도구를 사용하지 않는 경우 API 요청에 직접 서명해야 합니다. AWS KMS 는서명 버전 4, API 요청을 인증하기 위한 AWS 프로토콜입니다.API 요청 인증에 대한 자세한 정보는 AWS 일반 참조의 서명 버전 4 서명 프로세스를 참조하십시오.

• IAM 역할— 생성할 수 있는IAM 역할특정 권한이 있는 계정에. IAM 사용자와 마찬가지로 IAM 역할은 특정개인과 연결되지 않습니다. IAM 역할을 사용하면 AWS 서비스 및 리소스에 프로그래밍 방식으로 액세스하기 위한 임시 액세스 키를 얻을 수 있습니다. AWS 역할은 다음 상황에서 유용합니다.• 연합된 사용자 액세스IAM 사용자를 생성하는 대신, 의 기존 사용자 자격 증명을 사용할 수 있습니

다.AWS Directory Service, 엔터프라이즈 사용자 디렉터리 또는 웹 자격 증명 공급자 (IdP) 의 역할을 합니다. 이러한 사용자를 연동 사용자라고 합니다. 자격 증명 공급자IAM 역할을 연합된 사용자와 연결합니다. 연합된 사용자에 대한 자세한 정보는 IAM 사용 설명서의 연합된 사용자 및 역할을 참조하십시오.

• 교차 계정 액세스AWS 계정의 IAM 역할을 사용하여 다른 AWS 계정에 계정 리소스에 액세스할 권한을허용할 수 있습니다. 예제는 단원을 참조하십시오.자습서: IAM 역할을 사용하여 AWS 계정 간 액세스 권한 위임의IAM 사용 설명서를 선택합니다.

• AWS 서비스 액세스계정의 IAM 역할을 사용하여 AWS 서비스에 계정 리소스에 액세스할 권한을 부여할 수 있습니다. 예를 들어, Amazon Redshift 에서 사용자 대신 S3 버킷에 액세스하도록 허용하는 역할을 만든 다음 S3 버킷에 저장된 데이터를 Amazon Redshift 클러스터로 로드할 수 있습니다. 자세한 정보는 IAM 사용 설명서의 AWS 서비스에 대한 권한을 위임할 역할 생성을 참조하십시오.

35

Page 42: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서액세스 제어 및 권한 부여

• EC2 인스턴스에서 실행 중인 애플리케이션— EC2 인스턴스에 액세스 키를 저장하는 대신에, 인스턴스에서 실행되고 AWS API 요청을 전송하는 애플리케이션에서 사용할 수 있도록, IAM 역할을 사용하여 이러한 애플리케이션에 임시 액세스 키를 제공할 수 있습니다. EC2 인스턴스에 IAM 역할을 할당하려면인스턴스 프로파일을 생성한 후 인스턴스를 시작할 때 프로파일을 연결합니다. 인스턴스 프로파일에는IAM 역할이 포함되어 있으며 EC2 인스턴스에서 실행되는 애플리케이션이 임시 액세스 키를 얻을 수 있습니다. https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html자세한정보는 IAM 사용 설명서의 Amazon EC2에서 실행되는 애플리케이션의 역할 사용하기를 참조하십시오.

자격 증명을 사용하여 로그인한 후 액세스 제어 및 권한 부여를 사용하여 자격 증명을 통해 수행할 수 있는작업을 설정합니다.

액세스 제어 및 권한 부여요청을 인증하는 데 자격 증명이 포함된 유효한 자격 증명이 있더라도권한를 사용하여 Secrets Manager 리소스를 만들거나 관리하거나 사용하도록 Secrets Manager API 요청을 만들 수 있습니다. 예를 들어 보안 암호를 생성, 관리, 검색하는 등의 권한이 있어야 합니다. 다음 단원에서는 보안 Secrets Manager 대한 권한 관리를 설명합니다.

Secrets Manager 정책: 리소스 및 작업 결합이 단원에서는 보안 Secrets Manager 개념이 IAM 개념에 매핑하는 방법을 설명합니다.

Policies보안 Secrets Manager 권한 정책을 생성하고 연결해 대부분의 모든 AWS 서비스에서처럼 권한을 부여합니다. 정책에는 다음과 같은 두 가지 기본 유형이 있습니다.

• 자격 증명 기반 정책— 사용자, 그룹 또는 역할에 직접 연결됩니다. 정책은 연결된 자격 증명에 허용되는작업을 지정합니다. 연결된 사용자는 자동 및 암시적으로 정책의 Principal이 됩니다. 자격 증명이 수행할 수 있는 Actions 및 자격 증명이 작업을 수행할 수 있는 Resources를 지정할 수 있습니다. 정책을 통해 다음 작업을 수행할 수 있습니다.• 자격 증명을 공유할 여러 리소스에 대한 액세스 권한을 부여합니다.• 존재하지 않는 리소스에 대한 API(예: 다양한 Create* 작업)에 대한 액세스를 제어합니다.• 리소스에 IAM 그룹에 대한 액세스 권한을 부여합니다.

• 리소스 기반 정책— 리소스에 직접 연결됩니다. 이 경우에는 보안 암호입니다. 이 정책은 보안 암호에 대한액세스 및 사용자가 보안 암호에 대해 수행하는 작업을 지정합니다. 연결된 보안 암호는 자동 및 암시적으로 정책의 Resource가 됩니다. 보안 암호에 액세스할 수 있는 Principals 및 해당 보안 주체가 수행할수 있는 Actions를 지정할 수 있습니다. 정책을 통해 다음 작업을 수행할 수 있습니다.• 여러 보안 주체(사용자 또는 역할)에 단일 보안 암호에 대한 액세스 권한을 부여합니다. 참고:할 수 없습

니다.리소스 기반 정책의 보안 주체로서 IAM 그룹을 지정합니다. 사용자 및 역할만 보안 주체가 될 수 있습니다.

• AWS 계정의 계정 ID를 지정하여 다른 AWS 계정의 사용자 또는 역할에 액세스 권한을 부여합니다.Principal정책 문의 요소. 이 보안 암호에 대한 "교차 계정" 액세스의 요구 사항이 리소스 기반 정책을 사용하는 주된 이유 중 하나입니다.

사용해야 할 유형은 무엇입니까? 기능이 상당 부분 겹치더라도 하나가 다른 하나보다 나은 확실한 이점이 있는 시나리오가 두 개 있는 경우 둘 다 보안 전략에서 고려해야 합니다. 둘 중 한 가지 정책 유형만 적용할 수있는 경우에는 사용자가 조직에서 들고 날 때 정책의 유지 관리를 간소화하는 유형을 선택합니다.

Important

한 계정의 IAM 보안 주체가 다른 계정에 있는 보안 암호에 액세스하는 경우, 이 보안 암호는 사용자 지정 AWS KMS 고객 마스터 키 (CMK) 를 사용하여 암호화되어야 합니다. 계정의 기본 보안Secrets Manager CMK를 사용하여 암호화된 보안 암호는 해당 계정의 보안 주체만 해독할 수 있습

36

Page 43: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서액세스 제어 및 권한 부여

니다. 다른 계정의 보안 주체는 보안 암호 및 사용자 지정 AWS KMS CMK 모두에 대한 권한을 부여받아야 합니다.또는 사용자에게 교차 계정 액세스 권한을 부여하여 보안 암호와 동일한 계정에서 IAM 역할을 맡을수 있습니다. 이 역할은 보안 암호와 동일한 계정에 있기 때문에 해당 계정의 기본 AWS KMS 키를사용하여 암호화된 보안 암호에 액세스할 수 있습니다.

Resources보안 Secrets Manager 액세스를 제어할 수 있는보안 암호,

각 보안 암호에는 관련된 고유 Amazon 리소스 이름(ARN)이 있습니다. 에서 ARN 지정하면 보안 암호에 대한 액세스를 제어할 수 있습니다.ResourceIAM 권한 정책의 요소입니다. 보안 암호의 ARN 형식은 다음과같습니다.

arn:aws:secretsmanager:<region>:<account-id>:secret:optional-path/secret-name-6-random-characters

리소스 소유권 이해

AWS 계정은 리소스를 누가 생성했든 상관없이 계정에서 생성한 리소스를 소유합니다. 특히, 리소스 소유자는 자격 증명이 리소스 생성 요청을 인증하는 루트 사용자, IAM 사용자 또는 IAM 역할의 AWS 계정입니다.다음 예에서는 이 계정의 작동 방식을 설명합니다.

• 루트 사용자 계정으로 로그인해 보안 암호를 생성하면 AWS 계정이 리소스의 소유자가 됩니다.• 계정에서 IAM 사용자를 생성하고 보안 암호를 생성할 수 있는 권한을 부여하면, 사용자가 보안 암호를 생

성할 수 있습니다. 그러나 사용자의 AWS 계정이 보안 암호를 소유합니다.• 계정에서 보안 암호를 생성할 권한이 있는 IAM 역할을 생성하는 경우 해당 역할을 담당할 수 있는 사람은

누구나 보안 암호를 생성할 수 있습니다. 역할의 AWS 계정 (가정 사용자) 은 보안 암호를 소유합니다.

작업 및 연산Secrets Manager 집합을 제공합니다연산(API 호출 및 CLI 명령) 을 사용하여 보안 암호로 작업할 수 있습니다. 작업을 통해 보안 암호 생성, 나열, 액세스, 수정 또는 삭제와 같은 작업을 수행할 수 있습니다. 이러한작업은 해당 작업에 대한 액세스를 부여하거나 거부하는 데 사용할 수 있는 정책 작업에 해당합니다. 대부분의 경우 정책에서 할당할 수 있는 API 작업과 동작 간에는 일대일 관계가 있습니다. 작업에 대한 액세스를 제어하려면ActionIAM 정책의 요소를 사용합니다. 정책에 사용되는 허용된 보안 Secrets Manager 작업목록은IAM 정책 또는 AWS Secrets Manager 보안 암호 정책에서 사용할 수 있는 작업, 리소스 및 컨텍스트키 (p. 180)를 선택합니다.

• 두 가지를 결합 할 때Action요소와Resource의 요소자격 증명기반 권한 정책Statement을 선택한 다음수행된 작업과 리소스를 모두 제어합니다. 제한 사항이 정책이 연결된 사용자, 그룹 또는 역할에 적용됩니다.

• 두 가지를 결합 할 때Action요소와PrincipalA의 요소리소스기반 권한 정책Statement을 선택하면 수행할 수 있는 작업과 해당 작업을 수행하는 사용자, 그룹 또는 역할 (보안 주체) 을 모두 제어할 수 있습니다. 제한 사항이 정책이 연결된 보안 암호에 적용됩니다.

새 보안 암호 생성 권한을 부여하려는 경우 사용자, 그룹 또는 역할에 연결된 자격 증명 기반 정책을 사용합니다. 이 기능은 유사한 방법으로 여러 보안 암호를 함께 관리하려는 경우에도 유용할 수 있습니다.

기존 보안 암호 액세스 권한을 부여하려는 경우 보안 암호에 연결된 리소스 기반 정책을 사용할 수 있습니다.

정책을 사용하여 리소스에 대한 액세스 관리권한 정책은 누가 어떤 리소스에 대해 어떤 작업을 수행할 수 있는지 설명합니다. 다음 단원에서는 권한 정책을 만드는 데 사용할 수 있는 옵션에 대해 설명하고, 정책을 구성하는 요소와 보안 암호에 대해 만들 수 있는두 가지 유형의 정책에 대해 간략하게 설명합니다.

37

Page 44: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서액세스 제어 및 권한 부여

Note

이 단원에서는 보안 Secrets Manager 컨텍스트에서 IAM 사용에 대해 설명하지만 IAM 서비스에 대한 세부적인 정보는 제공하지 않습니다. IAM 설명서 전체 내용은 IAM 사용 설명서를 참조하십시오.IAM 정책 구문과 설명에 대한 자세한 내용은AWS IAM 정책 참조의IAM 사용 설명서를 선택합니다.

보안 암호 관리자에 대해 보안 암호 기반 또는 자격 증명 기반 권한 정책을 사용한다는 것을 이해해야 합니다. 보안 Secrets Manager 적용된 모든 정책과 프로세스를 하나의 큰 정책으로 그룹화합니다. 이 기본 규칙구조는 상호 작용을 제어합니다.

명시적 거부 >> 명시적 허용 >> 암시적 거부(기본값)

AWS 리소스에서 AWS 작업을 수행하라는 요청의 경우 다음 규칙을 적용합니다.

• 명시적 “거부”가 포함된 정책의 문이 요청의 작업 및 리소스와 일치하는 경우: 명시적 거부가 기타 모든 것을 재정의하고 지정된 리소스에서 지정된 작업을 차단합니다.

• 명시적 “거부”는 없지만 요청의 작업 및 리소스와 일치하는 명시적 “허용”이 포함된 문이 없는 경우: 명시적허용이 적용되어 해당 문의 작업에 문의 리소스에 대한 액세스 권한을 부여합니다.

• 명시적 “거부”가 포함된 문이 없고 요청의 작업 및 리소스와 일치하는 명시적 “허용”이 포함된 문이 없는 경우: AWS암묵적으로기본적으로 요청을 거부합니다.

명시적 허용이 암시적 거부를 재정의할 수 있다는 점을 이해해야 합니다. 명시적 거부는 재정의될 수 없습니다.

여러 정책이 적용될 때 유효한 권한

정책 A 정책 B 유효한 권한

허용 적용 안 됨 액세스가 허용되었습니다

허용 허용 액세스가 허용되었습니다

허용 거부 액세스가 거부되었습니다

적용 안 됨 적용 안 됨 액세스가 거부되었습니다

적용 안 됨 허용 액세스가 허용되었습니다

적용 안 됨 거부 액세스가 거부되었습니다

거부 적용 안 됨 액세스가 거부되었습니다

거부 허용 액세스가 거부되었습니다

거부 거부 액세스가 거부되었습니다

정책 A와 정책 B는 사용자 또는 역할에 연결된 IAM 자격 증명 기반 정책 유형 또는 보안 암호에 연결된 리소스 기반 정책 유형일 수 있습니다. 처음 두 가지 정책(결과)의 유효한 권한을 사용하여 추가 정책의 효과를 포함하고, 이를 새 정책 A처럼 처리한 다음 세 번째 정책의 결과를 정책 B로 추가할 수 있으며, 적용되는 각 추가 정책에 대해 이를 반복할 수 있습니다.

주제• AWS 관리형 정책 (p. 39)• 정책 설명 요소 지정 (p. 39)• 자격 증명 기반 정책 (p. 40)

38

Page 45: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서액세스 제어 및 권한 부여

• 리소스 기반 정책 (p. 41)

AWS 관리형 정책AWS 에서 생성하고 관리하는 독립형 IAM 정책을 제공하여 많은 일반 사용 사례를 처리합니다. 이러한 관리형 정책은 사용자가 필요한 권한을 조사할 필요가 없도록 일반 사용 사례에 필요한 권한을 부여합니다. 자세한 내용은 단원을 참조하십시오.AWS 관리형 정책의IAM 사용 설명서를 선택합니다.

보안 Secrets Manager 에는 계정의 사용자에게 연결할 수 있는 특정 AWS 관리형 정책이 있습니다.

• SecretsManagerReadWrite이 정책은 IAM 사용자 및 역할에 연결하여 보안 Secrets Manager 관리할 수있습니다. 이 정책은 보안 Secrets Manager 서비스에 대한 모든 권한을 부여하고, Amazon CloudFront,AWS KMS 서버를 사용하지 않는 애플리케이션 리포지토리 및 같은 다른 서비스에 대한 권한을 제한합니다.

에서 이 정책을 볼 수 있는AWS Management 콘솔를 선택합니다.Important

보안상의 이유로 이 관리형 정책은하지에는 순환을 구성하는 데 필요한 IAM 권한이 포함됩니다.이러한 권한을 각각 명시적으로 부여해야 합니다. 일반적으로 연결할 수 있는IAMFullAccess보안암호의 관리자 관리형 정책을 보안 Secrets Manager 관리자에게 할당하여 교체를 구성할 수 있도록 설정합니다.

보안 암호의 관리자 팀은 AWS 관리형 정책을 사용하는 데 있어 중요한 이점이 될 수 있는 AWS 관리형 정책을 유지 관리합니다. 추가 권한이 필요한 새로운 기능을 포함하기 위해 교체 프로세스를 확장할 경우, 보안Secrets Manager 해당 권한을 관리형 정책에 추가합니다. 교체 함수는 새 권한을 자동으로 받으므로 중단 없이 예상대로 작동합니다.

정책 설명 요소 지정다음 단원에서는 보안 Secrets Manager 관점에서 IAM 권한 정책에 대한 개요를 간략히 살펴봅니다. IAM 정책 구문에 대한 자세한 내용은AWS IAM 정책 참조의IAM 사용 설명서를 선택합니다.

보안 암호의 관리자는 상호 작용할 수 있거나 몇 가지 방식으로 보안 암호를 조작할 수 있는 API 작업 세트를정의합니다. 보안 암호의 관리자는 이러한 작업에 대한 권한을 부여하기 위해 해당작업 (p. 180)에서는 정책에 지정할 수 있습니다. 예를 들어 보안 Secrets Manager 보안 암호에 대해 작업할 수 있는 작업을 정의합니다.CreateSecret,GetSecretValue,ListSecrets, 및RotateSecret를 선택합니다.

정책 문서에는 Version 요소가 있어야 합니다. 제공되는 기능을 모두 사용할 수 있도록 항상 최신 버전을사용하는 것이 좋습니다. 이 문서를 작성할 당시, 사용 가능한 유일한 버전은 2012-10-17(최신 버전)입니다.

또한 보안 암호 정책 문서에는 배열에 하나 이상의 명령문이 있는 Statement 요소가 하나 있어야 합니다.각 명령문은 최대 6개의 요소로 구성될 수 있습니다.

• SID— (선택 사항) 를 사용할 수 있는Sid문 식별자로서, 문을 식별하는 임의의 문자열입니다. 문자열에는공백이 있어서는 안 됩니다.

• 효과— (필수) 이 키워드를 사용하여 정책 명령문이 리소스에 대한 작업을 허용 또는 거부할지를 지정합니다. 명시적으로 리소스에 대한 액세스를 허용하지 않는 경우, 액세스는 묵시적으로 거부됩니다. 리소스에대한 액세스를 명시적으로 거부할 수도 있습니다. 서로 다른 정책에서 액세스 권한을 부여하더라도 사용자가 지정된 리소스에서 지정된 작업을 수행할 수 없도록 하려고 할 때 이러한 작업을 수행할 수 있습니다.중첩되는 문이 여러 개 있는 경우 문의 명시적 거부가 명시적으로 허용하는 다른 모든 문을 재정의합니다.명시적 허용 문은 기본적으로 제공되는 암시적 거부를 재정의합니다.

• 작업— (필수) 이 키워드를 사용하여 허용 또는 거부할 작업을 식별합니다. 항상 그렇지는 않지만 일반적으로 이러한 동작은 사용 가능한 작업과 일대일로 대응됩니다. 예를 들어, 지정된Effect,secretsmanager:PutSecretValue보안 Secrets Manager 수행할 수 있는 사용자 권한을허용하거나 거부합니다.PutSecretValue작업을 사용합니다.

39

Page 46: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서액세스 제어 및 권한 부여

• 리소스— (필수) 사용자, 그룹 또는 역할에 연결된 자격 증명 기반 정책에서는 이 키워드를 사용하여 정책문이 적용되는 리소스의 Amazon 리소스 이름 (ARN) 을 지정합니다. 명령문이 액세스를 특정 리소스로 제한하게 하지 않으려면 "*"를 사용하여 결과 명령문이 작업만 제한하도록 합니다. 보안 암호에 연결된 리소스 기반 정책에서 리소스는 항상 "*"여야 합니다.

• 보안 주체— 리소스 기반 정책에서만 필수) 보안 암호에 직접 연결된 리소스 기반 정책의 경우 권한을 받으려는 사용자, 역할, 계정, 서비스 또는 기타 개체를 지정합니다. 이 요소는 자격 증명 기반 정책에서 유효하지 않습니다. 자격 증명 기반 정책에서는 연결된 정책이 있는 사용자 또는 역할이 자동 및 암시적으로 보안주체가 됩니다.

• Condition— (선택 사항) 이 키워드를 사용하여 “일치시킬” 문이 있는 경우 true여야 하는 추가 조건을 지정하고Effect적용할 수 있습니다. 자세한 내용은 단원을 참조하십시오.IAM JSON 정책 요소: Condition를선택합니다.

자격 증명 기반 정책정책을 IAM 자격 증명에 연결할 수 있습니다. 예를 들면,

• 계정 내 사용자 또는 그룹에 권한 정책 연결보안 암호를 생성하는 사용자 권한을 부여하려면 권한 정책을사용자 또는 해당 사용자가 속한 그룹에 직업 연결하면 됩니다 (권장).

• 역할에 권한 정책 연결IAM 역할에 권한 정책을 연결하여 해당 역할을 맡은 사람에게 보안 암호에 대한 액세스 권한을 부여할 수 있습니다. 여기에는 다음 시나리오의 사용자가 포함됩니다.• 연합된 사용자— IAM 이외의 자격 증명 시스템으로 인증된 사용자에게 권한을 부여할 수 있습니다. 예

를 들어 IAM 역할을 Amazon Cognito 를 사용하여 로그인하는 모바일 앱 사용자에게 연결할 수 있습니다. 이 역할은 앱에 역할 권한 정책에 있는 권한과 함께 임시 자격 증명을 부여합니다. 이러한 권한에는 보안 암호에 대한 액세스 권한이 포함될 수 있습니다. 자세한 내용은 단원을 참조하십시오.AmazonCognito란 무엇입니까?의Amazon Cognito 개발자 안내서를 선택합니다.

• EC2 인스턴스에서 실행 중인 애플리케이션인스턴스에 IAM 역할을 연결하여 Amazon EC2 인스턴스에서 실행되는 애플리케이션에 권한을 부여할 수 있습니다. 인스턴스의 애플리케이션이 AWS API를 호출하는 경우 애플리케이션은 인스턴스 메타데이터로부터 AWS 임시 자격 증명을 얻을 수 있습니다. 이러한 임시 자격 증명은 역할과 연결되며 역할 권한 정책에 따라 제한됩니다. 이러한 권한에는 보안 암호에대한 액세스 권한이 포함될 수 있습니다.

• 교차 계정 액세스계정 A의 관리자가 다른 계정 B의 사용자에게 권한을 부여하는 역할을 생성할 수 있습니다. 예를 들어 다음과 같습니다.1. 계정 A 관리자는 IAM 역할을 생성하고 이 역할에 권한 정책을 연결합니다. 이 정책은 계정 A의 보안

암호에 대한 액세스를 부여하고, 사용자가 보안 암호에 대해 수행하는 작업을 지정합니다.2. 계정 A 관리자는 Principal 요소에서 계정 B의 계정 ID를 식별하는 역할에 신뢰 정책을 연결하여

해당 역할을 맡을 수 있는 사람을 지정합니다.3. 계정 B 관리자는 계정 B의 모든 사용자에게 계정 A의 역할을 맡을 수 있는 권한을 위임할 수 있습니

다. 이렇게 하면 계정 B의 사용자가 첫 번째 계정의 보안 암호에 액세스할 수 있습니다.

IAM을 사용하여 권한을 위임하는 방법에 대한 자세한 내용은액세스 관리의IAM 사용 설명서를 선택합니다.

다음 예제는 사용자, 그룹 또는 역할에 연결할 수 있는 정책을 보여줍니다. 이 정책은 영향 받는 사용자 또는 역할이 계정 내에서 이름이 "TestEnv/" 경로로 시작하는 보안 암호에 대해서만 DescribeSecret 및GetSecretValue 작업을 수행하도록 할 수 있습니다. 또한 이 정책은 사용자 또는 역할이 AWSCURRENT 스테이징 레이블이 연결되어 있는 보안 암호의 버전만 검색하도록 제한합니다. 를 교체하려면 <region> 및<account_id> 자리 표시자를 실제 값으로 바꿉니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid" : "Stmt1DescribeSecret", "Effect": "Allow", "Action": [ "secretsmanager:DescribeSecret" ], "Resource": "arn:aws:secretsmanager:<region>:<account_id>:secret:TestEnv/*"

40

Page 47: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서액세스 제어 및 권한 부여

}, { "Sid" : "Stmt2GetSecretValue", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "arn:aws:secretsmanager:<region>:<account_id>:secret:TestEnv/*", "Condition" : { "ForAnyValue:StringLike" : { "secretsmanager:VersionStage" : "AWSCURRENT" } } } ]}

보안 암호의 버전에는 여러 스테이징 레이블을 연결할 수 있기 때문에IAM 정책 언어의 “설정 연산자”를 사용하여 정책에서 비교할 수 있습니다. 이전 예제에서 ForAnyValue:StringLike는 평가 중인 보안 암호 버전에 연결된 스테이징 레이블 중 하나가 "AWSCURRENT" 문자열과 일치하는 경우 해당 문이 일치하고Effect 문자열이 적용됨을 나타냅니다.

자격 증명 기반 정책의 예를 더 보려면 보안 Secrets Manager 대한 자격 증명 기반 정책 (IAM 정책) 및 ABAC사용 (p. 45) 단원을 참조하십시오. 사용자, 그룹, 역할 및 권한에 대한 자세한 내용은자격 증명(사용자, 그룹, 및 역할)의IAM 사용 설명서를 선택합니다.

리소스 기반 정책각 보안 Secrets Manager 보안 암호에는 리소스 기반 권한 정책 (비밀 정책, 그것에 붙어 있습니다. 보안암호의 정책을 사용하여 IAM 역할과 함께 자격 증명 기반 정책을 사용하는 대신 교차 계정 권한을 부여할수 있습니다. 예를 들어 IAM 역할을 생성하는 대신 보안 암호 정책에 권한을 추가하고 계정 B의 사용자를Principal로 식별하여 계정 B의 사용자에게 계정 A의 보안 암호에 액세스할 수 있는 권한을 부여할 수 있습니다.

다음 예제에서는 한 개의 문이 있는 보안 암호 정책을 설명합니다. 계정 123456789012의 관리자는 이 문을사용하여 해당 계정의 사용자 및 역할에 권한을 위임할 수 있습니다. 이 정책은 관리자가 위임할 수 있는 권한을 "prod/ServerA-a1b2c3"이라는 단일 보안 암호에 대한 secretsmanager:GetSecretValue 작업으로제한합니다. 이 조건은 사용자가 보안 암호의 현재 버전만 검색하도록 합니다.

{ "Version" : "2012-10-17", "Statement" : [ { "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::123456789012:root" }, "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:<region>:<account_id>:secret:prod/ServerA-a1b2c3", "Condition": { "ForAnyValue:StringEquals": { "secretsmanager:VersionStage" : "AWSCURRENT" } } } ]}

Important

한 계정의 IAM 보안 주체가 다른 계정의 보안 암호에 액세스하는 경우, 이 보안 암호는 사용자 지정AWS KMS CMK를 사용하여 암호화되어야 합니다. 계정의 기본 보안 Secrets Manager CMK를 사용하여 암호화된 보안 암호는 해당 계정의 보안 주체만 해독할 수 있습니다. 다른 계정의 보안 주체는 보안 암호 및 사용자 지정 AWS KMS CMK 모두에 대한 권한을 부여 받아야 합니다.

41

Page 48: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서비밀에 대한 액세스 권한 결정

또는 사용자 계정 전체 액세스 권한을 부여하여 보안 암호와 동일한 계정에서 IAM 역할을 맡을 수있습니다. 이 역할은 보안 암호와 동일한 계정에 있기 때문에 해당 계정의 기본 AWS KMS 키를 사용하여 암호화된 보안 암호에 액세스할 수 있습니다.

보안 암호의 버전에는 여러 스테이징 레이블을 연결할 수 있기 때문에IAM 정책 언어의 집합 연산자를 사용하여 정책에서 비교할 수 있습니다. 이전 예제에서 ForAnyValue:StringLike는 평가 중인 버전에 연결된레이블 중 하나가 "AWSCURRENT"와 일치하는 경우 해당 문이 일치하고 Effect가 적용됨을 나타냅니다.

보안 Secrets Manager 사용한 리소스 기반 정책의 예를 더 보려면보안 Secrets Manager 대한 리소스 기반정책 사용 (p. 51)를 선택합니다. IAM 역할 (자격 증명 기반 정책) 대신 리소스 기반 정책 사용에 대한 자세한 내용은IAM 역할과 리소스 기반 정책의 차이의IAM 사용 설명서를 선택합니다.

비밀에 대한 액세스 권한 결정AWS Secret Manager에서 보안 암호에 대한 액세스 권한을 보유한 사용자를 모두 파악하려면 IAM 사용자와 그룹 또는 IAM 역할에 연결된 모든 AWS Identity Management (Access Management) 정책과 보안 암호정책 (있는 경우) 을 모두 검사해야 합니다. 보안 암호의 가능한 사용 범위를 파악하거나 규정 또는 감사 요구사항을 준수하기 위해 이 작업을 수행할 수 있습니다. 다음 주제는 현재 보안 암호에 대한 액세스 권한을 보유한 AWS 보안 주체 및 자격 증명의 전체 목록을 생성하는 데 도움이 될 수 있습니다.

주제• 정책 평가 (p. 42)• 리소스 정책 검사 (p. 43)• IAM 정책 검사 (p. 44)

정책 평가보안 암호에 대한 액세스를 승인할 때 Secret Manager는 보안 암호에 연결된 보안 암호 정책과 요청을 보내는 IAM 사용자 또는 역할에 연결된 모든 IAM 정책을 평가합니다. 이를 위해 보안 Secrets Manager 에서 설명한 것과 유사한 프로세스를 사용합니다.요청의 허용 또는 거부 결정의IAM 사용 설명서를 선택합니다.

예를 들어 동일한 AWS 계정에 두 개의 보안 암호와 세 명의 사용자가 포함되어 있다고 가정해보십시오. 이러한 보안 암호와 사용자에게는 다음과 같은 정책이 있습니다.

• 보안 암호 1에는 보안 암호 정책이 없습니다.• 보안 암호 2에는 사용자 보안 주체 Ana 및 Carlos에 대한 액세스를 허용하는 보안 암호 정책이 있습니다.• Ana에게는 보안 암호 1 또는 보안 암호 2를 참조하는 IAM 정책이 없습니다.• Bob의 IAM 정책은 모든 보안 암호에 대해 모든 보안 암호 관리자 작업을 허용합니다.• Carlos의 IAM 정책은 모든 보안 암호에 대해 모든 보안 Secrets Manager 작업을 거부합니다.

보안 Secrets Manager 다음 액세스를 결정합니다.

• Ana는 보안 암호 2에만 액세스할 수 있습니다. Ana는 사용자에 연결된 정책이 없지만 보안 암호 2는 Ana의 액세스를 명시적으로 허용합니다.

• Bob은 계정의 모든 보안 암호에 대한 액세스를 허용하는 IAM 정책을 가지고 있고 액세스를 재정의하는 명시적인 “거부”가 없으므로 보안 암호 1과 보안 암호 2 둘 다에 액세스할 수 있습니다.

• Carlos는 IAM 정책에서 모든 Secrets Manager 거부하기 때문에 보안 암호 1 또는 보안 암호 2에 액세스할수 없습니다. Carlos의 IAM 정책에 있는 명시적 거부가 보안 암호 2에 연결된 보안 암호 정책의 명시적 “허용”을 재정의합니다.

보안 Secrets Manager 액세스를 “허용”하는 보안 암호 또는 자격 증명의 모든 정책 문을 추가합니다. 모든 명시적 거부가 중첩되는 작업 및 리소스에 대한 모든 허용을 재정의합니다.

42

Page 49: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서리소스 정책 검사

리소스 정책 검사GetResourcePolicy 작업을 사용하여 ResourcePolicy 응답 요소를 검사하면 보안 암호에 연결된 보안암호 정책 문서를 볼 수 있습니다.

리소스 정책 문서를 검사하고 각 정책 설명에 지정된 모든 보안 주체를 기록해 둡니다.Principal요소를 사용합니다. IAM 사용자, IAM 역할, AWS 계정Principal요소는 모두이 비밀에 액세스 할 수 있습니다.

예제 정책 문 1

{ "Sid": "Allow users or roles in account 123456789012 who are delegated access by that account's administrator to have read access to the secret", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::123456789012:root"}, "Action": [ "secretsmanager:List*", "secretsmanager:Describe*", "secretsmanager:Get*" ], "Resource": "*"}

앞의 정책 설명에서,&region-arn;iam::123456789012:root는 AWS 계정 123456789012를 나타내고해당 계정의 관리자가 계정의 모든 사용자 또는 역할에 대한 액세스 권한을 부여합니다.

당신은 또한해야모든 IAM 정책 검사보안 주체로 나열된 모든 AWS 계정에서 정책에서 이 보안 암호에 대한액세스를 허용하는지 판단하기 위해.

예제 정책 문 2

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "secretsmanager:*", "Principal": {"AWS": "arn:aws:iam::123456789012:user/anaya"}, "Resource": "*" } ]}

앞의 정책 설명에서,&region-arn;iam::111122223333:user/anaya는 AWS 계정 11112222333에서Anaya라는 이름의 IAM 사용자를 나타냅니다. 이 사용자는 모든 보안 Secrets Manager 작업을 수행할 수 있습니다.

예제 정책 문 3

{ "Sid": "Allow an app associated with an &IAM; role to only read the current version of a secret", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::123456789012:role/EncryptionApp" }, "Action": ["secretsmanager:GetSecretValue"], "Condition": { "ForAnyValue:StringEquals": {"secretsmanager:VersionStage": "AWSCURRENT" } }, "Resource": "*"}

43

Page 50: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서IAM 정책 검사

앞의 정책 설명에서,&region-arn;iam::123456789012:role/EncryptionApp는 AWS 계정123456789012에서 EncryptionApp 이라는 IAM 역할을 나타냅니다. 이 역할을 맡은 보안 주체는 정책 문에나열된 한 가지 작업을 수행할 수 있습니다. 이 작업은 현재 버전의 보안 암호에 대한 세부 정보를 가져옵니다.

보안 정책 문서에서 보안 주체를 지정할 수 있는 다양한 방법을 알아보려면보안 주체 지정의IAM 사용 설명서를 선택합니다.

보안 암호 정책에 대한 자세한 정보는 단원을 참조하십시오.리소스 기반 정책 (p. 41)를 선택합니다.

IAM 정책 검사보안 암호 정책 외에도 IAM 정책을 보안 암호 정책과 함께 사용하여 보안 암호에 대한 액세스를 허용할 수도있습니다. IAM 정책과 보안 암호 정책이 상호 작용하는 방식에 대한 자세한 정보는 정책 평가 (p. 42) 단원을 참조하십시오.

IAM 정책을 통해 현재 보안 암호에 액세스할 수 있는 자격 증명을 확인하려면 브라우저 기반의IAM 정책 시뮬레이터도구를 사용하거나 IAM 정책 시뮬레이터 API에 요청을 보낼 수 있습니다.

정책의 효과 검사

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

Using the web-based Policy Simulator

IAM 정책 시뮬레이터를 사용해 IAM 정책을 통해 보안 암호에 액세스할 수 있는 보안 주체를 알아볼 수있습니다.

1. AWS Management Console에 로그인한 다음, IAM 정책 시뮬레이터를 엽니다.https://policysim.aws.amazon.com/를 선택합니다.

2. Users, Groups, and Roles(사용자, 그룹 및 역할) 창에서 정책을 시뮬레이션할 사용자, 그룹 또는 역할을 선택합니다.

3. (선택 사항) 시뮬레이션을 생략할 정책 옆 확인란의 선택을 취소합니다. 모든 정책을 시뮬레이션하려면 모든 정책을 선택해 둡니다.

4. [Policy Simulator] 창에서 다음과 같이 실행합니다.a. 용서비스 선택를 선택하고AWS Secrets Manager를 선택합니다.b. 특정 Secrets Manager 작업을 시뮬레이트하려면작업 선택에서 시뮬레이션할 작업을 선택합니다.

모든 보안 Secrets Manager 작업을 시뮬레이션하려면Select All를 선택합니다.5. (선택 사항) 정책 시뮬레이터는 기본적으로 모든 보안 암호에 대한 액세스를 시뮬레이션합니다. 특정

보안 암호에 대한 액세스를 시뮬레이션하려면 시뮬레이션 설정을 선택한 후 시뮬레이션할 보안 암호의 Amazon 리소스 이름(ARN)을 입력합니다.

6. [Run Simulation]을 선택합니다.

[Results] 섹션에서 시뮬레이션 결과를 볼 수 있습니다. AWS 계정의 모든 IAM 사용자, 그룹, 역할에 대해2 ~ 6단계를 반복합니다.

Using the Policy Simulator CLI or SDK operations

IAM API를 사용해 IAM 정책을 프로그래밍 방식으로 검사할 수 있습니다. 다음 절차는 이 방법의 개요를제공합니다.

1. 보안 정책에 보안 주체로 나열된 각 AWS 계정, 즉 각루트 사용자 계정이 형식으로 나열되어 있습니다. "Principal": {"AWS": "arn:aws:iam::accountnumber:root"}를 사용하려면,ListUsers및ListRoles작업을 사용하여 계정의 모든 IAM 사용자 및 역할 목록을 검색할 수 있습니다.

44

Page 51: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서보안 Secrets Manager 대한 자격 증

명 기반 정책 (IAM 정책) 및 ABAC 사용

2. 목록에 있는 각 IAM 사용자 및 역할에 대해SimulatePrincipalPolicy작업을 실행하고 다음 매개 변수를보냅니다.• PolicySourceArn에 대해, 목록에서 사용자나 역할의 ARN을 지정합니다.PolicySourceArnSimulatePrincipalPolicy API 요청별로 한 만 지정할 수 있습니다. 따라서 목록의 IAM 사용자와 역할별로 한 번씩, 이 API를 여러 차례 호출해야 합니다.

• 에 대 한ActionNames목록에서 시뮬레이션할 모든 보안 Secrets Manager API 작업을 지정합니다. 모든 보안 Secrets Manager API 작업을 시뮬레이션하려면 를 사용합니다.secretsmanager:*를 선택합니다. 개별 보안 Secrets Manager API 작업을 테스트하려면각 API 작업 앞에”secretsmanager:“—예:”secretsmanager:ListSecrets“를 참조하십시오. 모든 보안 Secrets Manager API 작업의 전체 목록은 단원을 참조하십시오.Actions의AWS KeyManagement Service API 참조를 선택합니다.

• (선택 사항) IAM 사용자나 역할이 특정 보안 암호에 액세스할 수 있는지 판단하려면,ResourceArns매개 변수를 사용하여 비밀의 ARN 목록을 지정할 수 있습니다. IAM 사용자나역할이 임의의 보안 암호에 액세스할 수 있는지 알아보기 위해,ResourceArns파라미터.

IAM은 각SimulatePrincipalPolicyAPI 요청과 함께 평가 결정은 다음과 같습니다.allowed,explicitDeny또는implicitDeny를 선택합니다. 평가 결정이 포함된 각 반응에 대해allowed에서 허용되는 특정 보안 Secrets Manager API 작업의 이름과 함께 경우에 따라 평가에 사용된 보안 암호의 ARN 도 포함됩니다.

보안 Secrets Manager 대한 자격 증명 기반 정책(IAM 정책) 및 ABAC 사용

계정 관리자는 IAM 자격 증명(예: 사용자, 그룹, 역할)에 권한 정책을 연결하여 계정에서 AWS 리소스에 대한액세스를 제어할 수 있습니다. 권한을 부여할 때 권한, 리소스 및 해당 리소스에 허용되는 특정 작업을 결정합니다. 역할에 권한을 부여할 경우, 지정한 다른 계정의 사용자가 이 역할을 맡을 수 있습니다.

기본적으로 사용자 또는 역할에는 어떠한 권한도 없습니다. 권한은 정책을 사용하여 명시적으로 부여해야 합니다. 명시적으로 권한을 부여하지 않으면 권한이 암시적으로 거부됩니다. 명시적으로 권한을 거부하면 권한을 허용하는 다른 정책보다 우선 적용됩니다. 즉 사용자는 명시적으로 부여되며 명시적으로 거부되지 않은권한만 가집니다.

정책의 기본 요소를 개략적으로 살펴보려면 정책을 사용하여 리소스에 대한 액세스 관리 (p. 37) 단원을참조하십시오.

IAM 정책에 대한 속성 기반 액세스 제어 (ABAC) 를 구현할 수도 있습니다. ABAC(속성 기반 액세스 제어)는속성을 기반으로 권한을 정의하는 권한 부여 전략입니다. AWS 에서는 이러한 속성을 태그라고 합니다. 태그는 IAM 보안 주체 (사용자 또는 역할) 와 AWS 리소스에 연결할 수 있습니다. IAM 보안 주체에 대해 단일ABAC 정책 또는 작은 정책 세트를 생성할 수 있습니다. 이러한 ABAC 정책은 보안 주체의 태그가 리소스 태그와 일치할 때 작업을 허용하도록 설계될 수 있습니다. ABAC는 빠르게 성장하는 환경에서 유용하며 정책관리가 번거로운 상황에 도움이 됩니다.

ABAC에 대한 자세한 내용은 단원을 참조하십시오.AWS 용 ABAC란 무엇입니까?

Secrets Manager 대한 AWS 관리형 정책AWS Secrets Manager 는 쉽게 권한을 부여할 수 있도록 하기 위해 다음 AWS 관리형 정책을 제공합니다.IAM 콘솔에서 링크를 선택하여 정책을 확인합니다.

• SecretsManagerReadWrite— 이 정책은 역할을 생성하고 해당 역할에 정책을 연결하는 데 필요한 IAM 권한을 정책에 포함하지 않는다는 점을 제외하고 Secrets Manager 를 관리하는 데 필요한 액세스 권한을부여합니다. 해당 권한의 경우 IAMFullAccess 관리형 정책을 연결합니다. 지침은 다음 사용자에게 전체Secrets Manager 관리자 권한 부여 (p. 46) 단원을 참조하십시오.

45

Page 52: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서사용자에게 전체 Secrets Manager 관리자 권한 부여

사용자에게 전체 Secrets Manager 관리자 권한 부여Secrets Manager 관리자가 되려면 여러 서비스의 권한이 있어야 합니다. 보안 암호 관리자를 사용자가 자체보안 암호를 생성하고 관리할 수 있게 하는 최종 사용자 서비스로 활성화하지 않는 것이 좋습니다. 교체를 활성화하는 데 필요한 권한은 표준 사용자가 가질 수 없는 중요한 권한을 부여합니다. 대신 신뢰할 수 있는 관리자가 보안 Secrets Manager 서비스를 관리합니다. 최종 사용자가 더 이상 자격 증명을 직접 처리하거나 코드에 포함하지 않습니다.

Warning

교체를 활성화하면 보안 Secrets Manager Lambda 함수를 생성하고 IAM 역할을 해당 함수에 연결합니다. 이를 위해서는 신뢰할 수 있는 개인에게만 부여되어야 하는 여러 IAM 권한이 필요합니다.따라서 보안 Secrets Manager 정책하지 않음에는 이러한 IAM 권한이 포함되어 있습니다. 대신 명시적으로 할당해야 합니다.IAMFullAccess관리형 정책 외에SecretsManagerReadWrite관리정책을 사용하여 전체 Secrets Manager 관리자를 만들 수 있습니다.만 사용 하 여 액세스 권한 부여SecretsManagerReadWrite정책을 통해 IAM 사용자는 보안 암호를 생성하고 관리할 수 있지만 사용자는 교체를 활성화하는 데 필요한 Lambda 교체 함수를 생성하고 구성할 수 없습니다.

계정의 IAM 사용자, 그룹 또는 역할에 전체 Secrets Manager 관리자 권한을 부여하려면 다음 단계를 완료하십시오. 이 예제에서는 새 정책을 만들지 않습니다. 대신 권한이 사전 구성된 AWS 관리형 정책을 연결합니다.

IAM 사용자, 그룹 또는 역할에 전체 관리자 권한을 추가하려면

1. Identity and Access Management (IAM) 콘솔에 로그인하려면https://console.aws.amazon.com/iam/를다른 IAM 사용자에게 IAM 정책을 연결할 권한이 있는 사용자로 지정할 수 있습니다.

IAM 콘솔에서정책를 선택합니다.2. 용필터 정책: 정책 유형를 선택하고AWS 관리형 AWS을 클릭한 다음검색상자에 입력을 시작합니

다.SecretsManagerReadWrite목록에서 정책을 볼 수 있을 때까지3. [SecretsManagerReadWrite] 정책 이름을 선택합니다.4. Policy actions(정책 작업)를 선택한 후 연결을 선택합니다.5. Secrets Manager 관리자로 추가하려는 사용자, 그룹 또는 역할 옆의 상자를 선택합니다.6. [Attach policy]를 선택합니다.7. 1~6단계를 반복하여 [IAMFullAccess] 정책을 연결합니다.

선택한 사용자, 그룹 및 역할은 Secrets Manager 에서 작업을 즉시 시작할 수 있습니다.

하나의 비밀에 대한 읽기 액세스 권한 부여SecreSecrets Manager 를 사용하여 보안 암호를 검색하고 사용하기 위한 애플리케이션을 작성할 경우, 애플리케이션에 한정된 권한 집합만 부여하면 됩니다. Secrets Manager 에서는 자격 증명을 사용하여 암호화된보안 암호 값을 검색할 수 있는 작업을 수행하기 위한 권한만 있으면 됩니다. 보안 암호의 Amazon 리소스 이름(ARN)을 지정하여 해당 보안 암호로만 액세스를 제한합니다.

https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

정책 생성을 선택하고 다음 코드를 추가합니다.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "<arn-of-the-secret-the-app-needs-to-access>"

46

Page 53: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서특정 작업에 대한 액세스 제한

}}

IAM 정책에 할당할 수 있는 전체 권한 목록은 단원을 참조하십시오.IAM 정책 또는 AWS Secrets Manager 보안 암호 정책에서 사용할 수 있는 작업, 리소스 및 컨텍스트 키 (p. 180)를 선택합니다.

특정 작업에 대한 액세스 제한전체 권한이 아닌 제한적 권한을 부여하려면,Action요소는 IAM 권한 정책입니다. 다음 예제와 같이 와일드카드(*) 문자를 사용하여 Describe*, Get* 및 List* 권한만 부여함으로써 보안 암호에 읽기 전용 액세스를 제공할 수 있습니다.

https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

정책 생성을 선택하고 다음 코드를 추가합니다.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "secretsmanager:Describe*", "secretsmanager:Get*", "secretsmanager:List*" ], "Resource": "*" }}

IAM 정책에 할당할 수 있는 전체 권한 목록은 단원을 참조하십시오.IAM 정책 또는 AWS Secrets Manager 보안 암호 정책에서 사용할 수 있는 작업, 리소스 및 컨텍스트 키 (p. 180)를 선택합니다.

특정 보안 암호에 대한 액세스 제한특정 작업에 대한 액세스를 제한하는 것뿐만 아니라, 계정의 특정 보안 암호에 대한 액세스를 제한할 수도 있습니다. 이전 예제에 등장하는 Resource 요소는 모두 와일드카드 문자("*")를 지정하는데, 이는 "작업이 상호 작용할 수 있는 모든 리소스"라는 뜻입니다. "*"를 액세스를 허용할 특정 보안 암호의 ARN으로 바꿔도 됩니다.

Example 예: 이름으로 단일 보안 암호에 권한 부여

다음 정책의 첫 번째 명령문은 계정의 모든 보안 암호의 메타데이터에 대한 읽기 액세스 권한을 사용자에게 부여합니다. 그러나 두 번째 문을 사용하면 사용자가 이름별로 지정된 단일 비밀에 대해서만 SecretsManager 작업을 수행할 수 있습니다. 또는another_secret_name-“뒤에 정확히 6 문자가 붙습니다.

https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

정책 생성을 선택하고 다음 코드를 추가합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:DescribeSecret", "secretsmanager:List*" ], "Resource": "*"

47

Page 54: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서특정 스테이징 레이블 또는 태그 (ABAC)

를 사용하여 비밀에 대한 액세스 제한

}, { "Effect": "Allow", "Action": "secretsmanager:*", "Resource": [ "arn:aws:secretsmanager:<region>:<account-id-number>:secret:a_specific_secret_name-a1b2c3", "arn:aws:secretsmanager:<region>:<account-id-number>:secret:another_secret_name-??????" ] } ]}

'??????' 와일드카드로 '*' 와일드카드를 사용할 경우 발생하는 문제를 피할 수 있는 6자를 검색하면 '*' 와일드카드를 사용할 경우 발생하는 문제를 피할 수 있습니다. 구문을 사용하는 경우”another_secret_name-*“, Secrets Manager는 6자의 임의 문자를 포함하는 해당 보안 암호를 검색할뿐 아니라”another_secret_name-<anything-here>a1b2c3“를 참조하십시오. '???????' 구문을 사용하면 아직 존재하지 않는 보안 암호에 안전하게 권한을 부여할 수 있습니다. 6자의 임의 문자를 제외한 ARN의 모든 부분을 예측할 수 있기 때문입니다. 하지만 보안 암호를 삭제한 후 이름이 동일한 보안 암호를 다시생성할 경우, 임의의 문자 6자가 변경되더라도 새 보안 암호에 대한 권한이 사용자에게 자동으로 부여됩니다.

보안 암호의 ARN 얻으려면 보안 Secrets Manager 콘솔에서 (세부 정보페이지에서 비밀에 대한) 또는List*API를 지원합니다. 이 정책을 적용한 사용자 또는 그룹은 예제의 ARN으로 식별된 보안 암호 두 개에 대해서만 작업("secretsmanager:*")을 수행할 수 있습니다.

보안 암호를 소유한 계정이나 리전은 상관없을 경우 ARN의 리전 필드와 계정 ID 번호 필드에 빈 필드가 아닌와일드카드 문자 *를 지정해야 합니다.

다양한 리소스에 대한 ARN에 대한 자세한 정보는 IAM 정책 또는 보안 암호 정책에서 참조할 수 있는 리소스 (p. 180)을(를) 참조하십시오.

특정 스테이징 레이블 또는 태그 (ABAC) 를 사용하여비밀에 대한 액세스 제한이전 예제에서는 이름 또는 ARN만을 기준으로 작업, 리소스 및 보안 주체를 명시적으로 호출했습니다. 또한특정 태그 키 및 값이 포함된 메타데이터가 있는 보안 암호 또는 특정 레이블이 지정된 보안 암호만 포함하도록 액세스를 미세 조정할 수 있습니다.

IAM 보안 주체 (사용자 또는 역할) 와 AWS 리소스에 태그를 연결할 수 있습니다. 그런 다음 태그 조건 키를사용하여 해당 태그를 기반으로 보안 주체에 권한을 부여하는 정책을 정의할 수 있습니다. 태그를 사용하여AWS 리소스에 대한 액세스를 제어하면 AWS 정책에 대한 변경 사항이 줄어들면서 팀과 리소스가 성장할 수있습니다. ABAC 정책은 각 개별 리소스를 나열해야 하는 기존 AWS 정책보다 유연합니다.

예를 들어, access-project 태그 키를 사용하여 세 개의 역할을 생성할 수 있습니다. 첫 번째 역할의 태그값을 Heart로, 두 번째 역할의 태그 값을 Sun으로, 세 번째 역할의 태그 값을 Lightning으로 설정합니다.그런 다음 각 역할과 리소스에 대해 동일한 값을 지정할 때 액세스를 허용하는 단일 정책을 사용할 수 있습니다.access-project를 선택합니다.

비밀에 대한 ABAC를 구현하려면 다음 자습서를 따르십시오. IAM 자습서: 태그를 기반으로 AWS 리소스에액세스할 수 있는 권한을 정의합니다.

예: 특정 태그 키 및 값을 포함하는 메타데이터가 있는 보안 암호에 권한 부여

다음 정책은 사용자, 그룹 또는 역할에 연결된 경우 사용자가 키가 "ServerName"이고 값이 "ServerABC"인태그가 포함된 메타데이터가 있는 현재 계정의 보안 암호에 대해 DescribeSecret을 사용하도록 허용합니다.

48

Page 55: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서별도의 마스터 암호에 액세스할 수 있는 순환 함수 권한 부여

https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

정책 생성을 선택하고 다음 코드를 추가합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "secretsmanager:DescribeSecret", "Resource": "*", "Condition": { "StringEquals": { "secretsmanager:ResourceTag/ServerName": "ServerABC" } } } ]}

예: 특정 스테이징 레이블을 사용하여 보안 암호 버전에 권한 부여

다음 정책은 사용자, 그룹 또는 역할에 연결된 경우 사용자가GetSecretValue로 시작하는 이름을 가진 보안 암호에Prod스테이징 레이블이 있는 버전에만 해당됩니다.AWSCURRENT가 연결되어 있습니다.

https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

정책 생성을 선택하고 다음 코드를 추가합니다.

{ "Policy": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "secretsmanager:GetSecret", "Resource": "arn:aws:secretsmanager:*:*:secret:Prod*", "Condition": { "ForAnyValue:StringEquals": { "secretsmanager:VersionStage": "AWSCURRENT" } } } ] }}

보안 암호의 버전에는 여러 스테이징 레이블을 연결할 수 있기 때문에IAM 정책 언어의 집합 연산자비교할수 있습니다. 이전 예제에서 ForAnyValue:StringLike는 평가 중인 버전에 연결된 스테이징 레이블 중하나가 AWSCURRENT 문자열과 일치하는 경우 해당 문이 일치하고 Effect가 적용되도록 했습니다.

별도의 마스터 암호에 액세스할 수 있는 순환 함수 권한부여콘솔 또는 AWS CLI 명령을 사용하는 방식을 통해 제공된 AWS Serverless Application Repository 템플릿을사용하는 Lambda 교체 함수를 생성할 때 함수 역할에 연결된 기본 정책이 함수 작업을 제어합니다. 기본적으로 이 정책은 액세스 권한을 부여합니다.만를 비밀 회전 함수로 구성된이 Lambda 함수로 비밀로 설정합니다.

보안 암호의 자격 증명에서 사용자가 보안 데이터베이스 또는 서비스에서 암호를 변경할 수 있는 권한을 허용하지 않는 경우 승격된 권한 (수퍼유저) 를 사용하여 순환 중에 이 보안 자격 증명을 변경할 수 있습니다.보안 Secrets Manager 별도의 “마스터” 보안 암호에 수퍼유저 자격 증명을 저장합니다. 그런 다음 보안 암호를 교체할 때 Lambda 교체 함수는 마스터 자격 증명으로 데이터베이스 또는 서비스에 로그인하여 보안 암호

49

Page 56: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서별도의 마스터 암호에 액세스할 수 있는 순환 함수 권한 부여

자격 증명을 변경하거나 업데이트합니다. 이 전략을 구현하도록 선택한 경우 주요 보안 암호 외에 이 마스터보안 암호에 액세스 권한을 부여하는 함수에 연결된 역할 정책에 추가 설명문을 추가해야 합니다.

콘솔을 사용하여 마스터 보안 암호를 사용하는 전략으로 교체를 구성하는 경우 보안 암호에 대한 교체를 구성할 때 마스터 보안 암호를 선택할 수 있습니다.

Important

콘솔에서 이를 선택하려면 마스터 보안 암호에 대해 GetSecretValue 권한이 있어야 합니다.

콘솔에서 교체를 구성한 후에는 다음 단계를 수동으로 수행하여 Lambda 함수에 마스터 보안 암호에 대한 액세스 권한을 부여해야 합니다.

Lambda 교체 함수에 마스터 보안 암호에 대한 액세스 권한을 부여하려면

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

Using the console

1. 보안 암호를 만들고 교체를 활성화하거나, 보안 암호를 편집하여 교체를 활성화하면 콘솔에 다음과같은 메시지가 표시됩니다.

Your secret MyNewSecret has been successfully stored [and secret rotation is enabled].To finish configuring rotation, you need to grant the role MyLambdaFunctionRole permission to retrieve the secret <ARN of master secret>.

2. 메시지의 마스터 보안 번호 ARN을 클립보드로 복사합니다. 이후 단계에서 사용하게 됩니다.3. 앞의 메시지에서 역할 이름은 IAM 콘솔에 대한 링크를 제공하며 해당 역할로 직접 이동합니다. 해당

링크를 선택합니다.4. [Permissions] 탭에 하나 또는 두 개의 인라인 정책이 있습니다. Secrets Manager 이름

을SecretsManager<Name of Template>0를 선택합니다. 이 템플릿에는 교체 함수와 사용자가 모두 VPC에서 보안 서비스를 실행 중이고 인터넷에서 직접 액세스할 수 없는 경우에 필요한 EC2 관련 권한이 포함되어 있습니다. 라는 이름의 다른 템플릿SecretsManager<Name ofTemplate>1교체 함수가 보안 Secrets Manager 작업을 호출할 수 있는 권한을 포함합니다. 정책 왼쪽에 있는 확장 화살표를 선택하고 권한을 검사하여 해당 정책("1"로 끝나는 정책)을 엽니다.

5. [Edit policy]를 선택한 다음 탭 중 하나에 있는 단계를 수행합니다.Using the IAM Visual Editor

[Visual editor] 탭에서 [Add additional permissions]를 선택한 다음 다음 값을 설정합니다.• [Service]에서 [Secrets Manager]를 선택합니다.• [Actions]에서 [GetSecretValue]를 선택합니다.• [Resources]에서 [secret] 리소스 유형 항목 옆의 [Add ARN]을 선택합니다.• Add ARN(s)(ARN 추가) 대화 상자에 이전에 복사한 마스터 보안 암호의 ARN을 붙여 넣습니

다.Using the JSON editor

[JSON] 탭에서 스크립트 맨 위를 검사합니다. 3행("Statement": [) 및 4행({) 사이에서 다음행을 입력합니다.

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

6. 정책 편집을 마치면 정책 검토, 변경 사항 저장을 선택합니다.

50

Page 57: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서보안 Secrets Manager 대한 리소스 기반 정책 사용

7. 이제 IAM 콘솔을 닫고 보안 Secrets Manager 콘솔로 돌아갈 수 있습니다.

Note

보안 Secrets Manager 함께 사용할 수 있는 전체 작업, 리소스 및 컨텍스트 키 목록은AWS SecretsManager에 사용되는 작업, 리소스 및 조건 키를 선택합니다.

보안 Secrets Manager 대한 리소스 기반 정책 사용보안 리소스 기반 정책을 사용하여 AWS Secrets Manager 에 대한 액세스를 제어할 수 있습니다. AWS 는암호로리소스보안 Secrets Manager 에. 계정 관리자는 AWS 서비스의 리소스에 대한 액세스를 제어합니다. 보안 암호에 연결된 정책에 권한을 추가할 수 있습니다. Secrets Manager 에 직접 연결된 사용 권한 정책을리소스 기반 정책를 선택합니다. 리소스 기반 정책을 사용하여 보안 암호 액세스 및 관리 권한을 관리할 수 있습니다.

자격 증명 기반 정책에 비해 리소스 기반 정책은 다른 계정의 보안 주체에 대한 액세스 권한을 부여할 수 있다는 이점이 있습니다. 다음 단원의 두 번째 예를 참조하십시오.

정책의 기본 요소를 개략적으로 살펴보려면 정책을 사용하여 리소스에 대한 액세스 관리 (p. 37) 단원을참조하십시오.

대체 자격 증명 기반 권한 정책에 대한 자세한 정보는 보안 Secrets Manager 대한 자격 증명 기반 정책 (IAM정책) 및 ABAC 사용 (p. 45) 단원을 참조하십시오.

주제• 보안 주체의 보안 암호에 제어된 (p. 51)• 역할에 대한 읽기 전용 액세스 권한 부여 (p. 52)

보안 주체의 보안 암호에 제어된보안 암호에 보안 Secrets Manager 에 직접 연결된 에서 리소스 기반 정책을 사용하는 경우Resource에서 자동 및 암시적으로 정책이 연결되는 보안 암호가 됩니다. 이제 Principal 요소를 지정할 수 있습니다.이Principal요소를 사용하면 이 보안 암호에 액세스하는 IAM 사용자, 그룹, 역할, 계정 또는 AWS 서비스보안 주체와 이들이 이 보안 암호에 대해 수행할 수 있는 작업을 지정할 수 있습니다. 에 지정하는 모든 다른방법에 대한 자세한 내용은Principal에 대한 자세한 내용은보안 주체의IAM 사용 설명서를 선택합니다.

예: 보안 암호와 동일한 계정의 사용자에게 권한 부여

메타데이터의 일부로 보안 암호에 직접 연결된 경우 다음 정책은 보안 암호에 대해 보안 Secrets Manager 작업을 실행할 권한을 사용자 Anaya에게 부여합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "secretsmanager:*", "Principal": {"AWS": "arn:aws:iam::123456789012:user/anaya"}, "Resource": "*" } ]}

예: 다른 계정의 권한 있는 사용자에게 권한 부여

51

Page 58: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서역할에 대한 읽기 전용 액세스 권한 부여

메타데이터의 일부로 보안 암호에 직접 연결된 경우 다음 정책은 계정의 IAM 사용자 Mateo에게 특정 보안암호의 모든 버전을 읽을 수 있는 권한을 부여합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::123456789012:user/mateo" }, "Action": "secretsmanager:GetSecretValue", "Resource": "*" } ]}

역할에 대한 읽기 전용 액세스 권한 부여일반적인 Secrets Manager 시나리오는 Amazon EC2 인스턴스에서 실행되는 애플리케이션일 수 있으며 필요한 작업을 수행하기 위해 데이터베이스에 액세스해야 합니다. Secrets Manager 에서 데이터베이스 자격증명을 가져와야 합니다. 다른 AWS 서비스처럼 보안 Secrets Manager 에 요청을 전송하려면 요청을 수행할권한이 있는 AWS 자격 증명이 있어야 합니다. EC2 인스턴스 프로파일에 연결된 IAM 역할을 생성하여 이를달성할 수 있습니다. 자세한 내용은 단원을 참조하십시오.Amazon EC2 IAM 역할Linux 인스턴스용 AmazonEC2 사용 설명서의 단원을 참조하십시오.인스턴스 메타데이터에서 보안 자격 증명 검색를 선택합니다.

그런 다음 아래 예제 리소스 기반 정책을 보안 암호에 연결하면 요청자가 해당 역할과 연결된 자격 증명을 사용 중이고 해당 요청이 현재 버전의 보안 암호에 대한 요청일 경우에만 모든 보안 암호 검색 요청이 실행됩니다.

{ "Version" : "2012-10-17", "Statement" : [ { "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::123456789012:role/EC2RoleToAccessSecrets"}, "Action": "secretsmanager:GetSecretValue", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "secretsmanager:VersionStage" : "AWSCURRENT" } } } ]}

52

Page 59: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서보안 암호 생성

보안 암호는 AWS Secrets Manager로생성 및 관리

이 단원에서는 AWS Secrets Manager를 사용하여 보안 암호를 생성, 업데이트, 조회 및 삭제하는 방법에 대해 설명합니다.

주제• 보안 암호 생성 (p. 53)• 보안 암호 수정 (p. 57)• Secrets 값 검색 (p. 62)• 비밀 Secrets Manager 에 대 한 향상 된 검색 기능 (p. 64)• 비밀 삭제 및 복원 (p. 66)• 보안 암호에 리소스 기반 정책 관리 (p. 71)• 다중 영역 Secrets Manager 만들기 및 관리 (p. 76)

보안 암호 생성AWS Secrets Manager 를 사용하면 최소한의 노력으로 보안 암호를 저장할 수 있습니다. 보안 암호는 최소한의 메타데이터 및 암호화된 단일 보안 암호 값으로 구성됩니다. Secrets Manager 비밀을 저장하고 자동으로AWSCURRENT를 선택합니다.

보안 암호 생성

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

Using the Secrets Manager console

최소 권한

콘솔에서 보안 암호를 생성하려면 다음과 같은 권한이 있어야 합니다.

• 에 의해 부여 된 권한SecretsManagerReadWriteAWS 관리형 정책.• 에 의해 부여 된 권한IAMFullAccessAWS 관리형 정책 — 보안 암호에 대한 교체를 활성화하

는 경우에만 필요합니다.• kms:CreateKey— Secrets Manager 에서 사용자 지정 AWS KMS 고객 마스터 키 (CMK)

를 생성하도록 요청하는 경우에만 필요합니다.• kms:Encrypt— 계정에 대한 기본 보안 암호 Manager CMK 대신 사용자 지정 AWS KMS

키를 사용하여 보안 암호를 암호화하는 경우에만 필요합니다. Secrets Manager에 대해 계정의 기본 AWS 관리형 CMK를 사용하기 위해서는 이 권한이 필요하지 않습니다.

• kms:Decrypt— 계정에 대한 기본 보안 암호 Manager CMK 대신 사용자 지정 AWS KMS키를 사용하여 보안 암호를 암호화하는 경우에만 필요합니다. Secrets Manager에 대해 계정의 기본 AWS 관리형 CMK를 사용하기 위해서는 이 권한이 필요하지 않습니다.

53

Page 60: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서보안 암호 생성

• kms:GenerateDataKey— 계정에 대한 기본 보안 암호 Manager CMK 대신 사용자 지정AWS KMS 키를 사용하여 보안 암호를 암호화하는 경우에만 필요합니다. Secrets Manager에 대해 계정의 기본 AWS 관리형 CMK를 사용하기 위해서는 이 권한이 필요하지 않습니다.

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

2. [Store a new secret]을 선택합니다.3. 비밀 유형 선택 섹션에서 다음 옵션 중 하나를 선택하여 생성하려는 보안 암호 유형을 지정합니다. 그

런 다음 필요한 정보를 입력합니다.4. 보안 암호 이름에 선택적 경로와 이름을 입력합니다(예: production/MyAwesomeAppSecret 또는

development/TestSecret). 슬래시 문자를 사용하면 보안 암호를 계층 구조로 구성할 수 있습니다(예: 배포 환경별 그룹화). 이는 보안 암호를 대규모로 구성하고 관리하는 데 유용합니다. 필요한 경우 설명을 추가하면 이 보안 암호의 용도를 기억하는 데 도움이 됩니다.

보안 암호 이름은 ASCII 문자, 숫자 또는 다음 문자 중 하나가 되어야 합니다. /_+=.@-

Note

Secrets Systems Manager 매개 변수 저장소에 보안 암호를 추가하는 경우 디렉터리 구조에 슬래시를 추가해야 합니다. 자세한 내용은 AWS Systems Manager 설명서를 참조하십시오.파라미터를 계층 구조로 조직를 선택합니다.

5. (선택 사항) 태그 섹션에서 보안 암호에 태그를 한 개 또는 여러 개 추가할 수 있습니다. 태그는 사용자가 정의하는 키와 값으로 구성됩니다. 태그는 AWS 리소스 관리를 지원합니다. 리소스를 조직의 구조와 연결하는 태그를 생성할 수 있습니다(예: 키="Department" 및 값="Accounting"). 이렇게 하면 비용할당 및 추적에 도움이 됩니다. 태그를 사용하는 애플리케이션별로 리소스를 그룹화하기 위해 태그를할당할 수 있습니다(키="AppName" 및 값="HRDatabase"). 거의 모든 용도로 태그를 생성할 수 있습니다. 보안 암호와 같은 각 리소스에 여러 개의 태그를 연결할 수 있습니다. 자세한 내용은 단원을 참조하십시오.AWS 태깅 전략에 있는AWS Answers웹 사이트를 참조하십시오.

Important

보안 암호에 대한 민감한 정보를 태그에 저장하지 마십시오. 보안 암호 값에만 민감한 정보를 저장하십시오 (SecretString또는SecretBinary필드) 를 암호화로 보호되는 보안 암호입니다.

6. 이름, 설명, 태그를 입력하고 다음을 선택합니다.7. (선택 사항) 이때, 보안 암호에 대한 교체를 구성할 수 있습니다. 교체가 없는 "기본" 보안 암호를 생성

했기 때문에 자동 교체 비활성화를 선택하고 다음을 선택합니다.

새 보안 암호 또는 기존 보안 암호에 대한 교체를 구성하는 자세한 방법은 AWS Secrets Manager 보안 암호 교체 (p. 83) 단원을 참조하십시오.

8. 설정을 검토한 다음보안 암호 저장를 클릭하면 보안 암호 Secrets Manager 새 보안 암호로 입력한 모든 항목을 저장할 수 있습니다.

Amazon RDS

이 보안 암호 유형을 사용합니다.지원되는 데이터베이스 서비스 (p. 4)Secrets Manager 미리 구성된Lambda 회전 기능을 사용하여 전체 회전을 지원합니다. Secrets Manager 데이터베이스 인스턴스를 쿼리하여 다른 파라미터를 결정하므로 인증 자격 증명만 지정합니다.

1. 데이터베이스에 대한 액세스를 허용하는 사용자 이름과 암호를 입력합니다. 이 보안 암호에 액세스할고객에게 필요한 권한만 가진 사용자를 선택합니다.

2. 보안 암호에서 보호되는 텍스트를 암호화하는 데 사용하려는 AWS KMS 암호화 키를 선택합니다. 암호화 키를 선택하지 않으면 에서는 계정에 대한 기본 키가 있는지 확인하고 있는 경우 해당 키를 사용합니다. 기본 키가 없는 경우 에서는 자동으로 하나를 생성합니다. 또한 새 키 추가를 선택하여 이 보

54

Page 61: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서보안 암호 생성

안 암호에 대한 사용자 지정 CMK를 생성할 수 있습니다. 고유한 AWS KMS CMK를 생성하려면 계정에서 CMK를 생성할 수 있는 권한이 있어야 합니다.

3. 목록에서 데이터베이스 인스턴스를 선택합니다. Secrets Manager 는 선택한 인스턴스를 쿼리하여 데이터베이스에 대한 연결 세부 정보를 검색합니다.

Amazon Redshift

이 보안 암호 유형은 Amazon Redshift 클러스터용입니다. 보안 Secrets Manager 는 데이터베이스 인스턴스를 쿼리하여 다른 파라미터를 결정하므로 인증 자격 증명만 지정합니다.

1. 데이터베이스에 대한 액세스를 허용하는 사용자 이름과 암호를 입력합니다.2. 보안 암호에서 보호되는 텍스트를 암호화하는 데 사용하려는 AWS KMS 암호화 키를 선택합니다. 암

호화 키를 선택하지 않으면 에서는 계정에 대한 기본 키가 있는지 확인하고 있는 경우 해당 키를 사용합니다. 기본 키가 없는 경우 에서는 자동으로 하나를 생성합니다. 또한 새 키 추가를 선택하여 이 보안 암호에 대한 사용자 지정 CMK를 생성할 수 있습니다. 고유한 AWS KMS CMK를 생성하려면 계정에서 CMK를 생성할 수 있는 권한이 있어야 합니다.

3. 올바른 데이터베이스 엔진을 선택하십시오.4. 데이터베이스 서버의 IP 주소, 데이터베이스 이름 및 TCP 포트 이름을 입력하여 연결 세부 정보를 지

정합니다.

DocumentDB database

이 보안 암호 유형은 DocumentDB 데이터베이스용입니다. 보안 Secrets Manager 는 데이터베이스 인스턴스를 쿼리하여 다른 파라미터를 결정하므로 인증 자격 증명만 지정합니다.

1. 데이터베이스에 대한 액세스를 허용하는 사용자 이름과 암호를 입력합니다.2. 보안 암호에서 보호되는 텍스트를 암호화하는 데 사용하려는 AWS KMS 암호화 키를 선택합니다. 암

호화 키를 선택하지 않으면 에서는 계정에 대한 기본 키가 있는지 확인하고 있는 경우 해당 키를 사용합니다. 기본 키가 없는 경우 에서는 자동으로 하나를 생성합니다. 또한 새 키 추가를 선택하여 이 보안 암호에 대한 사용자 지정 CMK를 생성할 수 있습니다. 고유한 AWS KMS CMK를 생성하려면 계정에서 CMK를 생성할 수 있는 권한이 있어야 합니다.

3. 올바른 데이터베이스 엔진을 선택하십시오.4. 데이터베이스 서버의 IP 주소, 데이터베이스 이름 및 TCP 포트 이름을 입력하여 연결 세부 정보를 지

정합니다.

Other databases

Secrets Manager 다른 유형의 데이터베이스를 지원하며 해당 유형에 이 보안 암호를 사용합니다. 그러나 데이터베이스에 대한 추가 정보를 제공해야 합니다. 이 보안 암호를 교체하려면 보안 암호를 구문 분석하고 보안 암호를 교체하기 위해 서비스와 상호 작용할 수 있는 사용자 지정 Lambda 교체 함수를 작성해야 합니다.

1. 데이터베이스에 대한 액세스를 허용하는 사용자 이름과 암호를 입력합니다.2. 보안 암호에서 보호되는 텍스트를 암호화하는 데 사용하려는 AWS KMS 암호화 키를 선택합니다. 암

호화 키를 선택하지 않으면 에서는 계정에 대한 기본 키가 있는지 확인하고 있는 경우 해당 키를 사용합니다. 기본 키가 없는 경우 에서는 자동으로 하나를 생성합니다. 또한 새 키 추가를 선택하여 이 보안 암호에 대한 사용자 지정 CMK를 생성할 수 있습니다. 고유한 AWS KMS CMK를 생성하려면 계정에서 CMK를 생성할 수 있는 권한이 있어야 합니다.

3. 데이터베이스를 실행하는 데이터베이스 엔진 유형을 선택합니다.4. 데이터베이스 서버의 IP 주소, 데이터베이스 이름 및 TCP 포트 이름을 입력하여 연결 세부 정보를 지

정합니다.

55

Page 62: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서보안 암호 생성

Other type of secret

Secrets Manager 는 다른 데이터베이스나 서비스에 대해 구성할 수 있으며 이러한 경우 이 보안 암호를사용합니다. 보안 암호의 구조 및 세부 정보를 제공해야 합니다. 이 보안 암호를 교체하려면 보안 암호를구문 분석하고 여러분을 대신해 보안 암호를 교체하기 위해 서비스와 상호 작용할 수 있는 사용자 지정교체 함수를 작성해야 합니다.

1. 사용자 지정 보안 암호의 세부 정보를 키 및 값 페어로 지정합니다. 예를 들어 UserName이라는 키를 지정한 다음 그 값으로 적절한 사용자 이름을 입력할 수 있습니다. Password라는 이름으로 두 번째 키를 추가하고 그 값으로 암호 텍스트를 추가합니다. Database name, Server address, TCPport 등에 대한 항목을 추가할 수도 있습니다. 필요한 정보를 저장하는 데 필요한 만큼 많은 페어를추가할 수 있습니다.

또는 일반 텍스트 탭을 선택하고 원하는 형식으로 보안 암호 값을 입력할 수 있습니다.2. 보안 암호에서 보호되는 텍스트를 암호화하는 데 사용하려는 AWS KMS 암호화 키를 선택합니다. 암

호화 키를 선택하지 않으면 에서는 계정에 대한 기본 키가 있는지 확인하고 있는 경우 해당 키를 사용합니다. 기본 키가 없는 경우 에서는 자동으로 하나를 생성합니다. 또한 새 키 추가를 선택하여 이 보안 암호에 대한 사용자 지정 CMK를 생성할 수 있습니다. 고유한 AWS KMS CMK를 생성하려면 계정에서 CMK를 생성할 수 있는 권한이 있어야 합니다.

Using the AWS CLI or AWS SDK operations

다음 명령을 사용하면 보안 암호 Secrets Manager 보안 암호를 생성할 수 있습니다.

• API/SDK: CreateSecret• C++• Java• PHP• Python• Ruby• Node.js

• AWS CLI: create-secret

Example

콘솔 기반 보안 암호 구성과 동등한 작업을 수행하는 AWS CLI 명령의 예입니다. 이 명령은 사용자가 이예제 JSON 텍스트 구조 {"username":"anika","password":"aDM4N3*!8TT"} 같은 보안 암호를mycreds.json이라는 파일에 배치했다고 가정합니다.

$ aws secretsmanager create-secret --name production/MyAwesomeAppSecret --secret-string file://mycreds.json{ "SecretARN": "arn:aws:secretsmanager:region:accountid:secret:production/MyAwesomeAppSecret-AbCdEf", "SecretName": "production/MyAwesomeAppSecret", "SecretVersionId": "EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE"}

Important

에 원하는 형식을 사용하여 보안 암호를 생성할 수 있습니다.SecretString를 선택합니다. 예를 들어 간단한 JSON 키-값 페어를 사용하거나 {"username":"someuser","password":"securepassword"}를 사용할 수 있습니다. 그러나 나중에 이 보안 암호에대해 교체를 활성화하도록 하려면 이 보안 암호와 함께 사용하는 교체 함수에서 요구하는 특

56

Page 63: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서보안 암호 수정

정 구조를 사용해야 합니다. 비밀 값으로 작동하는 데 필요한 각 회전 함수에 대한 자세한 내용은SecretString 암호에서 관련 회전 함수 아래의Lambda 교체 함수를 생성하는 데 사용할 수 있는 AWS 템플릿 (p. 173)를 선택합니다.

Secrets Manager 가 필요하지 않습니다.ClientRequestToken파라미터를 자동으로 생성하고 제공하는 AWS CLI 를 사용하기 때문입니다. 기본 보안 Secrets Manager CMK를 사용하는 경우KmsKeyId파라미터를 선택합니다. Secrets Manager 콘솔을 사용하는 경우SecretString에서는SecretBinary를선택합니다. Secrets ManagerSecretType콘솔에서 사용할 수 있습니다.

고객이 보안 암호를 사용하는 애플리케이션을 통해 데이터베이스에 액세스하는 경우 애플리케이션이보안 암호에 액세스하는 데 사용하는 IAM 사용자 또는 역할에게 부여해야 할 수 있습니다. 리소스 기반 정책을 보안 암호에 직접 연결하고 Principal 요소에 사용자 또는 역할을 나열하면 됩니다. 또는Resource 요소에서 보안 암호를 식별하는 사용자 또는 역할에 정책을 연결할 수 있습니다.

보안 암호 수정보안 암호를 만든 후에는 일부 요소를 수정할 수 있습니다. 콘솔에서 설명을 편집하고, 새 리소스 기반 정책을 편집 또는 연결하여 보안 암호에 대한 권한을 수정하고, 보호되는 보안 정보를 암호화 및 복호화하는 데사용되는 AWS KMS 고객 마스터 키 (CMK) 를 변경하고, 태그를 편집 또는 추가 또는 제거할 수 있습니다.

암호화된 보안 암호 정보 값을 변경할 수도 있습니다. 그러나 교체를 사용하여 자격 증명을 포함하는 보안 암호 값을 업데이트하는 것이 좋습니다. 교체는 보안 암호를 업데이트할 뿐만 아니라 교체는 보호되는 데이터베이스 또는 서비스의 자격 증명을 보안 암호 정보와 일치하도록 수정합니다. 이렇게 하면 클라이언트가 보안 암호 값을 요청할 때마다 항상 자격 증명의 작업 집합을 검색하도록 보안 암호가 자동으로 동기화됩니다.

이 단원에는 다음 보안 암호 요소를 수정하는 방법을 설명하는 절차 및 명령이 포함되어 있습니다.

• 암호화된 보안 암호 값 (p. 57)• 설명 (p. 59)• AWS KMS 암호화 키 (p. 60)• 태그 (p. 61)• 권한 정책 (p. 71)

보안 암호에 저장된 암호화된 보안 암호 값 수정

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

• 이 방법으로 보안 암호를 업데이트해도 보호되는 서버의 자격 증명은 변경되지 않습니다. 서버의자격 증명을 보안 암호 값에 저장된 자격 증명과 동기화된 상태로 유지하려면 교체를 활성화하는것이 좋습니다. AWS Lambda 함수는 서버의 자격 증명 및 일치하는 자격 증명을 모두 변경하고업데이트된 자격 증명이 작동하는지 테스트합니다. 자세한 내용은 AWS Secrets Manager 보안암호 교체 (p. 83) 단원을 참조하세요.

• SecretString에 원하는 형식을 사용하여 기본 보안 암호를 생성할 수 있습니다. 예를들어 단순한 JSON 키-값 페어를 사용할 수 있습니다. 예: {"username":"someuser","password":"securepassword"} 그러나 나중에 이 보안 암호에 대해 교체를 사용하도록 설정하려면 해당 보안 암호에 대한 특정 구조를 사용해야 합니다. Secrets MManager 는 이 보안암호에 사용하려는 교체 함수에 의해 정확한 형식을 결정합니다. 각 회전 함수가 비밀 값으로 작동하는 데 필요한 사항에 대한 자세한 내용은예상되는 SecretString 값에서 관련 회전 함수 아래의다른 데이터베이스 또는 서비스에 대한 AWS Secrets Manager 보안 암호 교체

Using the Secrets Manager console

57

Page 64: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서보안 암호 수정

보안 암호의 암호화된 보안 암호 값을 업데이트하면 새로운 버전의 보안 암호가 생성됩니다. 새 버전에서 AWSCURRENT 스테이징 레이블을 자동으로 수신합니다. 이전 버전은 AWSPREVIOUS 스테이징레이블을 쿼리하여 계속 액세스할 수 있습니다. CLI에서 get-version-ids 명령을 사용하거나 APIGETVERSIONIDS를 사용하여 수정된 보안 암호를 원래 보안 암호와 비교합니다.

두 명령의 출력은CreatedDate필드에서 보안 암호의 새 버전을 생성하므로 유효한 파라미터인 경우 보안 암호에 대한 새 버전이 생성되기 때문입니다.

Note

스테이징 레이블AWSCURRENT가 한 버전에서 다른 버전으로 이동할 때마다 보안 SecretsManager 스테이징 레이블을 자동으로 이동합니다.AWSPREVIOUS를 이전에 레이블이 지정된버전으로AWSCURRENT를 선택합니다.

1. 에서 보안 Secrets Manager 콘솔을 엽니다.https://console.aws.amazon.com/secretsmanager/를 선택합니다.

2. 보안 암호 목록에서 보안 암호 값을 수정하려는 보안 암호의 이름을 선택합니다.3. 비밀 값 섹션에서 비밀 값 검색을 선택합니다.4. 이제 보안 암호 값이 표시되면 Edit를 선택합니다.5. 값을 적절하게 업데이트한 다음 [Save]를 선택합니다.

Using the AWS CLI or AWS SDK operations

다음 명령을 사용하여 보안 암호에 저장된 암호화된 보안 암호 값을 업데이트할 수 있습니다. 보안 암호의 암호화된 보안 암호 값을 업데이트하면 새로운 보안 암호 버전이 생성됩니다.

Important

에 원하는 형식을 사용하여 보안 암호를 업데이트할 수 있습니다.SecretString를 선택합니다. 예를 들어 단순한 JSON 키-값 페어를 사용할 수 있습니다. 이에 대한 예는{"username":"someuser", "password":"securepassword"}입니다. 그러나 나중에이 보안 암호에 대해 교체를 활성화하려면 이 보안 암호에 사용하는 교체 함수에서 요구하는 특정 구조를 사용해야 합니다. 각 회전 함수가 비밀 값으로 작동하는 데 필요한 사항에 대한 자세한 내용은예상되는 SecretString 값에서 관련 회전 함수 아래의다른 데이터베이스 또는 서비스에 대한 AWS Secrets Manager 보안 암호 교체를 선택합니다.

Note

UpdateSecret은 AWSCURRENT 스테이징 레이블을 새 보안 암호 버전으로 자동으로 가져옵니다.PutSecretValue는 스테이징 레이블을 자동으로 이동하지 않습니다. 하지만 이 명령으로 첫번째 보안 암호 버전이 생성되는 경우 해당 명령은 AWSCURRENT를 추가합니다. 그렇지 않은 경우 이 명령은 VersionStages 파라미터로 명시적으로 요청한 레이블만 연결하거나 이동합니다.스테이징 레이블AWSCURRENT가 한 버전에서 다른 버전으로 이동할 때마다 보안 SecretsManager 스테이징 레이블을 자동으로 이동합니다.AWSPREVIOUS버전으로 업그레이드할 수있습니다.AWSCURRENT스테이징 레이블을 제거합니다.AWSPREVIOUS를 선택합니다.

• API/SDK: UpdateSecret,PutSecretValue• C++• Java• PHP• Python• Ruby• Node.js

58

Page 65: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서보안 암호 수정

• AWS CLI: update-secret,put-secret-value

Example

다음 예제 AWS CLI 명령은 보안 암호에 대한 보안 암호 값을 변경합니다. 이로 인해 새 버전이 생성됩니다. Secrets Manager 자동으로AWSCURRENT스테이징 레이블을 새 버전으로 업그레이드할 수 있습니다.또한 Secrets Manager 자동으로AWSPREVIOUS스테이징 레이블을 스테이징 레이블이 있는 이전 버전으로 가져옵니다.AWSCURRENT를 선택합니다.

$ aws secretsmanager update-secret --secret-id production/MyAwesomeAppSecret --secret-string '{"username":"anika","password":"a different password"}'{ "SecretARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:production/MyAwesomeAppSecret-AbCdEf", "SecretName": "production/MyAwesomeAppSecret", "VersionId": "EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE"}

출력의 VersionId에는 새 보안 암호 버전의 고유한 보안 암호 버전 ID가 포함되어 있습니다.ClientRequestToken 파라미터를 사용하여 값을 수동으로 제공할 수 있습니다. 값을 지정하지 않는경우 SDK 또는 AWS CLI 에서 임의의 UUID 값을 생성합니다.

보안 암호의 설명 수정

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

Using the console

1. 에서 보안 Secrets Manager 콘솔을 엽니다.https://console.aws.amazon.com/secretsmanager/를 선택합니다.

2. 보안 암호 목록에서 수정할 보안 암호의 이름을 선택합니다.3. [Secrets details] 섹션에서 [Actions]를 선택한 후 [Edit description]을 선택합니다.4. 새 설명을 입력하거나 기존 텍스트를 편집한 후 저장을 선택합니다.

Using the AWS CLI or AWS SDK operations

다음 명령을 사용하여 AWS 보안 암호 관리자에서 보안 암호에 대한 설명을 수정할 수 있습니다.

• API/SDK: UpdateSecret• C++• Java• PHP• Python• Ruby• Node.js

• AWS CLI: update-secret

Example

다음 예제 AWS CLI 명령은 설명을 추가하거나--description파라미터.

59

Page 66: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서보안 암호 수정

$ aws secretsmanager update-secret --secret-id production/MyAwesomeAppSecret --description 'This is the description I want to attach to the secret.'{ "ARN": "arn:aws:secretsmanager:region:accountid:secret:production/MyAwesomeAppSecret-AbCdEf", "Name": "production/MyAwesomeAppSecret", "VersionId": "EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE"}

Example

보안 암호에 대한 변경 사항을 보려면 describe-secret 명령을 사용합니다.

aws secretsmanager describe-secret --secret-id production/MyAwesomeAppSecret { "ARN": "arn:aws:secretsmanager:region:accountid:secret:production/MyAwesomeAppSecret-AbCdEf", "Name": "production/MyAwesomeAppSecret", "Description": "This is the description I want to attach to the secret", "LastChangedDate": 1579542853.77, "LastAccessedDate": 1579478400.0,

보안 암호에서 사용하는 AWS KMS 암호화 키 수정

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

Using the Secrets Manager console

Important

보안 암호에서 사용되는 암호화 키를 변경하는 경우 첫 번째 CMK를 비활성화하거나 삭제하기전에 UpdateSecret 또는 PutSecretValue를 사용하여 보안 암호 값을 한 번 이상 업데이트해야 합니다. 보안 암호 값을 업데이트하면 이전 CMK를 사용하여 보안 암호를 복호화한 후새 CMK를 사용하여 보안 암호를 다시 암호화합니다. 이 업데이트가 수행되기 이전에 첫 번째CMK를 비활성화하거나 삭제할 경우 Secrets Manager 키의 암호를 해독할 수 없으며, CMK를다시 활성화할 수 없을 경우 보안 암호의 내용이 손실됩니다.

1. 에서 보안 Secrets Manager 콘솔을 엽니다.https://console.aws.amazon.com/secretsmanager/를 선택합니다.

2. 보안 암호 목록에서 수정할 보안 암호의 이름을 선택합니다.3. [Secrets details] 섹션에서 [Actions]를 선택한 후 [Edit encryption key]를 선택합니다.4. 최신 버전의 보안 암호를 암호화하고 복호화하는 데 사용할 AWS KMS 암호화 키를 선택합니다. 그런

다음 [Save]를 선택합니다.

Using the AWS CLI or AWS SDK operations

Important

보안 암호에서 사용되는 암호화 키를 변경하는 경우 첫 번째 CMK를 비활성화하거나 삭제하기전에 UpdateSecret 또는 PutSecretValue를 사용하여 보안 암호 값을 한 번 이상 업데이트해야 합니다. 보안 암호 값을 업데이트하면 이전 CMK를 사용하여 보안 암호를 복호화한 후새 CMK를 사용하여 보안 암호를 다시 암호화합니다. 이 업데이트가 수행되기 이전에 첫 번째CMK를 비활성화하거나 삭제할 경우 Secrets Manager 키의 암호를 해독할 수 없으며, CMK를다시 활성화할 수 없을 경우 보안 암호의 내용이 손실됩니다.

60

Page 67: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서보안 암호 수정

다음 명령을 사용하여 보안 암호에서 사용하는 AWS KMS 암호화 키를 수정할 수 있습니다. Amazon 리소스 이름(ARN)을 사용하여 CMK를 지정해야 합니다.

• API/SDK: UpdateSecret• C++• Java• PHP• Python• Ruby• Node.js

• AWS CLI: update-secret

Example

다음 예제 AWS CLI 명령은 이 시점부터 이 보안 암호의 모든 암호화 및 암호화 해제 작업에 사용되는AWS KMS CMK를 추가하거나 대체합니다.

$ aws secretsmanager update-secret --secret-id production/MyAwesomeAppSecret --kms-key-id arn:aws:kms:region:123456789012:key/EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE

보안 암호에 연결된 태그 수정

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

Using the console

태그 키 이름과 값은 대/소문자를 구분합니다. 하나의 보안 암호에서 하나의 태그만 지정된 키 이름을 가질 수 있습니다.

1. 에서 보안 Secrets Manager 콘솔을 엽니다.https://console.aws.amazon.com/secretsmanager/를 선택합니다.

2. 보안 암호 목록에서 수정할 보안 암호의 이름을 선택합니다.3. 태그 섹션에서 편집을 선택합니다.4. Secrets Manager 는 기존 태그를 표시합니다. 키 이름 또는 값을 입력할 수 있습니다.5. 태그 제거를 선택하여 기존 행을 제거할 수 있습니다.6. 다른 키-값 페어를 추가해야 할 경우 태그 추가를 선택한 후 새 키 이름과, 연결된 값을 입력합니다.7. 변경 작업을 마치면 저장을 선택합니다.

Using the AWS CLI or AWS SDK operations

다음 명령을 사용하여 보안 Secrets Manager 에 연결된 태그를 추가하거나 제거할 수 있습니다. 키 이름과 값은 대/소문자를 구분합니다. 하나의 보안 암호에서 하나의 태그만 지정된 키 이름을 가질 수 있습니다. 기존 태그를 편집하려면 동일한 키 이름을 가진 태그를 다른 값으로 추가합니다. 이 작업은 새 키 값페어를 추가하지 않습니다. 대신 보안 Secrets Manager 기존 페어 값을 업데이트합니다. 키 이름을 변경하려면 첫 번째 키를 제거하고 새 이름으로 두 번째 키를 추가해야 합니다.

• API/SDK: TagResource,UntagResource• C++• Java

61

Page 68: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Secrets 값 검색

• PHP• Python• Ruby• Node.js

• AWS CLI: tag-resource,untag-resource

Example

다음 예제 AWS CLI 명령은 태그를--tags파라미터. 이 파라미터는 Key 및 Value 요소의 JSON 배열로 예상됩니다.

$ aws secretsmanager tag-resource --secret-id MySecret2 --tags '[{"Key":"costcenter","Value":"12345"},{"Key":"environment","Value":"production"}]'

tag-resource 명령은 출력을 반환하지 않습니다.

Example

다음 예제 AWS CLI 명령은 지정된 보안 암호에서 “environment” 키가 있는 태그를 제거합니다.

$ aws secretsmanager untag-resource --secret-id MySecret2 --tag-keys 'environment'

tag-resource 명령은 출력을 반환하지 않습니다.

Secrets 값 검색Secrets Manager 에서는 사용자 지정 애플리케이션 내에서 보안 암호를 프로그래밍 방식으로 안전하게 검색할 수 있습니다. 그러나 콘솔 또는 CLI 도구를 사용하여 보안 암호를 검색할 수도 있습니다.

이 단원에는 보안 암호 값을 검색하는 방법을 설명하는 절차 및 명령이 포함되어 있습니다.

보안 암호 값 검색

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

Using the Secrets Manager console

최소 권한

콘솔에서 보안 암호를 검색하려면 다음과 같은 권한이 있어야 합니다.

• secretsmanager:ListSecrets— 검색할 보안 암호로 이동하는 데 사용합니다.• secretsmanager:DescribeSecret— 보안 암호의 암호화되지 않은 부분을 검색하는 데

사용합니다.• secretsmanager:GetSecretValue— 보안 암호의 암호화된 부분을 검색하는 데 사용합

니다.• kms:Decrypt— 사용자 지정 AWS KMS 고객 마스터 키 (CMK) 를 사용하여 보안 암호를 암

호화하는 경우에만 필요합니다.

1. 에서 보안 Secrets Manager 콘솔을 엽니다.https://console.aws.amazon.com/secretsmanager/를 선택합니다.

62

Page 69: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서AWS에서 개발한 오픈 소스 클

라이언트 측 캐싱 구성 요소 사용

2. 계정의 보안 암호 목록에서 보려는 보안 암호의 이름을 선택합니다.

암호 세부 정보 페이지가 나타납니다. 암호화된 보안 암호 텍스트를 제외하고 선택된 모든 보안 암호의 구성 정보가 표시됩니다.

3. 비밀 값 섹션에서 비밀 값 검색을 선택합니다.4. 비밀 키/값을 선택하여 개별 키 및 값으로 구문 분석된 자격 증명을 확인합니다. 일반 텍스트를 선택하

여 암호화되어 저장되어 있는 JSON 텍스트 문자열을 확인합니다.

Using the AWS CLI or AWS SDK operations

다음 명령을 사용하면 AWS Secrets Manager에 저장된 보안 암호를 검색할 수 있습니다.

• API/SDK: GetSecretValue• C++• Java• PHP• Python• Ruby• Node.js

• AWS CLI: get-secret-value

익숙한 이름 또는 Amazon 리소스 이름(ARN)으로 보안 암호를 식별하고 보안 암호의 버전을 지정해야합니다. 버전을 지정하지 않는 경우 Secrets Manager는 기본적으로 스테이징 레이블을 사용하여 버전을 사용합니다.AWSCURRENT를 선택합니다. Secrets Manager 응답 매개 변수에 비밀 텍스트의 내용을반환합니다.PlaintextString그리고 바이너리 데이터를 비밀에 저장했다면Plaintext바이트 배열을 반환합니다.

Example

다음 AWS CLI 명령 예제는 “MyTestDatabase”라는 보안 암호의 기본 버전에서 암호화된 보안 암호 정보를 해독하고 검색합니다. Secrets Manager 사용마지막으로 수정한 날짜의 경우CreatedDate출력.

$ aws secretsmanager get-secret-value --secret-id development/MyTestDatabase{ "ARN": "arn:aws:secretsmanager:region:accountid:secret:development/MyTestDatabase-AbCdEf", "Name": "development/MyTestDatabase", "VersionId": "EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE", "SecretString": "{\"ServerName\":\"MyDBServer\",\"UserName\":\"Anaya\",\"Password\":\"MyT0pSecretP@ssw0rd\"}", "SecretVersionStages": [ "AWSCURRENT" ], "CreatedDate": 1510089380.309}

AWS에서 개발한 오픈 소스 클라이언트 측 캐싱 구성요소 사용보안 암호를 효율적으로 사용하려면 단순히 필요할 때마다 보안 암호 값을 검색하면 안 됩니다. 또한 다음 작업을 수행하는 코드를 포함시켜야 합니다.

63

Page 70: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서비밀 Secrets Manager 에 대 한 향상 된 검색 기능

• 애플리케이션에서 보안 암호를 검색한 후 캐싱해야 합니다. 그런 다음 필요할 때마다 SecreSecretsManager 에서 네트워크를 통해 에서 보안 암호를 검색하는 대신, 캐싱된 값을 사용하십시오.

• 코드에서 네트워크 또는 AWS 서비스 오류를 수신할 때마다 지수 백오프를 구현하는 알고리즘을 사용하여요청을 다시 시도한 다음지수 백오프 및 지터의AWS 아키텍처 블로그를 선택합니다.

이러한 작업을 수행하는 코드를 작성하면 다음과 같은 이점이 있습니다.

• 비용 절감— 자주 사용하는 보안 암호의 경우 캐시에서 보안 암호를 검색하면 애플리케이션이 SecretsManager 에 요청하는 API 호출 수가 줄어듭니다. Secrets Manager는 API 호출당 요금을 부과하기 때문에이렇게 하면 비용을 상당히 줄일 수 있습니다.

• 성능 개선— Secrets Manager로 요청을 보내지 않고 메모리에서 보안 암호를 검색하면 애플리케이션 성능이 크게 향상될 수 있습니다.

• 가용성 개선— 캐시에서 보안 암호 정보를 검색하면 일시적인 네트워크 오류로 인한 부담이 훨씬 적습니다.

Secrets Manager 는 이러한 모범 사례를 구현하여 AWS Secrets Manager 에 저장된 보안 암호에 액세스하는 코드를 쉽게 작성할 수 있는 클라이언트 측 구성 요소를 만들었습니다. 이클라이언트를 설치한 후 보안 암호를 호출하여 코드에서 사용할 보안 암호의 식별자를 제공합니다. 비밀 정보 관리자에는 보안 관리자 호출에 사용하는 AWS 자격 증명이 필요합니다.secretsmanager:DescribeSecret및secretsmanager:GetSecretValue권한에 대한 권한이 있습니다. 이러한 자격 증명은 일반적으로 IAM 역할과 연결됩니다. SAML 연동 또는 웹 자격 증명(OIDC) 연동을 사용할 경우 로그온할 때 이 역할이 할당될 수 있습니다. Amazon EC2 인스턴스에서 애플리케이션을실행하는 경우 관리자는인스턴스 프로파일를 선택합니다.

이 구성 요소는 다음 형태로 제공됩니다.

• GetSecretValue 작업을 직접 호출하는 대신 보안 암호와 상호 작용하는 Java, Python, Go 및 .NET의클라이언트 측 라이브러리

• JDBC(Java Database Connectivity) 규격의 데이터베이스 드라이버 구성 요소. 이 구성 요소는 위에서 설명한 기능을 추가하는 트루(true) JDBC 드라이버 중심의 래퍼입니다.

다운로드 지침은 다음 링크 중 하나를 사용하십시오.

• Java 기반 캐싱 클라이언트 구성 요소.• JDBC 호환 데이터베이스 커넥터 구성 요소• Python 캐싱 클라이언트• .NET용 캐싱 클라이언트• Go 캐싱 클라이언트

비밀 Secrets Manager 에 대 한 향상 된 검색 기능Secret Secrets Manager 는 AWS 콘솔, AWS API 및 AWS CLI를 통해 지원되는 향상된 검색 기능을 도입하여 보안 이름, 설명, 태그 키 및 태그 값과 같은 속성을 기반으로 암호를 보다 쉽게 관리하고 검색할 수 있는방법을 제공합니다.

비밀 관리자에 수천 개의 비밀을 저장하는 경우 이름으로 비밀을 검색하면 비밀에 대한 충분한 정보가 반환되지 않을 수 있습니다. 그러나 검색 시 추가 검색 특성을 사용하면 비밀에 대한 자세한 정보가 제공됩니다.검색 조건에 여러 필터를 적용할 수 있습니다.

AWS 보안 블로그도 읽을 수 있습니다.AWS Secrets Manager 향상된 검색을 사용하여 쉽게 비밀 식별, 정렬및 관리를 선택합니다.

다음 속성을 사용하여 보안 암호를 검색할 수 있습니다.

64

Page 71: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서필터 없이 검색 사용

• 이름- 관련 결과를 반환하기 위해 비밀 이름의 일부 또는 전부를 사용하여 일치하는 접두사 대소 문자를 구분하는 구문 쿼리입니다.

예를 들어, 검색MySecret는 비밀, MySecret Secret의 이름을 지정하면 결과를 반환합니다. 검색에서 명명 된 비밀을 찾을 수 없습니다.mysecret또는 기타 변형이 있습니다.

• 설명- 일치하는 설명을 필터링하기 위해 설명에 있는 구를 지정하는 대소문자를 구분하지 않는 일치 문구입니다.

예를 들어, 검색MyDescription는 내 설명, 내 설명, 내 설명 또는 내 설명과 함께 결과를 반환합니다.• 태그 키- 태그 키의 존재를 검색하는 일치하는 접두사 대/소문자를 구분하는 쿼리입니다. Secrets Manager

지정된 접두사와 일치하는 태그만 반환합니다.

예를 들어,MyKey는 myKey의 태그 키 값이 myKey인 비밀만 반환하고 mykey 또는 다른 변형은 반환하지않습니다.

• 태그 값태그 값의 존재를 검색하는 일치하는 접두사 대/소문자를 구분하는 쿼리 Secrets Manager 지정된접두사와 일치하는 태그만 반환합니다.

예를 들어,MyValue는 myValue 또는 기타 변형이 아닌 태그 값이 myValue인 비밀 만 반환합니다.

필터 없이 검색 사용필터를 지정하지 않고 검색 기능을 사용하면 비밀에 대한 다른 검색 결과가 반환됩니다. 검색 키워드를 지정하면 이름, 태그 키, 태그 값 또는 설명에 해당 키워드가 있는 모든 비밀이 검색되고 결과에서 대/소문자 구분이 무시됩니다.

필터 없이 전체 텍스트 검색을 사용하는 경우 검색 기능에서는 공백,/, _, =, #과 같은 특수 문자를 무시하고일치하는 숫자와 알파벳만 검색합니다.

Secrets Manager 기본적으로 이러한 유형의 검색 동작을 제공합니다.Note

Secrets Manager 지역 서비스이며 검색 반환 선택한 지역에 저장 일치.

보안 암호 검색

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

Using the Secrets Manager console

1. 에서 보안 암호의 관리자 콘솔을 엽니다.https://console.aws.amazon.com/secretsmanager/를 선택합니다.

2. [] 를 클릭합니다.검색필드를 클릭하고 검색에 사용할 필터를 선택합니다.• 이름• 설명• 태그 키• 태그 값

Note

검색 기준에 여러 개의 필터를 사용할 수 있습니다.3. 에 키워드를 입력검색필드를 누르고Enter를 선택합니다.4. Secrets Manager 검색 조건과 일치하는 암호 목록을 반환합니다.

예를 들어 키워드로 비밀을 검색하면conducts는 비밀 설명에서 두 가지 비밀을 반환합니다.

65

Page 72: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서비밀 삭제 및 복원

비밀 이름 설명

총무 관리자-회전 - 람다 단일 사용자 순환 체계를 사용하여 RDS MySQL에 대한 AWS SecretsManager 순환을 수행합니다.

총무 관리자-회전 개발자 단일 사용자 순환 체계를 사용하여 RDS MySQL에 대한 AWS SecretsManager 순환을 수행합니다.

Using the AWS CLI or AWS SDK operations

다음 명령을 사용하여 AWS Secrets Manager 보안 암호의 이름을 검색할 수 있습니다.

• API/SDK: ListSecrets• C++• Java• PHP• Python• Ruby• Node.js

• AWS CLI: list-secrets

Example

AWS CLI 명령의 다음 예는 키워드로 암호를 검색합니다.conducts, 설명에.

$ aws secretsmanager list-secrets --filters '[{"Key":"description", "Values":["conducts"]}]' --query "SecretList[*].{SecretName:Name,Description:Description}"{ [ { "Description": "Conducts an AWS SecretsManager rotation for RDS MySQL using single user rotation scheme", "SecretName": "SecretsManager-rotation-lambda" }, { "Description": "Conducts an AWS SecretsManager rotation for RDS MySQL using single user rotation scheme", "SecretName": "SecretsManager-rotation-Developers" }]}

이 쿼리는 두 보안 암호인SecretsManager-rotation-lambda및SecretsManager-rotation-Developers키워드가 포함 된conducts설명에 있습니다.

비밀 삭제 및 복원AWS Secrets Manager에서는 보안 암호의 중요한 특성으로 인해 보안 암호를 의도적으로 삭제하기 어렵게되어 있습니다. Secrets Manager 즉시 삭제하지 않습니다. 대신, Secrets Manager 즉시 는 보안 암호에 액세

66

Page 73: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서비밀 삭제 및 복원

스할 수 없도록 하고 복구 기간 후에 삭제되도록 예약합니다.minimum7일의. 복구 기간이 끝날 때까지 이전에 삭제한 보안 암호를 복구할 수 있습니다. CLI (p. 68)를 사용하여 복구 기간 없이 보안 암호를 삭제할 수있습니다.

또한 보안 암호 버전을 즉시 삭제할 수 없습니다. 대신 모든 스테이징 레이블을 보안 암호에서 제거합니다.이는 보안 암호를 사용 중지 상태로 표시하고 보안 Secrets Manager 백그라운드에서 해당 버전을 자동으로삭제할 수 있게 합니다.

이 단원에는 보안 암호를 삭제하고 삭제된 보안 암호를 복원하는 절차 및 명령이 포함되어 있습니다.

• 보안 암호와 해당하는 모든 버전 삭제 (p. 67)• 삭제하도록 예약된 보안 암호 복원 (p. 69)• 보안 암호 버전 삭제 (p. 70)

보안 암호와 해당하는 모든 버전 삭제

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

Using the Secrets Manager console

보안 암호를 삭제하면 Secrets Manager에서 보안 암호를 즉시 사용 중지됩니다. 하지만 SecreSecretsManager 에서는 복구 기간에 지정된 일수가 지날 때까지 에서 실제로 보안 암호를 삭제하지 않습니다.사용 중지된 보안 암호에는 액세스할 수 없습니다. 삭제하도록 예약된 보안 암호에 액세스해야 하는 경우 해당 보안 암호를 복원해야 합니다. 그런 다음 보안 암호 및 암호화된 보안 암호 정보에 액세스할 수있습니다.

AWS CLI 또는 AWS SDK를 사용하여 복구 기간 없이 보안 암호를 영구적으로 삭제할 수 있습니다. 하지만 Secrets Manager 콘솔에서는 이 작업을 수행할 수 없습니다.

최소 권한

콘솔에서 보안 암호를 삭제하려면 다음과 같은 권한이 있어야 합니다.

• secretsmanager:ListSecrets— 삭제하려는 보안 암호로 이동하는 데 사용됩니다.• secretsmanager:DeleteSecret— 보안 암호를 사용 중지하고 영구 삭제하도록 예약하

는 데 사용됩니다.

1. 에서 보안 Secrets Manager 콘솔을 엽니다.https://console.aws.amazon.com/secretsmanager/를 선택합니다.

2. Secrets Manager에서 현재 관리하는 보안 암호 목록으로 이동한 다음 삭제하려는 보안 암호의 이름을 선택합니다.

3. [Secret details] 섹션에서 [Delete secret]을 선택합니다.4. [Schedule secret deletion] 대화 상자에 복구 기간의 일수를 지정합니다. 삭제가 영구화되기 전에 대

기할 일 수를 나타냅니다. Secrets Manager 라는 필드를 첨부DeletionDate에서 현재 날짜 및 시간에 복구 기간에 지정된 일수를 더한 값으로 설정합니다.

5. [Schedule deletion]을 선택합니다.6. 콘솔에서 삭제된 항목을 표시하는 옵션을 활성화한 경우 보안 암호가 계속 표시됩니다. 선택적으로

목록에서 삭제된 날짜 필드를 볼 수 있습니다.a. 오른쪽 위 모서리에 있는 기본 설정 아이콘(기어 )을 선택합니다.b. [Show secrets scheduled for deletion]을 선택합니다.c. [Deleted on]에 대한 전환을 활성화합니다.d. 저장을 선택합니다.

67

Page 74: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서비밀 삭제 및 복원

이제 삭제된 보안 암호가 삭제한 각 날짜와 함께 목록에 나타납니다.

Using the AWS CLI or AWS SDK operations

다음 명령을 사용하면 AWS Secrets Manager에 저장된 보안 암호를 검색할 수 있습니다.

• API/SDK: DeleteSecret• 용 AC++• Java• PHP• Python• Ruby• Node.js

• AWS CLI: delete-secret

SecretId 필드에서 표시 이름이나 Amazon 리소스 이름(ARN)으로 삭제하려는 보안 암호를 식별해야합니다.

Example

다음 AWS CLI 명령 예제는 “MyTestDatabase”라는 보안 암호를 사용 중지하고 14일의 복구 기간 후에삭제되도록 예약합니다.

$ aws secretsmanager delete-secret --secret-id development/MyTestDatabase --recovery-window-in-days 14{ "ARN": "arn:aws:secretsmanager:region:accountid:secret:development/MyTestDatabase-AbCdEf", "Name": "development/MyTestDatabase", "DeletionDate": 1510089380.309}

에서 지정된 날짜 및 시간 이후 언제든지DeletionDate필드에 로그인하면 AWS Secrets Manager 해당 암호를 영구적으로 삭제합니다.

대기 시간 없이 보안 암호를 즉시 삭제할 수도 있습니다.Important

ForceDeleteWithoutRecovery 파라미터를 사용하여 삭제된 보안 암호는RestoreSecret 작업으로 복구할 수 없습니다.

Example

AWS CLI 명령의 다음 예제는 복구 기간 없이 보안 암호를 즉시 삭제합니다. DeletionDate 응답 필드에는 미래의 시간 대신 현재 날짜 및 시간이 표시됩니다.

$ aws secretsmanager delete-secret --secret-id development/MyTestDatabase --force-delete-without-recovery{ "ARN": "arn:aws:secretsmanager:region:accountid:secret:development/MyTestDatabase-AbCdEf", "Name": "development/MyTestDatabase", "DeletionDate": 1508750180.309}

68

Page 75: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서비밀 삭제 및 복원

유용한 팁

애플리케이션에서 보안 암호가 여전히 사용 중인지 모르는 경우 복구 기간 중에 보안 암호에 액세스하려고 하면 알려주는 Amazon CloudWatch 경보를 생성할 수 있습니다. 자세한 내용은 삭제하도록 예약된 보안 암호 버전 모니터링 (p. 141) 단원을 참조하세요.

삭제하도록 예약된 보안 암호 복원

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

Using the Secrets Manager console

SecreSecrets Manager 에서는 삭제하기 위해 예약된 보안 암호를 더 이상 사용되지 않는 것으로 간주하며 더 이상 직접 액세스할 수 없습니다. 복구 기간이 지난 후 는 보안 Secrets Manager 보안 암호를 영구적으로 삭제합니다. SecreSecrets Manager 에서 보안 암호를 삭제한 후에는 복구할 수 없습니다. 복구기간이 끝나기 전에 보안 암호를 복구하고 다시 액세스할 수 있습니다. 이렇게 하면 영구 삭제 예약을 취소하는 DeletionDate 필드가 제거됩니다.

최소 권한

콘솔에서 보안 암호와 메타데이터를 복원하려면 다음과 같은 권한이 있어야 합니다.

• secretsmanager:ListSecrets— 복원하려는 보안 암호로 이동하는 데 사용합니다.• secretsmanager:RestoreSecret— 보안 암호와 연결된 모든 버전을 삭제하는 데 사용

합니다.

1. 에서 보안 Secrets Manager 콘솔을 엽니다.https://console.aws.amazon.com/secretsmanager/를 선택합니다.

2. Secrets Manager 에서 현재 관리하는 보안 암호 목록으로 이동합니다.3. 삭제된 보안 암호를 보려면 콘솔에서 이 기능을 활성화해야 합니다. 이 기능을 활성화하지 않은 경우

다음 단계를 수행하십시오.4. a. 오른쪽 위 모서리에 있는 기본 설정 아이콘(기어 )을 선택합니다.

b. [Show secrets scheduled for deletion]을 선택합니다.c. [Deleted on]에 대한 전환을 활성화합니다.d. 저장을 선택합니다.

이제 삭제된 보안 암호가 삭제한 각 날짜와 함께 목록에 나타납니다.5. 복원하려는 삭제된 보안 암호의 이름을 선택합니다.6. [Secret details] 섹션에서 [Cancel deletion]을 선택합니다.7. [Cancel secret deletion] 확인 대화 상자에서 [Cancel deletion]을 선택합니다.

AWS Secrets Manager 에서DeletionDate필드를 보안 암호에서 가져옵니다. 그러면 삭제 예약이취소되고 보안 암호에 대한 액세스 권한이 복원됩니다.

Using the AWS CLI or AWS SDK operations

다음 명령을 사용하면 AWS Secrets Manager에 저장된 보안 암호를 검색할 수 있습니다.

• API/SDK: RestoreSecret• C++• Java

69

Page 76: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서비밀 삭제 및 복원

• PHP• Python• Ruby• Node.js

• AWS CLI: restore-secret

SecretId 필드에서 익숙한 이름이나 ARN으로 복원하려는 보안 암호를 식별해야 합니다.

Example

AWS CLI 명령의 다음 예제는 “MyTestDatabase”라는 이전에 삭제된 보안 암호를 복원합니다. 그러면 삭제 예약이 취소되고 보안 암호에 대한 액세스 권한이 복원됩니다.

$ aws secretsmanager restore-secret --secret-id development/MyTestDatabase{ "ARN": "arn:aws:secretsmanager:region:accountid:secret:development/MyTestDatabase-AbCdEf", "Name": "development/MyTestDatabase"}

보안 암호의 한 버전 삭제

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

Using the AWS CLI or AWS SDK operations

Secrets Manager 콘솔을 사용하여 하나의 보안 암호 버전을 삭제할 수 없습니다. AWS CLI 또는 AWSAPI를 사용해야 합니다.

또한 보안 암호 버전을 직접 삭제할 수 없습니다. 대신, 모든 스테이징 레이블을 제거하여 보안 암호를사용 중지 상태로 표시합니다. Secrets Manager 백그라운드에서 삭제할 수 있습니다.

다음 명령을 사용하면 AWS Secrets Manager에 저장된 보안 암호의 버전을 사용 중지할 수 있습니다.

• API/SDK: UpdateSecretVersionStage• AWS CLI: update-secret-version-stage

익숙한 이름이나 ARN으로 보안 암호를 식별해야 합니다. 또한 추가, 이동 또는 제거하려는 스테이징 레이블을 지정합니다.

다음 조합으로 FromSecretVersionId 및 MoveToSecretId를 지정할 수 있습니다.

• FromSecretVersionId만 해당: 지정된 버전에서 스테이징 레이블을 완전히 삭제합니다.• MoveToVersionId만 해당: 스테이징 레이블을 지정된 버전에 추가합니다. 다른 버전에 스테이징 레

이블이 이미 연결되어 있는 경우 Secrets Manager 는 해당 버전에서 레이블을 자동으로 제거합니다.• MoveToVersionId및RemoveFromVersionId: 레이블을 명시적으로 이동합니다. 스테이징 레이블

이 보안 암호의 RemoveFromVersionId 버전에 있어야 하며, 그렇지 않으면 오류가 발생합니다.

Example

AWS CLI 명령의 다음 예는AWSPREVIOUS스테이징 레이블을 “MyTestDatabase”라는 보안 암호 버전에서 제거합니다. ListSecretVersionIds 명령을 사용하여 삭제할 버전의 버전 ID를 검색할 수 있습니다.

70

Page 77: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서보안 암호에 리소스 기반 정책 관리

$ aws secretsmanager update-secret-version-stage \ --secret-id development/MyTestDatabase \ --remove-from-version-id EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE --version-stage AWSPREVIOUS{ "ARN": "arn:aws:secretsmanager:region:accountid:secret:development/MyTestDatabase-AbCdEf", "Name": "development/MyTestDatabase"}

보안 암호에 리소스 기반 정책 관리이 단원에서는 보안 암호에서 리소스 기반 정책을 연결, 검색, 제거하는 방법을 설명합니다.

AWS 계정은 AWS 보안 암호 관리자에 저장한 보안 암호를 포함하여 모든 AWS 리소스를 소유합니다. AWS에는 리소스를 만들거나 액세스하기 위한 리소스 기반 정책이 포함되어 있습니다. 계정 관리자는 리소스에 대한 액세스 권한이 필요한 IAM 자격 증명 (사용자, 그룹 및 역할) 에 직접 리소스 기반 정책을 연결하여AWS 리소스에 대한 액세스를 제어할 수 있습니다.

AWS Identity and Access Management 자세한 내용은IAM 정책 및 권한섹션을 참조하세요.

리소스 기반 정책을 검색하여 나중에 검토할 수 있으며, 더 이상 필요하지 않은 경우 리소스 기반 정책을 삭제할 수 있습니다.

보안 Secrets Manager 콘솔 또는GetResourcePolicy,PutResourcePolicy,및DeleteResourcePolicyAPI를 사용하여 보안 암호에 대한 리소스 기반 정책을 검색, 연결 또는 삭제할 수 있습니다. 콘솔에서 JSON 형식의 리소스 기반 정책을 연결하면 Secrets Manager젤코바, 자동화 된추론 엔진 및 APIValidateResourcePolicy를 사용하여 정책에서 다양한 IAM 보안 주체에 비밀에 대한 액세스 권한을 부여하지 않는지 확인합니다. 또는 호출할 수 있습니다.PutResourcePolicyAPI 사용BlockPublicPolicy매개 변수를 CLI 또는 SDK에서 가져옵니다.

허용 가능한 리소스 기반 정책으로 고려할 경우 리소스 기반 정책은 다음 고정 값 중 하나 이상에만 액세스권한을 부여해야 합니다.

• aws:SourceArn

• aws:SourceVpc

• aws:SourceVpce

• aws:SourceAccount

자세한 내용은 단원을 참조하십시오.Amazon S3 설명서를 선택합니다.

AWS 는 다음과 같은 제품 및 보안 Secrets Manager Zelkova를 사용하여 유사한 환경을 제공합니다.

• AWS Config• Amazon S3• AWS Trusted Advisor• Amazon Macie• Amazon GuardDuty

정책에서 광범위하게 액세스 가능한 보안 암호를 생성하지 않으면 보안 Secrets Manager 콘솔은PutResourcePolicyAPI를 사용하여 정책을 연결합니다. 광범위한 IAM 보안 주체가 보안 암호에 액세스할 수 있는 리소스 기반 정책을 생성하면 Secrets Manager Console에 오류 메시지가 표시되고 정책을 연결할 수 없습니다.

71

Page 78: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서보안 암호에 리소스 기반 정책 연결

CLI 및 API 명령을 사용하여 리소스 기반 정책을 추가, 수정, 검색 및 삭제할 수 있습니다.

보안 암호에 리소스 기반 정책 연결보안 암호에 리소스 기반 정책 연결

리소스 기반 정책 구성에 대한 자세한 내용은 보안 Secrets Manager 에 대한 액세스 권한 관리 개요 (p. 34)및 보안 Secrets Manager 대한 리소스 기반 정책 사용 (p. 51) 단원을 참조하십시오.

다음 단계에 따라 보안 암호에 리소스 기반 정책을 연결하십시오.

Using the Secrets Manager Console

Secrets Manager 콘솔을 사용하여 리소스 기반 정책을 암호에 연결하거나 수정할 수 있습니다. 정책은JSON 구조화된 텍스트 형식이어야 합니다.

기존 암호에 정책을 추가하려면 다음 단계를 따르십시오.

1. 리소스 기반 정책을 추가하거나 수정할 암호를 선택합니다.2. 아래로 스크롤하여리소스 사용 권한 (선택 사항)섹션을 선택하고권한 편집를 선택합니다. JSON 형

식으로 정책을 코드 필드에 입력합니다.3. 저장을 선택합니다.

Secrets Manager 정책의 일부로 정책의 유효성을 검사합니다.Save프로세스를 시작합니다.

Example

다음 JSON 코드 예제는 허용 가능한 리소스 기반 정책을 표시합니다.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::123456789012:user/admin" }, "Action":"secretsmanager:GetSecretValue", "Resource":"arn:aws:secretsmanager:us-east-1:123456789012:secret:consolesecret-m4qxfJ" } ]}

Secrets Manager 잘못된 리소스 기반 정책을 감지하면 Secrets Manager 발생한 오류 유형에 따라 오류메시지를 반환합니다.

• JSON 잠금

Your requested changes will not allow you to manage this secret in the future.

Example

{ "Version" : "2012-10-17",

72

Page 79: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서보안 암호에 리소스 기반 정책 연결

"Statement" : [ { "Effect" : "Deny", "Principal" : "*", "Action" : "secretsmanager:*", "Resource" : "*" } ]}

• 광범위한 액세스 JSON

This resource policy grants broad access to your secret. Secrets Manager does not allow creating and applying such policies in the console.

Example

{ "Version" : "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Principal" : "*", "Action" : "secretsmanager:*", "Resource" : "*" } ]}

• JSON 구문 오류

This resource policy contains a syntax error.

Example

{ "Version" : "2012-10-17", "Statement" : [ { "Effect" : "AllowSomething", "Principal" : "*", "Action" : "secretsmanager:*", "Resource" : "*" } ]}

• 잘못된 주도자 정책 JSON

This resource policy contains an unsupported principal.

Example

{ "Version" : "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::123456789012:user/invaliduser" }, "Action" : "secretsmanager:GetSecretValue", "Resource" : "*" } ]}

73

Page 80: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서보안 암호에 리소스 기반 정책 연결

• 잘못된 서비스 주체 JSON

This resource policy contains an invalid service principal.

Example

{ "Version" : "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::123456789012:user/iam-user", "Service": [ "invalidservice.amazonaws.com" ] }, "Action" : "secretsmanager:GetSecretValue", "Resource" : "*" } ]}

Secrets Manager 단일 출력에 여러 오류를 표시합니다.Using the AWS CLI or AWS SDK operations

다음 명령을 사용하여 지정된 보안 암호에 대한 액세스를 허용하거나 거부하는 정책 문서를 연결하거나 수정할 수 있습니다. 정책 문서는 JSON 구조화된 텍스트 형식이어야 합니다. 자세한 내용은 보안Secrets Manager 대한 리소스 기반 정책 사용 (p. 51) 단원을 참조하세요. 정책 문서를 텍스트 파일로 저장한 다음 명령 파라미터에서 파일을 참조하는 것이 좋습니다.

• API/SDK: PutResourcePolicy• C++• Java• PHP• Python• Ruby• Node.js

• CLI: put-resource-policy

Example

다음 예제 CLI 명령은 보안 암호에 현재 연결된 리소스 기반 정책을 연결하거나 대체합니다. SecretsManager 파일에서 정책 문서를 검색합니다.secretpolicy.json를 선택합니다.

$ aws secretsmanager put-resource-policy --secret-id production/MyAwesomeAppSecret --resource-policy file://secretpolicy.json { "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:production/MyAwesomeAppSecret-a1b2c3", "Name": "MyAwesomeAppSecret" }

선택적 매개 변수를 사용하여--block-public-policy로 설정하면 Secrets Manager 이 유형의 정책을 허용하지 않으므로 오류를 반환합니다. Secrets Manager 다음 응답을 반환합니다. “오류 (블록 공용정책예외) 발생: 보안 암호에 광범위한 액세스를 허용하는 리소스 기반 정책은 연결할 수 없습니다.”

74

Page 81: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서보안 암호에서 리소스 기반 정책 검색

보안 암호에서 리소스 기반 정책 검색보안 암호에 연결된 권한 정책 검색

다음 단계에 따라 보안 암호에 연결된 리소스 기반 정책의 텍스트를 검색합니다.

Using the Secrets Manager Console

보안 암호에 대한 리소스 기반 정책을 검색하려면 다음 단계를 사용합니다.

1. 사용 가능한 비밀 목록에서 암호를 선택합니다.2. 아래로 스크롤하여리소스 사용 권한 (선택 사항)를 선택합니다.3. 텍스트를 변경하려면권한 편집를 선택합니다.4. 선택Save을 클릭하여 리소스 기반 정책에 대한 변경 내용을 저장합니다.

Using the AWS CLI or AWS SDK operations

다음 명령을 사용하여 지정된 보안 암호에 현재 연결된 정책 문서를 검색할 수 있습니다.

• API/SDK: GetResourcePolicy• C++• Java• PHP• Python• Ruby• Node.js

• CLI: get-resource-policy

Example

다음 예제 CLI 명령은 보안 암호에 현재 연결된 리소스 기반 권한 정책에 대한 텍스트를 검색합니다.

$ aws secretsmanager get-resource-policy --secret-id production/MyAwesomeAppSecret{ "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:production/MyAwesomeAppSecret-a1b2c3", "Name": "MyAwesomeAppSecret", "ResourcePolicy": "{\"Version\":\"2012-10-17\",\"Statement\":{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"arn:aws:iam::111122223333:root\",\"arn:aws:iam::444455556666:root\"},\"Action\":[\"secretsmanager:GetSecret\",\"secretsmanager:GetSecretValue\"],\"Resource\":\"*\"}}"}

보안 암호에서 리소스 기반 정책 삭제보안 암호에 연결된 리소스 기반 정책 삭제

다음 단계에 따라 지정된 보안 암호에 현재 연결된 리소스 기반 정책을 삭제합니다.

Using the Secrets Manager Console

75

Page 82: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서다중 영역 Secrets Manager 만들기 및 관리

1. 구성된 암호 목록에서 암호를 선택합니다.2. 아래로 스크롤하여리소스 사용 권한 (선택 사항)를 선택합니다.3. 선택권한 편집를 선택합니다.4. 정책 텍스트를 삭제하고Save를 선택합니다.

Secrets Manager 에서 리소스 정책이 성공적으로 삭제되었음을 나타내는 메시지를 반환합니다.

Using the AWS CLI or AWS SDK operations

다음 명령을 사용하여 지정된 보안 암호에 현재 연결된 리소스 기반 정책을 삭제할 수 있습니다.

• API/SDK: DeleteResourcePolicy• C++• Java• PHP• Python• Ruby• Node.js

• CLI: delete-resource-policy

Example

다음 예제 CLI 명령은 보안 암호에 현재 연결된 리소스 기반 권한 정책을 삭제합니다.

$ aws secretsmanager delete-resource-policy --secret-id production/MyAwesomeAppSecret{ "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:production/MyAwesomeAppSecret-a1b2c3", "Name": "production/MyAwesomeAppSecret"}

다중 영역 Secrets Manager 만들기 및 관리Secrets Manager 를 사용하면 여러 AWS 리전에서 비밀을 쉽게 복제하여 재해 복구 시나리오뿐만 아니라 해당 지역에 분산된 애플리케이션을 지원할 수 있습니다. 한 AWS 리전에서 기본 암호를 생성한 다음 애플리케이션에서 암호를 사용하는 모든 AWS 리전으로 암호를 복제할 수 있습니다. Secret Secrets Manager 는 이기능에 대한 복잡한 사용자 지정 솔루션을 관리하는 오버헤드 없이 특정 AWS 리전에서 사용할 기본 암호를안전하게 복제합니다.

Secret Secrets Manager 를 사용하면 기본 암호 및 연결된 메타데이터를 복제본 암호에 복제하여 다중 영역암호의 수명 주기 관리가 간편합니다. 복제된 암호는 모든 지역에서 공통 이름을 가지므로 다중 지역 암호를쉽게 찾고 응용 프로그램을 최소한으로 변경하면서 해당 암호를 사용할 수 있습니다. 보안 Secrets ManagerAWS KMS (AWS KMS) 와 통합하여 AWS KMS 고객 마스터 키 (CMK) 로 보호되는 고유한 데이터 키로 모든보안 암호의 모든 버전을 암호화합니다. 이 통합은 AWS KMS 암호화되지 않은 상태로 방치되지 않는 암호화키로 보안 암호를 보호합니다.

Secret Secrets Manager 는 암호화된 모든 비밀 데이터와 태그, 리소스 정책 및 보안 업데이트 (예: 지정된 지역 간 순환) 와 같은 메타데이터를 복제합니다.

단일 태그 기반 IAM 정책을 설정하여 모든 리전의 비밀에 대한 액세스를 프로비저닝할 수 있습니다.

76

Page 83: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서기본 및 복제본 암호 구성

또한 이 기능을 사용하여 암호를 복제하고 필요한 지역에서 읽으면 다중 지역 응용 프로그램의 지역 액세스및 짧은 대기 시간 요구 사항을 충족할 수 있습니다. 다중 리전 암호를 사용하여 비밀 복제본을 독립 실행형비밀로 변환하고 복제를 위해 독립적으로 설정하여 재해 복구 전략을 지원합니다.

활성화된 모든 AWS 지역에서 암호를 복제할 수 있습니다. 그러나 AWS GovCloud 또는 AWS 중국 리전과같은 특수 AWS 리전에서 Secrets Manager 사용하는 경우 이러한 특수 AWS 리전 내에서만 비밀과 복제본을 구성할 수 있습니다. 활성화된 AWS 리전의 암호를 특수 리전에 복제하거나 특수 리전의 암호를 상업 리전으로 복제할 수 없습니다.

AWS 에서 리전 활성화

AWS 리전은 지리적 영역에 있는 AWS 리소스의 모음입니다. 각 AWS 리전은 격리되어 있으며 다른 리전에서 독립적입니다. 리전에서는 내결함성, 안정성 및 복원성을 지원하고 지연 시간을 줄일 수도 있습니다. 이를통해 사용자는 가용 상태를 유지하며 리전 중단의 영향을 받지 않는 중복 리소스를 생성할 수 있습니다.

리전이 기본적으로 비활성화되어 있는 경우 리소스를 생성하고 관리하려면 먼저 해당 리전을 활성화해야 합니다. 다음 리전은 기본적으로 비활성화되어 있습니다.

• 아프리카(케이프타운)• 아시아 태평양(홍콩)• 유럽(밀라노)• 중동(바레인)

리전을 활성화하면 AWS 는 해당 리전에서 계정을 준비하는 작업 (예: IAM 리소스를 해당 리전으로 배포) 을수행합니다. 이 프로세스는 대부분의 계정에서 몇 분이 걸리지만 몇 시간이 걸릴 수도 있습니다. 이 프로세스가 완료될 때까지는 해당 리전을 사용할 수 없습니다.

리전을 활성화하는 방법에 대한 자세한 내용은 단원을 참조하십시오.AWS 리전 관리를 선택합니다.

Secrets Manager 콘솔, API 또는 CLI를 사용하여 다중 지역 암호를 관리하거나 AWS CloudFormation 템플릿을 사용하여 프로비저닝할 수 있습니다.

주제• 기본 및 복제본 암호 구성 (p. 77)• 비밀 관리자에서 다중 지역 비밀 관리 (p. 80)

기본 및 복제본 암호 구성다중 영역 암호를 구성하려면 먼저 복제 암호를 설정할 리전을 사용하도록 설정해야 합니다. 자세한 내용은단원을 참조하십시오.- AWS 리전 관리

최소 권한

콘솔에서 보안 암호를 생성하려면 다음과 같은 권한이 있어야 합니다.

• 에 의해 부여 된 권한입니다.SecretsManagerReadWriteAWS 관리형 정책.• 에 의해 부여 된 권한입니다.IAMFullAccessAWS 관리형 정책 — 보안 암호에 대한 교체를 활성화

하는 경우에만 필요합니다.• kms:CreateKey— 보안 Secrets Manager AWS KMS 고객 마스터 키 (CMK) 를 생성하도록 하

려는 경우에만 필요합니다.• kms:Encrypt— 계정의 기본 보안 암호 Secrets Manager CMK 대신 사용자 지정 AWS KMS 키

를 사용하여 보안 암호를 암호화하는 경우에만 필요합니다. Secrets Manager에 대해 계정의 기본AWS 관리형 CMK를 사용하기 위해서는 이 권한이 필요하지 않습니다.

• kms:Decrypt— 계정의 기본 보안 암호 Secrets Manager CMK 대신 생성된 AWS KMS 키를사용하여 보안 암호를 암호화하는 경우에만 필요합니다. Secrets Manager에 대해 계정의 기본AWS 관리형 CMK를 사용하기 위해서는 이 권한이 필요하지 않습니다.

77

Page 84: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서기본 및 복제본 암호 구성

• kms:GenerateDataKey— 계정의 기본 보안 암호 Secrets Manager CMK 대신 사용자 지정AWS KMS 키를 사용하여 보안 암호를 암호화하는 경우에만 필요합니다. Secrets Manager에 대해 계정의 기본 AWS 관리형 CMK를 사용하기 위해서는 이 권한이 필요하지 않습니다.

Using the Secrets Manager console

1. Secrets Manager 에 로그인하십시오.https://console.aws.amazon.com/secretsmanager/를 선택합니다.

2. [Store a new secret]을 선택합니다.3. 보안 유형을 선택합니다.4. 보안 유형에 적합한 자격 증명을 입력합니다.5. 선택DefaultEncryptionKey( 사용)암호화 키를 선택합니다.목록을 참조하십시오.6. 데이터베이스 암호를 선택한 경우 데이터베이스 인스턴스를 선택합니다.7. [Next]를 선택합니다.8. 보안 암호 이름을 입력합니다.비밀 이름를 선택합니다.9. (선택 사항) 최대 250자의 설명을 입력합니다.설명필드에 값을 지정합니다.10. (선택 사항) 태그를키및값 -선택 사항를 선택합니다.11. 언더보안 암호 복제선택 사항를 선택하고다른 지역으로 비밀 복제를 선택합니다.12. 에서AWS 리전목록에서 암호를 복제할 지역을 선택합니다. 이 단계에서 여러 리전을 추가할 수 있

습니다.13. 에서암호화 키목록에서 보안 암호를 암호화하는 데 사용된 키를 선택합니다. 기본 암호화 키 또는

지역별 CMK를 선택할 수 있습니다.14. 지역을 더 추가하려면리전 추가을 클릭하고 추가 지역 및 암호화 키를 선택합니다.

목록에서 리전을 선택하려면 먼저 리전을 활성화해야 합니다.15. [Next]를 선택합니다.16. 선택순환 비활성화를 선택합니다.

순환을 구성하지 않고 기본 암호를 복제할 수 있습니다.

암호를 회전하려면순환 사용를 클릭하고 비밀 회전을위한 적절한 정보를 추가하십시오.17. [Next]를 선택합니다.18. 설정을 검토합니다. 활성화했습니다.보안 암호의 목록을 볼 수 있습니다.복제본 리전및암호화 키각

복제본 리전에 할당.19. 선택보안 암호 생성를 선택합니다.

보안 암호를 생성한 후에는 보안 암호를보안 암호페이지로 이동합니다. 콘솔 상단의 배너에 보안 암호를생성했는지 표시됩니다.

복제가 실패하면 Secrets Manager 실패 이유와 함께 빨간색 배너가 표시됩니다. 세부 정보 보기를 선택합니다. 섹션을 참조하십시오.복제 재시도 (p. 79)자세한 내용은 단원을 참조하십시오.

Using the AWS CLI or AWS SDK operations

다음 명령을 사용하면 보안 암호를 생성하고 복제본 보안 암호를 구성할 수 있습니다.

• API/SDK: CreateSecret• • C++

• Java• PHP• Python• Ruby

78

Page 85: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서기본 및 복제본 암호 구성

• Node.js• AWS CLI: create-secret

콘솔 기반 보안 암호 복제본 구성과 동등한 작업을 수행하는 AWS CLI 명령의 예입니다. 이 명령은 사용자가 미국 서부 (오레곤) 에서 보안 암호를 생성하고 이를 미국 동부 (버지니아 북부) 에 복제한다고 가정합니다.

$ aws secretsmanager create-secret --name production/DBWest --add-replica-regions kmskeyid 1234abcd-12ab-34cd-56ef-1234567890ab region us-east-1

복제가 실패할 경우복제 재시도 (p. 79)자세한 내용은 단원을 참조하십시오.

보안 암호 복제보안 암호 복제는 다음과 같은 이유로 실패할 수 있습니다.

• 동일한 이름의 보안 암호가 이미 있습니다.• 암호화 키에 대한 충분한 권한이 없습니다.• 복제된 보안 암호를 생성할 리전을 활성화하지 않았습니다.• 표시된 배너에 설명된 다른 오류입니다.

실패한 복제를 다시 시도하기 전에 실패 원인을 해결하십시오.

복제를 다시 시도하려면 다음 단계를 따르십시오.

1. 복제를 재시도하려는 보안 암호를 선택합니다.2. 에서보안 암호섹션에서 리전을 선택합니다.복제 상태실패했습니다.3. 에서Actions[] 메뉴에서 []복제 재시도를 선택합니다.

복제 암호 영역의 이름 충돌로 인해 복제가 실패하는 경우 복제 영역의 기존 암호를 덮어쓰도록 선택할 수 있습니다.

암호를 덮어쓰려면 확인란을 선택하고 AWS 리전을 입력합니다.

복제본 보안 정보

복제 암호를 사용하여 기본 암호를 생성한 후 Secret Secrets Manager 콘솔에서 다음 복제본 암호 정보를 볼수 있습니다.

• 리전- 복제본 비밀의 영역을 표시합니다.• 리전 상태- 복제 상태를 표시합니다.

• 동기화- 대상 지역에서 암호 복제가 성공했습니다.• 진행 중- 보안 암호 복제가 진행 중입니다.• 실패- 동일한 이름의 보안 암호가 선택한 리전에 있습니다.• 실패- 복제를 완료하기 위해 KMS 키에 사용할 수 있는 권한이 없습니다.• 실패- 네트워크 오류로 인해 보안 암호 복제가 실패했습니다.• 실패- 복제가 발생하는 리전을 활성화하지 않았습니다.

• 보안 암호 ARN- 복제본 Amazon 리소스 번호 (ARN) 를 표시합니다.

79

Page 86: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서비밀 관리자에서 다중 지역 비밀 관리

• 암호화 키- 복제본 보안 암호를 암호화하는 데 사용된 암호화 키의 유형을 표시합니다.• 마지막으로 액세스한 날짜- 복제본 비밀에 마지막으로 액세스한 날짜를 표시합니다.

기존 암호에서 복제 암호 만들기여러 리전의 복제에 대해 기존 보안 암호를 설정할 수 있습니다. 복제 API에 대한 권한을 제한하는 IAM 정책을 설정하여 특정 암호를 지역별로 유지할 수 있습니다.

리전의 복제본을 기존 암호에 추가하려면 먼저 복제본 암호에 대해 리전을 활성화해야 합니다. 자세한 내용은 단원을 참조하십시오.- AWS 리전 관리

보안 Secrets Manager 콘솔 사용

1. Secrets Manager 에 로그인하십시오.https://console.aws.amazon.com/secretsmanager/를 선택합니다.2. 사용 가능한 암호 목록에서 기존 암호를 선택하고보안 암호3. 선택다른 지역으로 비밀 복제를 선택합니다.4. 목록에서 AWS 리전을 선택합니다.5. 보안 암호를 암호화하는 데 사용된 암호화 키를 선택합니다. 동일한 암호화 키 또는 다른 암호화 키를 사

용할 수 있습니다.6. 선택영역 추가 완료를 선택합니다.

비밀 관리자에서 다중 지역 비밀 관리주제

• 복제본 암호 삭제 (p. 80)• 암호화 키 편집 (p. 80)• 복제본 비밀에 추가 지역 추가 (p. 81)• 다중 지역 비밀 회전 (p. 81)• 복제본 암호를 독립 실행형 암호로 승격 (p. 81)• 다중 지역 비밀 검색 (p. 82)

복제본 암호 삭제기본 암호에서 복제본 암호를 제거한 다음 삭제하여 리전에서 각 복제 암호를 삭제할 수 있습니다.

Note

기본 암호에 대한 복제본 암호가 있는 경우 기본 암호를 삭제할 수 없습니다.

복제본 암호를 삭제하려면 다음 단계를 따르십시오.

1. Secrets Manager 에 로그인하십시오.https://console.aws.amazon.com/secretsmanager/를 선택합니다.2. 기본 암호 세부 정보를 표시하려면 복제 암호의 기본 암호를 선택합니다.3. 에서보안 암호섹션에서 복제본 암호를 선택합니다.4. 에서Actions[] 메뉴에서 []복제본 삭제를 선택합니다.

암호화 키 편집복제본 암호와 연결된 암호화 키를 변경하면 이후의 모든 보안 버전에서는 새 키를 사용합니다. 응용 프로그램에kms:Decrypt권한을 새 키에 추가합니다.

80

Page 87: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서비밀 관리자에서 다중 지역 비밀 관리

복제본 암호 암호화 키를 편집하려면 다음 단계를 수행합니다.

1. Secrets Manager 에 로그인하십시오.https://console.aws.amazon.com/secretsmanager/를 선택합니다.2. 복제본 보안 암호 암호화 키를 편집할 기본 보안 암호를 선택합니다.3. 에서복제 구성섹션에서 복제본 암호를 선택합니다.4. 에서Actions[] 메뉴에서 []암호화 키 편집를 선택합니다.5. 기존 암호화 키를 편집하거나 새 키를 추가하도록 선택합니다.6. AWS 리전의 이름을AWS 리전필드에 값을 지정합니다.

AWS 리전 이름을 입력하면 암호화 키 변경을 확인할 수 있습니다.7. 선택암호 재암호화를 선택합니다.

복제본 비밀에 추가 지역 추가

복제본 암호에 더 많은 AWS 리전을 추가하려면 다음 단계를 따르십시오.

1. Secrets Manager 에 로그인하십시오.https://console.aws.amazon.com/secretsmanager/를 선택합니다.2. 기본 암호 세부 정보를 표시하려면 복제 암호의 기본 암호를 선택합니다.3. 에서보안 암호섹션에서 복제본 암호를 선택합니다.4. 선택리전 추가를 선택합니다.5. 에 추가 지역을 입력합니다.AWS 리전필드에 값을 지정합니다.6. 지역을 입력한 후 암호화 키를 변경하거나 기본값으로 둘 수 있습니다.7. 선택할 수도 있습니다.리전 추가를 선택합니다.

다중 지역 비밀 회전순환을 위해 기본 암호를 구성하면 Secret Manager가 기본 영역에서 암호 순환을 실행하고 새 암호 값이 연결된 모든 복제 암호로 전파됩니다. 모든 복제 암호에 대해 개별적으로 관리 순환을 가지고 있지 않습니다.

복제본 암호를 독립 실행형 암호로 승격다음과 같은 시나리오에서 복제본 암호를 독립 실행형 암호로 승격할 수 있습니다.

• 재해 복구 구현 - 기본 보안 암호를 사용할 수 없는 경우 재해 복구 솔루션으로 복제본 보안 암호를 독립형인스턴스로 승격할 수 있습니다.

• 암호 순환 사용 - 순환을 활성화하려는 경우 암호를 독립 실행형 암호로 승격하고 순환을 구성합니다.

복제본 비밀에 대한 다른 변경 사항의 경우 독립 실행형 암호로 승격하고 변경 사항을 추가합니다.

복제본 암호 매개 변수를 변경하려고 하면 암호 업데이트 실패를 나타내는 오류 메시지가 생성됩니다. 매개변수를 변경하기 전에 복제본 암호를 승격해야 합니다.

복제본 암호를 승격하려면독립형 비밀로 승격를 선택합니다.

복제본 암호를 승격하면 복제본 암호와 기본 암호의 관계가 끊어집니다. 기본 비밀번호에 대한 변경 사항은더 이상 독립 실행형 비밀에 복제되지 않습니다.

Note

독립 실행형 암호를 사용하도록 해당 응용 프로그램을 업데이트해야 합니다.

81

Page 88: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서비밀 관리자에서 다중 지역 비밀 관리

다중 지역 비밀 검색다음 검색 조건을 사용하여 다중 지역 암호를 찾을 수 있습니다.

• 복제된 암호: 기본 보안- 매개 변수로 모든 비밀 검색Primary를 해당 리전으로 설정합니다.• 복제된 암호: 암호 복제본- 지역의 모든 복제 비밀을 검색합니다.

여러 지역에서 복제 비밀을 검색할 수 없습니다. 예를 들어, 콘솔에 로그인하면us-west-1영역에서 복제 암호만 검색하여 복제 암호를 검색하면us-west-1를 선택합니다.

• 복제된 암호: 복제되지 않은 암호- 지역에서 기본 또는 복제 레이블이없는 비밀을 검색합니다.

82

Page 89: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서보안 암호를 자동으로 교체하는 데 필요한 권한

AWS Secrets Manager 보안 암호 교체

보안 서비스 또는 데이터베이스에 대한 보안 암호를 자동으로 교체하도록 AWS Secrets Manager를 구성할수 있습니다. Secrets Manager 기본적으로 비밀을 회전하는 방법을 알고 있습니다.지원되는 Amazon RDS데이터베이스 (p. 4)를 선택합니다. 그러나 보안 Secrets Manager 사용하면 또한 다른 데이터베이스 또는 타사 서비스에 대한 보안 암호를 교체하도록 할 수 있습니다. 각 서비스 또는 데이터베이스에는 보안 암호를 구성하는 고유한 방법이 있을 수 있으므로 SecreSecrets Manager 에서는 선택한 데이터베이스 또는 서비스를선택하도록 사용자 지정할 수 있는 Lambda 함수를 사용합니다. 보안 암호 교체를 위한 서비스 관련 세부 정보를 구현하도록 Lambda 함수를 사용자 지정합니다.

사용 하 여 암호에 대 한 회전을 활성화 하는 경우RDS 데이터베이스 자격 증명,Redshift 클러스터에 대한 자격 증명또는DocumentDB 데이터베이스에 대한 자격 증명보안 암호 유형을 선택하더라도 보안 암호 SecretsManager Lambda 교체 함수를 제공하고 보안 암호에서 Amazon 리소스 이름 (ARN) 으로 함수를 자동으로채웁니다. 이 작업을 위해 몇 가지 세부 정보를 제공합니다. 예를 들어, 자격 증명을 교체할 권한이 있는 보안암호와 보안 암호를 교체할 빈도를 지정합니다.

다른 데이터베이스 자격 증명이 있는 보안 암호 또는 일부 다른 유형의 보안 암호에 대한 교체를 활성화할 때Lambda 함수에 대한 코드를 제공해야 합니다. 해당 코드에는 자격 증명을 업데이트하거나 추가하기 위해 보안 서비스와 상호 작용하는 데 필요한 명령이 포함되어 있습니다.

주제• 보안 암호를 자동으로 교체하는 데 필요한 권한 (p. 83)• 보안 암호 교체를 지원하도록 네트워크 구성 (p. 86)• 지원되는 Amazon RDS 데이터베이스에 대한 교체 (p. 86)• Amazon Redshift 용 교체 (p. 94)• Amazon DocumentDB 에 대한 교체 비밀 (p. 101)• 다른 데이터베이스 또는 서비스에 대한 AWS Secrets Manager 보안 암호 교체 (p. 107)• Lambda 회전 함수 이해 및 사용자 지정 (p. 112)• 사용되지 않는 Lambda 회전 함수 삭제 (p. 125)

보안 암호를 자동으로 교체하는 데 필요한 권한AWS Secrets Manager 콘솔을 사용하여 보안 암호의 교체를 구성할 경우지원되는 데이터베이스 (p. 4)를 사용하면 콘솔이 거의 모든 매개 변수를 구성합니다. 하지만 함수를 만들거나, 다른 이유로 인해 수동 작업을수행하도록 선택한 경우에는 해당 교체 작업을 위해 권한을 수동으로 구성해야 할 수도 있습니다.

교체를 구성하는 사용자의 권한과 교체를 트리거하는사용자의 권한보안 Secrets Manager 두 가지 별도의 권한 집합을 필요로 합니다.user비밀 회전을 사용한 작업:

• 순환을 구성하는 데 필요한 사용 권한— 보안 Secrets Manager 신뢰할 수 있는 사용자에게 보안 암호 교체를 구성할 수 있는 권한을 할당합니다. 자세한 내용은 단원을 참조하십시오.사용자에게 전체 SecretsManager 관리자 권한 부여를 선택합니다.

• 암호를 교체하는 데 필요한 사용 권한— IAM 사용자는 권한만 있으면됩니다.secretsmanager:RotateSecret를 사용하여 구성 후 회전을 트리거합니다. 교체 시작 후 Lambda교체 함수는 연결된 IAM 역할과 해당 권한을 받아 사용하여 교체 중 수행되는 작업 (작업 등) AWS KMS 승인합니다.

83

Page 90: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Lambda 교체 함수와 연결된 권한

이 주제의 나머지 부분에서는 Lambda 교체 함수가 보안 암호를 성공적으로 교체하기 위한 권한에 대해 설명합니다.

Lambda 교체 함수와 연결된 권한AWS Secrets Manager Lambda 함수를 사용하여 보안 암호의 자격 증명을 교체하는 코드를 구현합니다.

Secrets Manager 서비스는 Lambda 함수를 호출합니다. 이 서비스는 Lambda 함수에 연결된 IAM 역할을 호출하여 이를 수행합니다. Secrets Manager 에는 다음과 같은 두 가지 작업이 있습니다.

• 역할을 맡을 수 있는 사용자를 지정하는 신뢰 정책. 서비스 보안 주체 의 식별에 따라 보안 SecretsManager 역할을 수임하도록 이 정책을 구성해야 합니다. secretsmanager.amazonaws.com를 선택합니다. 이 정책은 Lambda 콘솔에서 목록에서 비밀 람다를 선택한 다음권한탭을 클릭합니다. 에서리소스 기반 정책섹션에 다음 예와 비슷한 코드가 나타나야 합니다.

{ "Version": "2012-10-17", "Id": "default", "Statement": [ { "Sid": "EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE", "Effect": "Allow", "Principal": { "Service": "secretsmanager.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "<arn of the Lambda function that this trust policy is attached to - must match exactly>" } ]}

보안상의 이유로 보안 Secrets Manager 만든 트러스트 정책에는Resource요소에 포함되며 Lambda 함수의 Amazon 리소스 이름 (ARN) 을 포함합니다. 역할을 맡으면 누구든만역할과 관련된 Lambda 함수.

• 이권한 정책가정자의 역할을 지정하는 역할함수를 호출하여 역할을 수임할 때 보안 Secrets Manager 사용할 수 있는 권한을 지정하도록 이 정책을 구성해야 합니다. 보안 Secrets Manager 에는 구현할 교체 전략에 따라 두 가지 정책을 사용할 수 있습니다.• 단일 사용자 교체: 다음 예제는 보안 암호에 저장된 자격 증명으로 로그인하고 암호를 변경하여 보안 암

호를 교체하는 함수를 설명합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:DescribeSecret", "secretsmanager:GetSecretValue", "secretsmanager:PutSecretValue", "secretsmanager:UpdateSecretVersionStage" ], "Resource": "*", "Condition": { "StringEquals": { "secretsmanager:resource/AllowRotationLambdaArn": "<lambda_arn>" } } }, { "Effect": "Allow",

84

Page 91: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Lambda 교체 함수와 연결된 권한

"Action": [ "secretsmanager:GetRandomPassword" ], "Resource": "*" }, { "Action": [ "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface", "ec2:DescribeNetworkInterfaces" ], "Resource": "*", "Effect": "Allow" } ]}

단일 사용자 예제의 첫 번째 명령문은 보안 Secrets Manager 작업을 실행할 수 있는 권한을 함수에 부여합니다. 그러나Condition요소는 이 Lambda 함수 ARN 이 보안 암호 교체 Lambda 함수로 구성된 보안암호로만 이 권한을 제한합니다.

두 번째 명령문은 조건을 필요로 하지 않는 하나의 보안 Secrets Manager 작업을 허용합니다.

세 번째 명령문은 데이터베이스나 서비스가 모두 VPC PC에서 실행하도록 지정할 때 Lambda 가 필요한 구성을 이 설정할 수 있도록 합니다. 자세한 내용은 단원을 참조하십시오.Amazon VPC 리소스에 액세스하도록 Lambda 함수 구성의AWS Lambda 개발자 안내서를 선택합니다.

• 마스터 사용자 교체: 다음 예제는 별도의마스터 시크릿를 상승된 사용 권한이 포함된 자격 증명으로 교체 전략 중 하나를 사용할 경우 보안 Secrets Manager 에는 이 함수가 필요합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:DescribeSecret", "secretsmanager:GetSecretValue", "secretsmanager:PutSecretValue", "secretsmanager:UpdateSecretVersionStage" ], "Resource": "*", "Condition": { "StringEquals": { "secretsmanager:resource/AllowRotationLambdaArn": "<lambda_arn>" } } }, { "Effect": "Allow", "Action": [ "secretsmanager:GetRandomPassword" ], "Resource": "*" }, { "Action": [ "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface", "ec2:DescribeNetworkInterfaces" ], "Resource": "*", "Effect": "Allow" },

85

Page 92: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서보안 암호 교체를 지원하도록 네트워크 구성

{ "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "<master_arn>" } ]}

앞의 단일 사용자 정책과 동일한 3개의 명령문 외에, 이 정책은 다음 네 번째 명령문을 추가합니다. 네 번째 명령문은 함수가 마스터 보안 암호의 자격 증명을 검색할 수 있게 합니다. 보안 Secrets Manager 마스터 보안 암호의 자격 증명을 사용하여 보안 데이터베이스에 로그인하고 교체된 보안 암호의 자격 증명을 업데이트합니다.

보안 암호 교체를 지원하도록 네트워크 구성보안 암호를 교체하려면 Lambda 교체 함수가 보호된 데이터베이스 또는 서비스 및 AWS Secrets Manager서비스와 모두 통신할 수 있어야 합니다. 교체 함수는 사용자 암호를 새 값으로 업데이트하도록 데이터베이스 또는 다른 서비스로 요청을 보냅니다. 또한 이 함수는 보안 Secrets Manager API 작업을 호출하여 교체프로세스에 포함되는 보안 암호를 검색하고 업데이트합니다. Amazon RDS 인스턴스 또는 다른 보안 암호로보호된 서비스가 Amazon VPC에서 제공되는 Virtual Private Cloud (VPC) 에서 실행되는 경우 다음 주요 단계를 수행하여 필요한 연결을 활성화해야 합니다.

• 함수와 데이터베이스 인스턴스 간 통신을 활성화하도록 Lambda 교체 함수를 구성합니다. 다음 중 하나를사용하는 경우데이터베이스 서비스 (p. 4)그런 다음 함수를 생성하는 AWS CloudFormation 템플릿은 데이터베이스 인스턴스에 대한 퍼블릭 액세스 가능성을 결정합니다.• 보호된 서비스가 VPC 실행되고하지공개적으로 액세스할 수 있는 경우 AWS CloudFormation 템플릿은

Lambda 교체 함수를 동일한 VPC 실행하도록 구성합니다. 이 시나리오에서 교체 함수는 VPC 내의 보호된 서비스와 직접 통신할 수 있습니다.

• 보호된 서비스를 VPC 있는지 여부에 상관없이 보호된 서비스를 공개적으로 액세스 가능한 리소스로 실행하는 경우 AWS CloudFormation 템플릿은 Lambda 교체 함수를 구성합니다.하지VPC 실행할 수 있습니다. 이 시나리오에서 Lambda 교체 함수는 공개적으로 액세스 가능한 연결 지점을 통해 보호된 서비스와 통신합니다.

교체 함수를 수동으로 구성하고 VPC에 추가하려면 함수의 세부 정보 페이지에서 아래로 스크롤하여 네트워킹 섹션으로 이동한 후 목록에서 적절한 VPC를 선택합니다.

• VPC PC에서 실행 중인 Lambda 교체 함수와 보안 Secrets Manager 서비스 엔드포인트 간 통신을 활성화하도록 VPC 구성합니다. 기본적으로 보안 Secrets Manager 엔드포인트는 퍼블릭 인터넷에서 실행됩니다. Lambda 교체 함수와 보호된 데이터베이스 또는 서비스를 VPC PC에서 실행하는 경우 다음 단계 중 하나를 수행해야 합니다.• Lambda 함수를 사용하여 공용 Secrets Manager 끝점에 액세스하도록 설정할 수 있는NAT 게이트웨

이해당 VPC 추가합니다. 그러면 VPC 생성되는 트래픽이 퍼블릭 보안 Secrets Manager 엔드포인트에도달할 수 있습니다. 이렇게 하면 게이트웨이에 대한 IP 주소가 퍼블릭 인터넷에서 공격을 받을 수 있으므로 VPC가 위험 수준으로 노출됩니다.

• 보안 Secrets Manager 서비스 엔드포인트는 VPC 직접 구성할 수 있습니다. 이때 퍼블릭 리전 엔드포인트에 전달되는 모든 요청을 가로챈 후 VPC에서 실행 중인 프라이빗 서비스 엔드포인트로 리디렉션하도록 VPC를 구성합니다. 자세한 내용은 VPC 엔드포인트를 통해 Secrets Manager로 연결을 참조하십시오.

지원되는 Amazon RDS 데이터베이스에 대한 교체Amazon RDS 데이터베이스의 보안 암호를 자동으로 교체하도록 AWS 보안 암호 관리자를 구성할 수 있습니다. Secrets Manager 제공하는 Lambda 기능을 사용.

86

Page 93: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서교체 Amazon RDS

지원되는 Amazon RDS 데이터베이스

보안 Secrets Manager Amazon RDS 옵션을 사용하기 위해 지원되는 데이터베이스란 교체를 활성화할 때보안 암호 관리자가 해당 데이터베이스용으로 설계되어 바로 실행될 수 있는 완전한 Lambda 교체 함수를 제공한다는 것을 의미합니다. 지원되는 데이터베이스의 전체 목록은 the section called “완전하게 구성되고 즉시 사용 가능한 순환 지원 기능이 있는 데이터베이스” (p. 4) 단원을 참조하십시오. 다른 데이터베이스 유형의경우에도 보안 암호를 교체할 수 있습니다. 하지만 다른 데이터베이스에 대한 워크플로를 사용해야 합니다.해당 지침은 다른 데이터베이스 또는 서비스에 대한 AWS Secrets Manager 보안 암호 교체 (p. 107) 단원을 참조하십시오.

와 함께 보안 암호에 대해 교체 활성화RDS 데이터베이스에 대한 자격 증명보안 암호 유형이 보안 SecretsManager 자동으로 Lambda 교체 함수를 생성하고 구성합니다. 그런 다음 보안 Secrets Manager 해당 보안암호에 함수의 Amazon 리소스 이름 (ARN) 을 추가합니다. 보안 Secrets Manager 함수와 연결된 IAM 역할을 생성하고 모든 필수 권한이 있는 역할을 구성합니다. 또는 다른 보안 암호에 동일한 교체 전략을 사용하고있으며 동일한 교체를 새로운 보안 암호에 사용하려는 경우, 기존 함수의 ARN을 지정하여 두 보안 암호에 모두 사용할 수 있습니다.

또한 Amazon VPC에서 제공하는 VPC에서 Amazon RDS DB 인스턴스를 실행하며 VPC에 퍼블릭 인터넷액세스 권한이 없는 경우 보안 Secrets Manager 해당 VPC 내에서 실행하도록 Lambda 함수를 구성합니다.또한 보안 Secrets Manager 필수 API 작업을 호출하려면 Lambda 교체 함수가 보안 Secrets Manager 서비스 엔드포인트에 액세스할 수 있어야 합니다. VPC 있는 하나 이상의 리소스가 인터넷과 통신해야 하는 경우Lambda 교체 함수가 퍼블릭 보안 Secrets Manager 서비스 엔드포인트를 쿼리할 수 있도록 NAT 게이트웨이를 사용하여 VPC를 구성할 수 있습니다. 인터넷과 통신해야 하는 다른 항목이 없는 경우프라이빗 SecretsManager 서비스 끝점을 사용하여 VPC 구성 (p. 86)VPC 내에서 액세스할 수 있습니다.

그렇지 않은 경우 일반적으로 Lambda 함수를 구성하는 데 사용되는 템플릿을 결정하는 몇 가지 세부 정보만제공하면 됩니다.

• 보안 암호를 교체할 권한이 있는 자격 증명으로 보안 암호를 지정합니다.: 경우에 따라 사용자는 암호를 변경할 수 있습니다. 그 외에는 사용자의 권한이 매우 제한되어 있으며 암호를 변경할 수 없습니다. 대신 다른 관리자 또는 "수퍼"유저에 대한 자격 증명을 사용하여 사용자의 자격 증명을 변경해야 합니다.

교체 함수가 보안 데이터베이스에 대해 자격 증명을 교체하는 데 사용할 보안 암호를 지정해야 합니다.• 이 비밀 정보 사용: 현재 보안 암호의 자격 증명에 데이터베이스의 암호를 변경할 권한이 있는 경우 이

옵션을 선택합니다. 이 옵션을 선택하면 보안 Secrets Manager 교체 시마다 단일 사용자의 암호를 변경하는 교체 전략을 있는 Lambda 함수를 구현합니다. 교체 전략에 대한 자세한 정보는 단일 암호로 AWSSecret Manager 보안 암호 교체 (p. 116) 단원을 참조하십시오.

Considerations

Secrets Manager 는 이를 “저가용성” 옵션으로 제공합니다. 교체로 인해 이전 암호가 제거된 시점과 업데이트된 암호를 새 버전의 보안 암호로 사용하여 액세스할 수 있는 시점 사이에 로그인실패가 발생할 수 있습니다. 이 기간은 1초 이하로 매우 짧을 수 있습니다. 이 옵션을 선택하는경우 클라이언트 애플리케이션이 코드에서 적절한 "백오프 및 지터로 재시도" 전략을 구현하는지 확인합니다. 애플리케이션은 로그인이 더 오랜 시간에 걸쳐 여러 번 실패하는 경우에만 오류를 생성해야 합니다.

• 이전에 저장한 적이 있는 보안 AWS Secrets Manager.: 현재 보안 암호의 자격 증명에 제한적인 권한이더 많거나 보안 서비스의 자격 증명을 업데이트하는 데 사용될 수 없는 경우에 이 옵션을 선택합니다. 또는 보안 암호의 고가용성이 필요한 경우에 이 옵션을 선택합니다. 이 옵션을 선택하려면 보안 서비스의자격 증명을 생성하고 업데이트할 권한을 가진 자격 증명과 별도의 "마스터" 보안 암호를 생성합니다. 그런 다음 목록에서 마스터 보안 암호를 선택합니다. 이 옵션을 선택하면 Secrets Manager 가 Lambda 함수를 구현합니다. 이 Lambda 함수에는 보안 암호에 있는 초기 사용자를 복제하는 교체 전략이 있습니다. 그런 다음 교체할 때마다 이 함수는 두 사용자 간에 교대하고 활성 상태인 사용자에 대한 암호를 업데이트합니다. 교체 전략에 대한 자세한 정보는 기존 사용자 2명 간에 교대로 AWS Secrets Manager 보안 암호 교체 (p. 119) 단원을 참조하십시오.

87

Page 94: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Amazon RDS 데이터베이스 암호에 대한 순환 활성화

Considerations

새 버전이 준비되고 테스트되는 동안 이전 버전의 보안 암호가 계속 작동하고 서비스 요청을처리하기 때문에 Secret Secrets Manager 는 이 옵션을 “고가용성” 옵션으로 제공합니다. 보안Secrets Manager 클라이언트가 새 버전으로 전환할 때까지 이전 버전을 사용 중지하지 않습니다. 버전이 변경되는 동안 가동이 중지되지 않습니다.이 옵션을 사용하려면 Lambda 함수가 원래 사용자의 권한을 복제하고 새 사용자에게 적용해야합니다. 이 함수는 매 교체 시마다 두 사용자 간에 교대로 적용됩니다.사용자에게 부여된 권한을 변경해야 하는 경우 두 사용자의 권한을 변경해야 합니다.

• 기능 사용자 지정: 조직의 요구 사항을 충족하도록 보안 Secrets Manager 제공하는 Lambda 교체 함수를 사용자 지정할 수 있습니다. 예를 들어 함수의 testSecret 단계 (p. 115)를 확장하여 애플리케이션 특정 검사로 새 버전을 테스트하고 새 보안 암호가 예상대로 작동하는지 확인할 수 있습니다. 지침은 보안Secrets Manager 에 의해 제공되는 Lambda 교체 함수 사용자 지정 (p. 93)을 참조하십시오.

주제• Amazon RDS 데이터베이스 암호에 대한 순환 활성화 (p. 88)• 보안 Secrets Manager 에 의해 제공되는 Lambda 교체 함수 사용자 지정 (p. 93)

Amazon RDS 데이터베이스 암호에 대한 순환 활성화암호에 대한 자격 증명을 사용하여 암호에 대한 순환을 사용하도록 설정할 수 있습니다.지원되는 AmazonRDS 데이터베이스 (p. 4)사용AWS Secrets Manager (p. 88), AWS CLI 또는 또는 AWS SDK 중 하나를선택합니다.

Warning

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

사전 조건: 교체 활성화를 위한 네트워크 요구 사항

교체를 성공적으로 활성화하려면 네트워크 환경을 올바르게 구성해야 합니다.

• Lambda 함수는 데이터베이스와 통신할 수 있어야 합니다. RDS 데이터베이스 인스턴스를VPC의 경우 Lambda 함수가 동일한 VPC 실행되도록 구성하는 것이 좋습니다. 그러면 교체 함수와 서비스 간에직접 연결할 수 있습니다. 이를 구성하려면 Lambda 함수 세부 정보 페이지에서네트워크섹션을 확장하고VPC를 선택하여 인스턴스와 일치시킵니다. 또한 인스턴스에 연결된 EC2 보안 그룹이 인스턴스와Lambda 간의 통신을 활성화하는지 확인해야 합니다.

• Lambda 함수가 보안 Secrets Manager 서비스 엔드포인트와 통신할 수 있어야 합니다. Lambda 교체 함수가 인터넷에 액세스할 수 있는 경우 VPC PC에서 실행되도록 함수를 구성하지 않았거나 VPC에연결된 NAT 게이트웨이를 사용할 수 있습니다.Secrets Manager 사용할 수있는 공용 끝점 중 하나를 선택합니다. 또는 인터넷에 액세스할 수 없는 VPC 실행되도록 Lambda 함수를 구성하는 경우프라이빗 SecretsManager 서비스 끝점을 사용하여 VPC 구성 (p. 86)를 선택합니다.

지원되는 Amazon RDS 데이터베이스 암호에 대해 교체 활성화 및 구성

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

Using the AWS Management Console

88

Page 95: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Amazon RDS 데이터베이스 암호에 대한 순환 활성화

최소 권한

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

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

• IAMFullAccess— 역할을 만들고 권한 정책을 연결하는 데 필요한 IAM 권한을 제공합니다.

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

2. 교체를 활성화하고자 하는 보안 암호의 이름을 선택합니다.3. [Configure automatic rotation] 섹션에서 [Enable automatic rotation]을 선택합니다. 이를 통해 이 섹션

의 다른 컨트롤이 활성화됩니다.4. 용교체 간격에서 미리 정의된 값 중 하나를 선택하거나사용자 지정를 클릭한 다음 교체 사이에 원하

는 일수를 입력합니다. 규정 준수 요구 사항을 충족하기 위해 보안 암호를 교체하는 경우 이 값을 규정준수 필수 간격보다 최소 1일 작게 설정하는 것이 좋습니다.

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

Note

보안 Secrets Manager 제공하는 Lambda 함수를 사용하여 두 사용자 간에 교대로 설정하는경우 (다음 단계에서 두 번째 “마스터 보안 암호” 옵션을 선택하면 콘솔에서 이 템플릿을 사용함), 교체 기간을 규정에 따른 최소 간격의 절반으로 설정해야 합니다. Secrets Manager는 한 번의 추가 교체 주기 동안 적극적으로 사용되지 않는 경우 이전 자격 증명을 계속 사용할 수 있습니다. 보안 Secrets Manager 두 번째 교체 후 사용자를 새 암호로 업데이트한 후에만 이전 자격 증명을 무효화합니다.새 보안 암호가 활성화된 후 교체 함수를 수정하여 이전 자격 증명을 즉시 무효화하는 경우교체 간격을 전체 규정 준수 필수 최소값으로 확장할 수 있습니다. AWSPREVIOUS 스테이징레이블을 통해 한 번의 추가 주기 동안 이전 자격 증명을 활성 상태로 두면 빠른 복구에 사용될 수 있는 마지막으로 확인된 정상 자격 증명 세트가 제공됩니다. 현재 자격 증명을 중단하는 상황이 발생하는 경우 AWSCURRENT 스테이징 레이블을 AWSPREVIOUS 레이블이 있는 버전으로 옮깁니다. 그러면 고객이 리소스에 다시 액세스할 수 있습니다. 자세한 내용은 기존사용자 2명 간에 교대로 AWS Secrets Manager 보안 암호 교체 (p. 119) 단원을 참조하세요.

5. 다음 옵션 중 하나를 선택합니다.• 새 Lambda 교체 함수를 생성하려고 합니다.

a. 새 Lambda 함수를 생성하여 교체 수행을 선택합니다.b. 용Lambda 함수에 보안 Secrets Manager 에 가 생성하는 Lambda 함수에 지정하려는 이름을 입

력합니다.c. 교체 함수가 사용할 수 있는 자격 증명으로 보안 암호를 지정합니다. 자격 증명에는 보호되는 데

이터베이스에 대한 사용자 이름과 암호를 업데이트할 수 있는 권한이 있어야 합니다.• 이 비밀 정보 사용: 이 보안 암호의 자격 증명에 데이터베이스의 암호를 변경할 권한이 있는 경

우 이 옵션을 선택합니다. 이 옵션을 선택하면 보안 Secrets Manager 단일 사용자를 통해 보안암호를 교체하는 Lambda 함수를 생성하며, 교체할 때마다 암호가 변경됩니다.

Considerations

Secrets Manager 는 이 옵션을 “저가용성” 옵션으로 제공합니다. 교체로 인해 이전 암호가 제거된 시점과 업데이트된 암호를 새 버전의 보안 암호로 사용하여 액세스할 수있는 시점 사이에 로그인 실패가 발생할 수 있습니다. 이 기간은 1초 이하로 매우 짧을 수 있습니다. 이 옵션을 선택하는 경우 클라이언트 애플리케이션이 코드에서 적절

89

Page 96: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Amazon RDS 데이터베이스 암호에 대한 순환 활성화

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

• 이전에 저장한 적이 있는 보안 AWS Secrets Manager.: 현재 보안 암호의 자격 증명에 업데이트할 수 있는 권한이 없거나 보안 암호의 고가용성이 필요한 경우 이 옵션을 선택합니다. 이 옵션을 선택하려면 보안 암호의 자격 증명을 업데이트할 권한을 가진 자격 증명을 포함한 별도의 마스터 보안 암호를 생성해야 합니다. 그런 다음 목록에서 마스터 보안 암호를 선택합니다.

이 옵션을 선택하면 보안 Secrets Manager 교체할 때마다 새 사용자 및 암호를 생성하고 이전사용자를 삭제하여 보안 암호를 교체하는 Lambda 함수를 생성합니다.

Considerations

새 버전이 준비되고 테스트되는 동안 이전 버전의 보안 암호가 계속 작동하고 서비스요청을 처리하기 때문에 Secret Secrets Manager 는 이 옵션을 “고가용성” 옵션으로제공합니다. 보안 Secrets Manager 클라이언트가 새 버전으로 전환할 때까지 이전버전을 사용 중지하지 않습니다. 버전이 변경되는 동안 가동이 중지되지 않습니다.이 옵션을 사용하려면 Lambda 함수가 원래 사용자의 권한을 복제하고 새 사용자에게 적용해야 합니다. 이 함수는 매 교체 시마다 두 사용자 간에 교대로 적용됩니다.사용자에게 부여된 권한을 변경해야 하는 경우 두 사용자의 권한을 변경해야 합니다.

• 다른 보안 암호에 대해 이미 생성한 Lambda 함수를 사용합니다.a. 선택기존 Lambda 함수를 사용하여 교체 수행를 선택합니다.b. 드롭다운 목록에서 Lambda 함수를 선택합니다.c. 교체 함수의 유형을 지정합니다.

• 단일 사용자 회전: 암호 변경 권한을 가진 사용자에 대한 자격 증명을 저장하는 보안 암호의 교체 함수입니다. Secrets Manager 는 이 옵션을 선택하면 생성되는 함수의 유형입니다.이 비밀정보 사용를 선택합니다.

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

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

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

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

Using the AWS CLI or SDK Operations

최소 권한

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

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

• IAMFullAccess— 역할을 만들고 권한 정책을 연결하는 데 필요한 IAM 권한을 제공합니다.

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

• API/SDK: RotateSecret

90

Page 97: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Amazon RDS 데이터베이스 암호에 대한 순환 활성화

• AWS CLI: RotateSecret

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

Important

보안 암호에 사용되는 보안 암호 값의 정확한 형식은 이 보안 암호를 사용하는 교체 함수에 의해 결정됩니다. 각 회전 함수가 비밀 값에 필요한 것에 대한 자세한 내용은예상 SecretString값에서 관련 회전 함수 아래의 항목Lambda 교체 함수를 생성하는 데 사용할 수 있는 AWS 템플릿 (p. 173)를 선택합니다.

AWS Serverless Application Repository 템플릿을 사용하여 Lambda 순환 함수 만들기

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

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

첫 번째 명령은 Secrets Manager가 제공한 템플릿을 기반으로 AWS CloudFormation 변경 세트를 설정합니다.

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

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

--application-id 파라미터를 사용하여 사용할 템플릿을 지정합니다. 값은 템플릿의 ARN입니다.AWS에서 제공하는 템플릿 목록과 해당 ARN은 Lambda 교체 함수를 생성하는 데 사용할 수 있는 AWS템플릿 (p. 173) 단원을 참조하십시오.

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

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

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

$ aws serverlessrepo create-cloud-formation-change-set \ --application-id arn:aws: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": "arn:aws:serverlessrepo:us-west-2:297356227824:applications/SecretsManagerRDSMySQLRotationSingleUser", "ChangeSetId": "arn:aws:cloudformation:us-west-2:123456789012:changeSet/EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE/EXAMPLE2-90ab-cdef-fedc-ba987EXAMPLE", "StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/aws-serverless-repository-MyLambdaCreationStack/EXAMPLE3-90ab-cdef-fedc-ba987EXAMPLE"}

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

91

Page 98: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Amazon RDS 데이터베이스 암호에 대한 순환 활성화

$ aws cloudformation execute-change-set --change-set-name arn:aws: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\":\"arn:aws:lambda:us-west-2:123456789012:function:MyLambdaRotationFunction\"}"}

보안 Secrets Manager VPC 데이터베이스를 실행하는 경우에만 다음 명령이 필요합니다. VPC에서데이터베이스를 실행하지 않으면 이 명령을 건너뜁니다. Amazon RDS 콘솔을 사용하거나aws rdsdescribe-instancesCLI 명령을 확인합니다. 그런 다음 해당 정보를 다음 명령에 추가하고 실행합니다.

$ aws lambda update-function-configuration \ --function-name arn:aws: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

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

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

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

92

Page 99: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서보안 Secrets Manager 에 의해 제공되는 Lambda 교체 함수 사용자 지정

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

지원되는 Amazon RDS 데이터베이스에 대해 자체 Lambda 교체 함수를 생성하려는 경우, 에서 사용하는 이전 단계를 따라야 합니다.SecretsManagerRotationTemplateAWS CloudFormation 템플릿을선택합니다. 보안 Secrets Manager 대부분의 권한 및 구성을 설정합니다.

보안 Secrets Manager 에 의해 제공되는 Lambda 교체함수 사용자 지정조직의 고유한 보안 요구 사항을 충족하기 위해 Lambda 교체 함수를 사용자 지정할 수 있습니다. 해당 요구사항에는 다음 내용이 포함될 수 있습니다.

• 새 보안 암호 버전에 대한 추가적인 테스트를 추가합니다. 새 자격 증명과 연결된 권한이 올바른지 확인하고자 합니다.

• 보안 암호 교체에 대해 보안 Secrets Manager 제공한 Lambda 함수가 아닌 다른 전략을 사용하고자 합니다.

함수를 사용자 지정하려면 먼저 보안 Secrets Manager 생성한 함수를 파악해야 합니다. 보안 SecretsManager 콘솔에서 함수의 ARN 확인할 수 없는 경우 AWS CLI 또는 동등한 AWS SDK 작업을 사용하여 검색할 수 있습니다.

$ aws secretsmanager describe-secret --secret-id MyDatabaseSecret

응답에서 RotationLambdaARN 값을 찾습니다.

Lambda 교체 함수를 편집하려면

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

Using the Secrets Manager console

1. 보안 암호에 대한 Lambda 교체 함수 이름을 확인합니다.a. 보안 암호 목록에서 교체를 수정할 보안 암호의 이름을 선택합니다.b. [Rotation configuration] 섹션에서 교체 ARN을 검사합니다. :function: 다음에 이어지는 ARN의

일부가 함수 이름입니다.2. https://console.aws.amazon.com/lambda/에서 AWS Lambda 콘솔을 엽니다.3. 수정할 Lambda 교체 함수의 이름을 선택합니다.4. 함수에 대한 필수 변경 사항을 만듭니다.

Using the AWS CLI or AWS SDK operations

1. 보안 암호에 대한 Lambda 교체 함수 이름을 확인합니다. 이 작업을 수행하려면 다음 명령을 실행한후 :function: 뒤에 오는 RotationLambdaARN 부분을 확인합니다.

$ describe-secret --secret-id MySecret{ "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret-abc123",

93

Page 100: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Amazon Redshift 보안 암호 교체

"Name": "MySecret", "RotationLambdaARN": "arn:aws:lambda:us-west-2:123456789012:function:name_of_rotation_lambda_function", "LastChangedDate": 1519940941.014, "SecretVersionsToStages": { "5eae5e4a-a683-469e-96e7-af9a8180fba5": [ "AWSCURRENT" ] }}

2. RotationLambdaARN 응답 값을 검사합니다. Lambda 교체 함수의 ARN 과 마지막 부분은 함수의이름을 정의합니다.

3. AWS Management Console에 로그인하여 https://console.aws.amazon.com/lambda/에서 AWSLambda 콘솔을 엽니다.

4. 식별한 Lambda 함수의 이름을 선택하여 함수 세부 정보를 확인합니다.5. [Function code] 섹션에서 해당 함수의 소스 코드를 편집할 수 있습니다. 보안 Secrets Manager 위한

Lambda 함수를 코딩하는 방법은 단원을 참조하십시오.Lambda 교체 함수 개요 (p. 113)를 선택합니다. 에 대 한AWS Lambda 개발자 안내서를 선택합니다. 제공된 Lambda 함수는 Python 2.7 환경을지원합니다.

Lambda 함수 옵션 및 코딩 기술에 대한 자세한 내용은AWS Lambda 개발자 안내서를 선택합니다.

고유한 Secrets Manager 교체 함수를 코딩하는 방법에 대한 자세한 내용은Lambda 회전 함수 이해 및 사용자 지정 (p. 112)를 선택합니다.

Amazon Redshift 용 교체Amazon Redshift 용 보안 암호를 자동으로 교체하도록 AWS Secrets Manager를 구성할 수 있습니다.Secrets Manager 제공하는 Lambda 함수를 사용합니다.

Secrets Manager Amazon Redshift 데이터베이스를 지원합니다

보안 Secrets Manager Amazon Redshift 지원. 즉, 교체를 활성화할 때 보안 Secrets Manager 바로 실행될수 있는 완전한 Lambda 교체 함수를 제공합니다.

당신은에 대한 회전을 활성화 할 때Redshift 자격 증명보안 암호 유형이 보안 Secrets Manager 자동으로Lambda 교체 함수를 생성하고 구성합니다. 그러면 보안 Secrets Manager 함수의 Amazon 리소스 이름(ARN) 을 보안 암호에 설치합니다. 보안 Secrets Manager 함수와 연결된 IAM 역할을 생성하고 모든 필수 권한으로 함수를 구성합니다. 또는 새로운 보안 암호에 사용하려는 것과 동일한 교체 전략을 사용하는 다른 보안 암호가 이미 있는 경우, 기존 함수의 ARN을 지정하여 두 보안 암호에 모두 교체 전략을 사용할 수 있습니다.

또한 Amazon VPC에서 제공하는 VPC에서 Amazon Redshift 클러스터를 실행하며 VPC에 퍼블릭 인터넷 액세스 권한이 없는 경우 보안 Secrets Manager Lambda 함수를 해당 VPC 내에서 실행하도록 구성합니다. 또한 Lambda 교체 함수가 필수 API 작업을 호출하려면 보안 Secrets Manager 서비스 엔드포인트에 액세스할수 있어야 합니다. VPC 있는 하나 이상의 리소스가 인터넷과 통신해야 하는 경우 Lambda 교체 함수가 퍼블릭 보안 Secrets Manager 서비스 엔드포인트를 쿼리할 수 있도록 NAT 게이트웨이를 사용하여 VPC를 구성할 수 있습니다. 인터넷과 통신할 필요가 없는 경우프라이빗 Secrets Manager 서비스 끝점을 사용하여 VPC구성 (p. 86)VPC 내에서 액세스할 수 있습니다.

그렇지 않은 경우 일반적으로 Lambda 함수를 구성하는 데 사용되는 템플릿을 결정하는 몇 가지 세부 정보만제공하면 됩니다.

• 보안 암호를 교체할 권한이 있는 자격 증명으로 보안 암호를 지정합니다.: 일부 경우 사용자가 암호를 변경할 수 있습니다. 그 외에는 사용자의 권한이 매우 제한되어 있으며 암호를 변경할 수 없습니다. 대신 다른관리자 또는 "수퍼"유저에 대한 자격 증명을 사용하여 사용자의 자격 증명을 변경해야 합니다.

94

Page 101: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Amazon Redshift 보안 암호에 교체 활성화

교체 함수가 자격 증명을 교체하는 데 사용할 수 있는 보안 암호를 지정해야 합니다.• 이 비밀 정보 사용: 현재 보안 암호의 자격 증명에 자체 암호를 변경할 권한이 있는 경우 이 옵션을 선

택합니다. 이 옵션을 선택하면 보안 Secrets Manager 교체할 때마다 단일 사용자의 암호를 변경하는교체 전략을 사용하는 Lambda 함수를 구현합니다. 교체 전략에 대한 자세한 정보는 단일 암호로 AWSSecret Manager 보안 암호 교체 (p. 116) 단원을 참조하십시오.

Considerations

Secrets Manager 는 이 옵션을 “저가용성” 옵션으로 제공합니다. 교체로 인해 이전 암호가 제거된 시점과 업데이트된 암호를 새 버전의 보안 암호로 사용하여 액세스할 수 있는 시점 사이에 로그인 실패가 발생할 수 있습니다. 이 기간은 1초 이하로 매우 짧을 수 있습니다. 이 옵션을선택하는 경우 클라이언트 애플리케이션이 코드에서 적절한 "백오프 및 지터로 재시도" 전략을구현하는지 확인합니다. 애플리케이션은 로그인이 더 오랜 시간에 걸쳐 여러 번 실패하는 경우에만 오류를 생성해야 합니다.

• 이전에 AWS Secrets Manager에 저장한 보안 암호를 사용합니다.: 현재 보안 암호의 자격 증명에 제한적인 권한이 더 많거나 보안 서비스의 자격 증명을 업데이트하는 데 사용될 수 없는 경우에 이 옵션을선택합니다. 또는 보안 암호의 고가용성이 필요한 경우에 이 옵션을 선택합니다. 이 옵션을 선택하려면 보안 서비스의 자격 증명을 생성하고 업데이트할 권한을 가진 자격 증명과 별도의 마스터 보안 암호를 생성합니다. 그런 다음 목록에서 마스터 보안 암호를 선택합니다. 이 옵션을 선택하면 보안 SecretsManager Lambda 함수를 구현합니다. 이 Lambda 함수에는 보안 암호에 있는 초기 사용자를 복제하는교체 전략이 있습니다. 그런 다음 교체할 때마다 두 사용자 간에 교대하고 활성 상태인 사용자에 대한암호를 업데이트합니다. 교체 전략에 대한 자세한 정보는 기존 사용자 2명 간에 교대로 AWS SecretsManager 보안 암호 교체 (p. 119) 단원을 참조하십시오.

Considerations

보안 Secrets Manager 새 버전이 준비되고 테스트되는 동안 이전 버전의 보안 암호가 계속작동하고 서비스 요청을 처리하기 때문에, 이 옵션을 “고가용성” 옵션으로 제공합니다. 보안Secrets Manager 클라이언트가 새 버전으로 전환할 때까지 이전 버전을 사용 중지하지 않습니다. 버전이 변경되는 동안 가동이 중지되지 않습니다.이 옵션을 사용하려면 Lambda 함수가 원래 사용자의 권한을 복제하고 새 사용자에게 적용해야합니다. 이 함수는 매 교체 시마다 두 사용자 간에 교대로 적용됩니다.사용자에게 부여된 권한을 변경해야 하는 경우 두 사용자의 권한을 변경해야 합니다.

• 함수를 사용자 지정할 수 있습니다.: 보안 Secrets Manager 제공하는 Lambda 교체 함수를 사용자 지정할수 있습니다. 예를 들어 함수의 testSecret 단계 (p. 115)를 확장하여 애플리케이션 특정 검사로 새 버전을 테스트하고 새 보안 암호가 예상대로 작동하는지 확인할 수 있습니다. 지침은 보안 Secrets Manager 에의해 제공되는 Lambda 교체 함수 사용자 지정 (p. 93)을 참조하십시오.

주제• Amazon Redshift 보안 암호에 교체 활성화 (p. 95)

Amazon Redshift 보안 암호에 교체 활성화Amazon Redshift 서비스에 대한 자격 증명을 사용하여 비밀에 대한 순환을 활성화할 수 있습니다.AWSSecrets Manager 콘솔 (p. 96), AWS CLI, 또는 AWS SDK 중 하나를 선택합니다.

Warning

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

사전 조건: 교체 활성화를 위한 네트워크 요구 사항

교체를 성공적으로 활성화하려면 네트워크 환경을 올바르게 구성해야 합니다.

95

Page 102: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Amazon Redshift 보안 암호에 교체 활성화

• Lambda 함수가 Amazon Redshift 서비스와 통신할 수 있어야 합니다. Amazon Redshift 클러스터를VPC의 경우 Lambda 함수가 동일한 VPC 실행하도록 구성하는 것이 좋습니다. 그러면 교체 함수와 서비스 간에 직접 연결할 수 있습니다. 이를 구성하려면 Lambda 함수의 세부 정보 페이지에서네트워크섹션을선택하고VPC드롭다운 목록에서 인스턴스를 실행하는 인스턴스와 일치하도록 선택합니다. 또한 클러스터에 연결된 EC2 보안 그룹이 클러스터와 Lambda 간의 통신을 활성화하는지 확인해야 합니다.

• Lambda 함수가 보안 Secrets Manager 서비스 엔드포인트와 통신할 수 있어야 합니다. Lambda 교체 함수가 인터넷에 액세스할 수 있는 경우 VPC PC에서 실행되도록 함수를 구성하지 않았거나 VPC에NAT 게이트웨이 연결의 경우 을 사용할 수 있습니다.Secrets Manager 사용할 수있는 공용 끝점 중 하나를 선택합니다. 또는 Lambda 함수가 인터넷에 액세스할 수 없는 VPC 실행하도록 구성된 경우프라이빗 SecretsManager 서비스 끝점을 사용하여 VPC 구성 (p. 86)를 선택합니다.

지원되는 Amazon Redshift 클러스터 보안 암호에 대한 교체 활성화 및 구성

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

Using the AWS Management Console

최소 권한

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

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

• IAMFullAccess— 역할을 만들고 권한 정책을 연결하는 데 필요한 IAM 권한을 제공합니다.

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

2. 교체를 활성화할 보안 암호의 이름을 선택합니다.3. [Configure automatic rotation] 섹션에서 [Enable automatic rotation]을 선택합니다. 이를 통해 이 섹션

의 다른 컨트롤이 활성화됩니다.4. 용교체 간격 선택에서 미리 정의된 값 중 하나를 선택하거나사용자 지정을 클릭한 다음 교체 사이에

원하는 일수를 입력합니다. 규정 준수 요구 사항을 충족하기 위해 보안 암호를 교체하는 경우 이 값을규정 준수 필수 간격보다 최소 1일 작게 설정하는 것이 좋습니다.

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

Note

보안 Secrets Manager 제공하는 Lambda 함수를 사용하여 두 사용자 간에 교대로 설정하는경우 (다음 단계에서 두 번째 “마스터 보안 암호” 옵션을 선택하면 콘솔에서 이 템플릿을 사용함), 교체 기간을 규정에 따른 최소 간격의 절반으로 설정해야 합니다. Secrets Manager는 이전 자격 증명을 계속 사용할 수 있는 경우 는 이전 자격 증명을 유지하며 두 번째 교체후 사용자가 새 암호로 업데이트한 후에만 이전 자격 증명을 무효화합니다.새 보안 암호가 활성화된 후 교체 함수를 수정하여 이전 자격 증명을 즉시 무효화하는 경우교체 간격을 전체 규정 준수 필수 최소값으로 확장할 수 있습니다. AWSPREVIOUS 스테이징레이블을 통해 한 번의 추가 주기 동안 이전 자격 증명을 활성 상태로 두면 빠른 복구에 사용될 수 있는 "마지막으로 확인된 정상" 자격 증명 세트가 제공됩니다. 현재 자격 증명을 중단하는 상황이 발생하는 경우 AWSCURRENT 스테이징 레이블을 AWSPREVIOUS 레이블이 있는버전으로 옮깁니다. 그러면 고객이 리소스에 다시 액세스할 수 있습니다. 자세한 내용은 기존 사용자 2명 간에 교대로 AWS Secrets Manager 보안 암호 교체 (p. 119) 단원을 참조하세요.

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

96

Page 103: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Amazon Redshift 보안 암호에 교체 활성화

• 새 Lambda 교체 함수를 생성하려고 합니다.a. 새 Lambda 함수를 생성하여 교체 수행을 선택합니다.b. 용Lambda 함수 이름에 보안 Secrets Manager 생성하는 Lambda 함수에 할당할 이름을 입력합

니다.c. 교체 함수가 사용할 수 있는 자격 증명으로 보안 암호를 지정합니다. 보호되는 서비스에 대한 사

용자 이름과 암호를 업데이트할 수 있는 권한이 있어야 합니다.• 이 비밀 정보 사용: 이 보안 암호의 자격 증명에 서비스의 암호를 변경할 권한이 있는 경우 이

옵션을 선택합니다. 이 옵션을 선택하면 보안 Secrets Manager 단일 사용자를 통해 보안 암호를 교체하는 Lambda 함수를 생성하며, 교체할 때마다 암호를 변경합니다.

Note

Secrets Manager 는 이 옵션을 “저가용성” 옵션으로 제공합니다. 교체로 인해 이전 암호가 제거된 시점과 업데이트된 암호를 새 버전의 보안 암호로 사용하여 액세스할 수있는 시점 사이에 로그인 실패가 발생할 수 있습니다. 이 기간은 1초 이하로 매우 짧을 수 있습니다.이 옵션을 선택하는 경우 클라이언트 애플리케이션이 코드에서 적절한 "백오프 및 지터로 재시도" 전략을 구현하는지 확인합니다. 애플리케이션은 로그인이 더 오랜 시간에 걸쳐 여러 번 실패하는 경우에만 오류를 생성해야 합니다.

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

Note

보안 Secrets Manager 새 버전이 준비되고 테스트되는 동안 이전 버전의 보안 암호가 계속 작동하고 서비스 요청을 처리하기 때문에, 이 옵션을 “고가용성” 옵션으로 제공합니다. 보안 Secrets Manager 클라이언트가 새 버전으로 전환할 때까지 이전 버전을 사용 중지하지 않습니다. 버전이 변경되는 동안 가동이 중지되지 않습니다.이 옵션을 사용하려면 Lambda 함수가 원래 사용자의 권한을 복제하고 새 사용자에게 적용해야 합니다. 이 함수는 매 교체 시마다 두 사용자 간에 교대로 적용됩니다.사용자에게 부여된 권한을 변경해야 하는 경우 두 사용자의 권한을 변경해야 합니다.

• 다른 보안 암호에 대해 이미 생성한 Lambda 함수를 사용하려는 경우a. 선택기존 Lambda 함수를 사용하여 교체 수행를 선택합니다.b. 드롭다운 목록에서 Lambda 함수를 선택합니다.c. 선택한 교체 함수의 유형을 지정합니다.

• 단일 사용자 회전: 보안 암호의 교체 함수입니다. 암호를 변경할 수 있는 권한이 있는 사용자에대한 자격 증명을 저장합니다. Secrets Manager 옵션을 선택하면 생성되는 함수의 유형입니다.이 비밀 정보 사용함수를 생성할 때.

• 다중 사용자 회전: 보안 암호의 교체 함수가 암호를 변경합니다. 이 함수에는 이 보안 암호 사용자의 자격 증명을 변경할 권한이 있는 사용자의 자격 증명을 저장하는 별도의 마스터 보안암호가 필요합니다.

• Secrets Manager 옵션을 선택하면 생성되는 함수의 유형입니다.이전에 AWS SecretsManager에 저장한 보안 암호를 사용합니다.를 선택합니다.

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

6. [Save]를 선택하여 변경 사항을 저장하고 보안 암호의 최초 교체를 트리거합니다.7. 보안 암호를 별도의 마스터 보안 암호로 교체하기로 선택한 경우 마스터 보안 암호에 액세스할 수 있

는 권한을 수동으로 부여해야 합니다. 다음 지침들을 따릅니다.97

Page 104: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Amazon Redshift 보안 암호에 교체 활성화

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

보안 암호에 <secret name> 가 (가) 저장되었고 보안 교체가 활성화되었습니다. 순환 구성을 완료하려면역할보안 암호의 값에 액세스 <Amazon Resource Name (ARN) of your mastersecret>.

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

b. Amazon 리소스 이름(ARN)을 메시지에서 클립보드로 복사합니다.c. 메시지에서 "role"이라는 단어의 링크를 선택합니다. 그러면 보안 Secrets Manager 생성한

Lambda 교체 함수에 연결된 역할에 대한 역할 세부 정보 페이지에 IAM 콘솔이 열립니다.d. [Permissions] 탭에서 [Add inline policy]를 선택한 후 다음 값을 설정합니다.

• [Service]에서 [Secrets Manager]를 선택합니다.• [Actions]에서 [GetSecretValue]를 선택합니다.• [Resources]에서 [secret] 리소스 유형 항목 옆의 [Add ARN]을 선택합니다.• [Add ARN(s)] 대화 상자에 이전에 복사한 마스터 ARN을 붙여 넣습니다.

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

Note

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

{ "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "<ARN of the master secret>" }

f. AWS Secrets Manager 콘솔로 돌아갑니다.

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

Using the AWS CLI or SDK Operations

최소 권한

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

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

• IAMFullAccess— 역할을 생성하고 권한 정책을 연결하는 데 필요한 IAM 권한을 제공합니다.

다음 보안 Secrets Manager 명령을 사용하여 Amazon Redshift 의 기존 보안 암호에 대한 교체를 구성할수 있습니다.

• API/SDK: RotateSecret• AWS CLI: RotateSecret

98

Page 105: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Amazon Redshift 보안 암호에 교체 활성화

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

Important

보안 암호에 사용하려는 교체 함수가 보안 암호에 사용해야 하는 보안 암호 값의 정확한 형식을 결정합니다. 각 교체 함수가 보안 암호 값에 필요한 사항에 대한 자세한 내용은예상되는SecretString 값에서 관련 회전 함수 아래의 항목Lambda 교체 함수를 생성하는 데 사용할 수 있는 AWS 템플릿 (p. 173)를 선택합니다.

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

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

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

첫 번째 명령은 Secrets Manager가 제공한 템플릿을 기반으로 AWS CloudFormation 변경 세트를 설정합니다.

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

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

--application-id 파라미터를 사용하여 사용할 템플릿을 지정합니다. 값은 템플릿의 ARN입니다.AWS에서 제공하는 템플릿 목록과 해당 ARN은 Lambda 교체 함수를 생성하는 데 사용할 수 있는 AWS템플릿 (p. 173) 단원을 참조하십시오.

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

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

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

$ aws serverlessrepo create-cloud-formation-change-set \ --application-id arn:aws: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": "arn:aws:serverlessrepo:us-west-2:297356227824:applications/SecretsManagerRDSMySQLRotationSingleUser", "ChangeSetId": "arn:aws:cloudformation:us-west-2:123456789012:changeSet/EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE/EXAMPLE2-90ab-cdef-fedc-ba987EXAMPLE", "StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/aws-serverless-repository-MyLambdaCreationStack/EXAMPLE3-90ab-cdef-fedc-ba987EXAMPLE"}

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

99

Page 106: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Amazon Redshift 보안 암호에 교체 활성화

$ aws cloudformation execute-change-set --change-set-name arn:aws: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\":\"arn:aws:lambda:us-west-2:123456789012:function:MyLambdaRotationFunction\"}"}

보안 Secrets Manager VPC 서비스를 실행하는 경우 다음 명령이 필요합니다. 그렇지 않은 경우 이 명령을 건너뜁니다. Amazon Redshift RDS 콘솔을 사용하거나aws rds describe-instancesCLI 명령을 사용합니다. 그런 다음 해당 정보를 다음 명령에 사용하고 실행합니다.

$ aws lambda update-function-configuration \ --function-name arn:aws: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>

서비스 인스턴스가 있는 VPC 와 Lambda 교체 함수가 인터넷 액세스 권한이 없는 경우 보안 SecretsManager 프라이빗 서비스 엔드포인트를 사용하여 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

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

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

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

$ aws secretsmanager rotate-secret \

100

Page 107: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Amazon DocumentDB 보안 암호 교체

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

Amazon Redshift 용 Lambda 함수를 직접 생성하려는 경우, 이전 단계에 따라SecretsManagerRotationTemplateAWS CloudFormation 템플릿입니다. 이 템플릿을 사용하면보안 Secrets Manager 대부분의 권한 및 구성을 설정합니다.

Amazon DocumentDB 에 대한 교체 비밀Amazon DocumentDB 의 보안 암호를 자동으로 교체하도록 AWS Secrets Manager를 구성할 수 있습니다.Secrets Manager 제공하는 Lambda 함수를 사용합니다.

지원되는 서비스로서의 Amazon DocumentDB

Secrets Manager 아마존 DocumentDB를 지원하고 아마존 DocumentDB 용으로 설계된 완전한 실행 가능하고 완벽한 용 Lambda 교체 함수를 제공합니다.

보안 암호에 대해 교체 활성화 시DocumentDB 에 대한 자격 증명보안 암호 유형이 보안 Secrets Manager 자동으로 Lambda 교체 함수를 생성하고 구성합니다. 그러면 Secrets Manager가 보안 암호에 함수의 Amazon리소스 이름 (ARN) 을 지정합니다. 보안 Secrets Manager 함수와 연결된 IAM 역할을 생성하고 필요한 모든권한을 가진 역할을 구성합니다. 또는 새로운 보안 암호에 사용하려는 것과 동일한 교체 전략을 사용하는 다른 보안 암호가 이미 있는 경우, 기존 함수의 ARN을 지정하여 두 보안 암호에 모두 사용할 수 있습니다.

또한 Amazon VPC에서 제공하는 VPC에서 Amazon DocumentDB 인스턴스를 실행하며 VPC에 퍼블릭 인터넷 액세스 권한이 없는 경우 보안 Secrets Manager 해당 VPC 내에서 실행되도록 구성합니다. Lambda 교체함수가 필수 API 작업을 호출하려면 보안 Secrets Manager 서비스 엔드포인트에 액세스할 수 있어야 합니다. VPC 있는 하나 이상의 리소스가 인터넷과 통신해야 하는 경우 Lambda 교체 함수가 퍼블릭 보안 SecretsManager 서비스 엔드포인트를 쿼리할 수 있도록 NAT 게이트웨이를 사용하여 VPC를 구성할 수 있습니다.인터넷과 통신해야 하는 다른 리소스가 없는 경우프라이빗 Secrets Manager 서비스 끝점을 사용하여 VPC구성 (p. 86)VPC 내에서 액세스할 수 있습니다.

그렇지 않은 경우 일반적으로 Lambda 함수를 구성하는 데 사용되는 템플릿을 결정하는 몇 가지 세부 정보만제공하면 됩니다.

• Specify the secret with credentials and permissions to rotate the secret(보안 암호를 교체할 권한 및 자격증명을 가진 보안 암호 지정): 수퍼유저만 암호를 변경할 수 있습니다. 다른 사용자는 권한이 제한되어 있으며 암호를 변경할 수 없습니다. 다른 관리자 또는 수퍼유저에 대한 자격 증명을 사용하여 사용자의 자격증명을 변경해야 합니다.

교체 함수가 보안 데이터베이스에 대해 자격 증명을 교체하는 데 사용할 수 있는 보안 암호를 지정해야 합니다.• 이 비밀 정보 사용: 현재 보안 암호에수퍼 유저자격 증명. 이 옵션을 선택하면 보안 Secrets Manager 교

체할 때마다 단일 사용자의 암호를 변경하는 교체 전략을 사용하는 Lambda 함수를 구현합니다. 교체 전략에 대한 자세한 정보는 단일 암호로 AWS Secret Manager 보안 암호 교체 (p. 116) 단원을 참조하십시오.

Considerations

Secrets Manager 는 이 옵션을 “저가용성” 옵션으로 제공합니다. 교체로 인해 이전 암호가 제거된 시점과 업데이트된 암호를 새 버전의 보안 암호로 사용하여 액세스할 수 있는 시점 사이에로그인 실패가 발생할 수 있습니다. 이 기간은 1초 이하로 매우 짧을 수 있습니다.이 옵션을 선택하는 경우 클라이언트 애플리케이션이 코드에서 적절한 "백오프 및 지터로 재시도" 전략을 구현하는지 확인합니다. 애플리케이션은 로그인이 더 오랜 시간에 걸쳐 여러 번 실패하는 경우에만 오류를 생성해야 합니다.

101

Page 108: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Amazon DocumentDB 암호에 대한 순환 활성화

• 이전에 AWS Secrets Manager에 저장한 비밀 사용: 보안 암호에 고가용성이 필요한 경우 이 옵션을 선택합니다. 이 옵션을 선택하려면 보안 서비스의 자격 증명을 생성하고 업데이트할 권한을 가진 자격 증명을 포함한 별도의 "마스터" 보안 암호를 생성합니다. 그런 다음 목록에서 마스터 보안 암호를 선택합니다. 이 옵션을 선택하면 보안 Secrets Manager Lambda 함수를 구현합니다. 이 Lambda 함수에는 보안암호에 있는 초기 사용자를 복제하는 교체 전략이 있습니다. 그런 다음 보안 Secrets Manager 교체할 때마다 두 사용자 간에 교대로 이동하고 활성 상태인 사용자에 대한 암호를 업데이트합니다. 교체 전략에대한 자세한 정보는 기존 사용자 2명 간에 교대로 AWS Secrets Manager 보안 암호 교체 (p. 119) 단원을 참조하십시오.

Note

보안 Secrets Manager 새 버전이 준비되고 테스트되는 동안 이전 버전의 보안 암호가 계속 작동하고 서비스 요청을 처리하기 때문에, 이 옵션을 “고가용성” 옵션으로 제공합니다. SecretsManager 다음 순환 때까지 이전 버전을 더 이상 사용하지 않습니다. 버전이 변경되는 동안 가동이 중지되지 않습니다.이 옵션을 사용하려면 Lambda 함수가 원래 사용자의 권한을 복제하고 새 사용자에게 적용해야합니다. 이 함수는 매 교체 시마다 두 사용자 간에 교대로 적용됩니다.사용자에게 부여된 권한을 변경해야 하는 경우 두 사용자의 권한을 변경해야 합니다.

• 함수를 사용자 지정할 수 있습니다.: 보안 Secrets Manager 제공하는 Lambda 교체 함수를 조직의 보안 요구 사항을 충족하도록 맞춤 지정할 수 있습니다. 예를 들어 함수의 testSecret 단계 (p. 115)를 확장하여애플리케이션 특정 검사로 새 버전을 테스트하고 새 보안 암호가 예상대로 작동하는지 확인할 수 있습니다. 지침은 보안 Secrets Manager 에 의해 제공되는 Lambda 교체 함수 사용자 지정 (p. 93)을 참조하십시오.

주제• Amazon DocumentDB 암호에 대한 순환 활성화 (p. 102)

Amazon DocumentDB 암호에 대한 순환 활성화Amazon DocumentDB 데이터베이스에 대한 자격 증명을 사용하여 비밀에 대한 순환을 활성화할 수 있습니다.AWS Secrets Manager 콘솔 (p. 103), AWS CLI 또는 AWS SDK 중 하나를 선택합니다.

Warning

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

사전 조건: 교체 활성화를 위한 네트워크 요구 사항

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

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

• Lambda 함수가 보안 Secrets Manager 서비스 엔드포인트와 통신할 수 있어야 합니다. Lambda 교체 함수가 인터넷에 액세스할 수 있는 경우 VPC PC에서 실행되도록 함수를 구성하지 않았거나 VPC에NAT 게이트웨이 연결의 경우 을 사용할 수 있습니다.Secrets Manager 사용할 수있는 공용 끝점 중 하나를 선택합니다. 또는 인터넷에 액세스할 수 없는 VPC 실행되도록 Lambda 함수를 구성하는 경우프라이빗 SecretsManager 서비스 끝점을 사용하여 VPC 구성 (p. 86)를 선택합니다.

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

102

Page 109: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Amazon DocumentDB 암호에 대한 순환 활성화

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

Using the AWS Management Console

최소 권한

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

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

• IAMFullAccess— 역할을 만들고 권한 정책을 연결하는 데 필요한 IAM 권한을 제공합니다.

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

2. 교체를 활성화할 보안 암호의 이름을 선택합니다.3. [Configure automatic rotation] 섹션에서 [Enable automatic rotation]을 선택합니다. 이를 통해 이 섹션

의 다른 컨트롤이 활성화됩니다.4. 용교체 간격 선택에서 미리 정의된 값 중 하나를 선택하거나사용자 지정을 클릭한 다음 교체 사이에

원하는 일수를 입력합니다. 규정 준수 요구 사항을 충족하기 위해 보안 암호를 교체하는 경우 이 값을규정 준수 필수 간격보다 최소 1일 작게 설정하는 것이 좋습니다.

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

Note

Secrets Manager 제공하는 Lambda 함수를 사용하여 두 사용자를 번갈아 사용하는 경우 두번째마스터 시크릿옵션을 선택한 경우 교체 기간을 규정에 따른 최소 간격의 절반으로 설정해야 합니다. 보안 Secrets Manager 한 번의 추가 교체 주기 동안 이전 자격 증명을 유지합니다. 그런 다음 보안 Secrets Manager 두 번째 교체 후 사용자를 새 암호로 업데이트한 후 이전 자격 증명을 무효화합니다.새 보안 암호가 활성화된 후 교체 함수를 수정하여 이전 자격 증명을 즉시 무효화하는 경우교체 간격을 전체 규정 준수 필수 최소값으로 확장할 수 있습니다. AWSPREVIOUS 스테이징레이블을 통해 한 번의 추가 주기 동안 이전 자격 증명을 활성 상태로 두면 빠른 복구에 사용될 수 있는 마지막으로 확인된 정상 자격 증명 세트가 제공됩니다. 현재 자격 증명을 중단하는 상황이 발생하는 경우 AWSCURRENT 스테이징 레이블을 AWSPREVIOUS 레이블이 있는 버전으로 옮깁니다. 그런 다음 리소스에 다시 액세스할 수 있습니다. 자세한 내용은 기존 사용자 2명 간에 교대로 AWS Secrets Manager 보안 암호 교체 (p. 119) 단원을 참조하세요.

5. 다음 옵션 중 하나를 선택합니다.• 새 Lambda 교체 함수를 생성하려고 합니다.

a. 새 Lambda 함수를 생성하여 교체 수행을 선택합니다.b. 용Lambda 함수 이름에 보안 Secrets Manager 생성하는 Lambda 함수에 지정하려는 이름을 입

력합니다.c. 교체 함수가 사용할 수 있는 자격 증명으로 보안 암호를 지정합니다. 보호되는 데이터베이스에

대한 사용자 이름과 암호를 업데이트할 수 있는 권한이 사용자에게 있어야 합니다.• 이 비밀 정보 사용: 이 보안 암호의 자격 증명에 데이터베이스의 암호를 변경할 권한이 있는 경

우 이 옵션을 선택합니다. 이 옵션을 선택하면 보안 Secrets Manager 단일 사용자를 통해 보안암호를 교체하는 Lambda 함수를 생성하며, 교체할 때마다 암호가 변경됩니다.

Note

보안 Secrets Manager 이 옵션을 저가용성 옵션으로 제공합니다. 교체로 인해 이전암호가 제거된 시점과 업데이트된 암호를 새 버전의 보안 암호로 사용하여 액세스할

103

Page 110: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Amazon DocumentDB 암호에 대한 순환 활성화

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

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

Note

보안 Secrets Manager 이 옵션을 고가용성 옵션으로 제공합니다. 새 버전이 준비되고 테스트되는 동안 이전 버전의 보안 암호가 계속 작동하고 서비스 요청을 처리하기때문입니다. Secrets Manager 다음 순환 때까지 이전 버전을 더 이상 사용하지 않습니다. 버전이 변경되는 동안 가동이 중지되지 않습니다.이 옵션을 사용하려면 Lambda 함수가 원래 사용자의 권한을 복제하고 새 사용자에게 적용해야 합니다. 이 함수는 매 교체 시마다 두 사용자 간에 교대로 적용됩니다.사용자에게 부여된 권한을 변경해야 하는 경우 두 사용자의 권한을 변경해야 합니다.

• 다른 보안 암호에 대해 이미 생성한 Lambda 함수를 사용하려는 경우a. 선택기존 Lambda 함수를 사용하여 교체 수행를 선택합니다.b. 드롭다운 목록에서 Lambda 함수를 선택합니다.c. 교체 함수의 유형을 지정합니다.

• 단일 사용자 회전: 암호 변경 권한을 가진 사용자에 대한 자격 증명을 저장하는 보안 암호의 교체 함수입니다. 함수를 생성할 때 이 비밀 사용 옵션을 선택하면 생성되는 함수의 유형입니다.

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

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

6. [Save]를 선택하여 변경 사항을 저장하고 보안 암호의 최초 교체를 트리거합니다.7. 보안 암호를 별도의 마스터 보안 암호로 교체하기로 선택한 경우 Lambda 교체 함수에 마스터 보안

암호에 액세스할 수 있는 권한을 수동으로 부여해야 합니다. 다음 지침들을 따릅니다.a. 교체 구성이 완료되면 페이지 상단에 다음 메시지가 표시될 수 있습니다.

보안 암호 사용 <secret name> 이 (가) 저장되었고 보안 암호 교체가 활성화되었습니다. 순환 구성을 완료하려면역할보안 암호의 값에 액세스할 수 있는 권한 제공 <Amazon Resource Name(ARN) of your master secret>.

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

b. Amazon 리소스 이름(ARN)을 메시지에서 클립보드로 복사합니다.c. 메시지에서 "role"이라는 단어의 링크를 선택합니다. 그러면 가 생성한 Lambda 교체 함수 보안

Secrets Manager 연결된 역할에 대한 역할 세부 정보 페이지가 열립니다.d. [Permissions] 탭에서 [Add inline policy]를 선택한 후 다음 값을 설정합니다.

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

Page 111: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Amazon DocumentDB 암호에 대한 순환 활성화

• [Resources]에서 [secret] 리소스 유형 항목 옆의 [Add ARN]을 선택합니다.• Add ARN(s)(ARN 추가) 대화 상자에 이전에 복사한 마스터 보안 암호의 ARN을 붙여 넣습니다.

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

Note

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

{ "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "<ARN of the master secret>" }

f. AWS Secrets Manager 콘솔로 돌아갑니다.

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

Using the AWS CLI or SDK Operations

최소 권한

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

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

• IAMFullAccess— 역할을 만들고 권한 정책을 연결하는 데 필요한 IAM 권한을 제공합니다.

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

• API/SDK: RotateSecret• AWS CLI: RotateSecret

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

Important

보안 암호에 사용해야 하는 보안 암호 값의 정확한 형식은 교체 함수에 의해 결정됩니다. 비밀 값에 대한 각 회전 함수 요구 사항에 대한 자세한 내용은예상되는 SecretString 값에서관련 회전 함수 아래의 항목Lambda 교체 함수를 생성하는 데 사용할 수 있는 AWS 템플릿 (p. 173)를 선택합니다.

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

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

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

105

Page 112: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Amazon DocumentDB 암호에 대한 순환 활성화

첫 번째 명령은 Secrets Manager가 제공한 템플릿을 기반으로 AWS CloudFormation 변경 세트를 설정합니다.

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

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

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

• 엔드포인트— 교체 함수가 쿼리하게 하려는 서비스 엔드포인트의 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-instancesCLI 명령을 실행합니다. 그런 다음 해당 정보를 다음 명령에 추가하고 실행합니다.

106

Page 113: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서기타 보안 암호 교체

$ 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

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

{ "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 교체 함수를 생성하려는 경우, 사용 중인 이전 단계를 따라야 합니다.SecretsManagerRotationTemplateAWS CloudFormation 템플릿입니다. 보안 Secrets Manager대부분의 권한 및 구성 설정을 설정합니다.

다른 데이터베이스 또는 서비스에 대한 AWSSecrets Manager 보안 암호 교체

보안 서비스 또는 데이터베이스에 대한 보안 암호를 자동으로 교체하도록 AWS Secret Manager를 구성할 수 있습니다. Secrets Manager 기본적으로 방법을 알고Amazon RDS 데이터베이스에 대한 비밀 교체 (p. 86)를 선택합니다. 그러나 보안 Secrets Manager 사용하면 다른 데이터베이스 또는 타사 서비스에 대한 보안 암호를 교체할 수 있습니다. 각 서비스 또는 데이터베이스에는 보안 암호를 구성하는 고유한 방법이 있을 수 있으므로 보안 Secrets Manager 어떤 데이터베이스 또는 서비스를 선택하든지 작동하도록 작성해야 하는 Lambda 함수를 사용합니다. 보안 암호 교체 방법에 대한 서비스 관련 세부 정보를 구현하도록Lambda 함수를 사용자 지정합니다.

107

Page 114: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서기타 보안 암호 교체

다른 데이터베이스 또는 다른 유형의 서비스에 대한 보안 암호 교체를 활성화할 때 는 Lambda 함수를 생성하고 코드를 작성해야 합니다.

다른 데이터베이스 또는 서비스에 대해 교체를 활성화하기 전에 먼저 Lambda 교체 함수를 생성해야 합니다.AWS 는 시작점으로 사용할 수 있는 일반 템플릿 Lambda 교체 함수를 제공합니다. 다음 절차는 이 템플릿을기반으로 새 Lambda 함수를 생성하는 방법을 설명합니다. 그런 다음 교체를 활성화 (p. 110)할 때는 작성한 함수의 Amazon 리소스 이름(ARN)만 보안 암호에 추가하면 됩니다.

주제• 다른 데이터베이스 또는 서비스에 대한 AWS Secrets Manager 비밀 교체 (p. 108)• 다른 데이터베이스 또는 서비스에 대한 보안 암호 교체를 활성화하는 경우 (p. 110)

다른 데이터베이스 또는 서비스에 대한 AWS SecretsManager 비밀 교체지원되는 Amazon RDS 데이터베이스 외에 다른 애플리케이션에 대한 보안 암호를 생성하는 경우 AWSSecrets Manager Lambda 교체 함수를 생성하지 않습니다. 교체 함수를 만들고 구성한 후 보안 암호에 함수의 Amazon 리소스 이름(ARN)을 추가해야 합니다. 보안 Secrets Manager 콘솔, AWS CLI 또는 AWS SDK중 하나를 사용하여 이렇게 합니다.

이 주제에서는 생성하고 실행하는 AWS CloudFormation 변경 세트를 사용하여 Lambda 함수를 생성하는 방법에 대해 설명합니다. 그런 다음 권한을 연결합니다. 이 시점에서 코드를 편집하여 교체 함수를 원하는 방식대로 작동하게 만들 수 있습니다. 마지막으로, 교체가 트리거될 때마다 보안 Secrets Manager 함수를 호출하도록 완료된 함수를 보안 암호에 연결합니다.

전체 적용해야 하는 "일반" 템플릿을 지정할 수 있습니다. 또는 특정 데이터베이스나 서비스에 대해 교체 전략을 전적으로 실행하는 템플릿 중 하나를 선택하여, 요구 사항에 맞는 함수를 사용자 지정하기 위한 시작점으로 사용할 수 있습니다.

최소 권한

교체를 활성화하고 구성하는 명령을 실행하려면 다음과 같은 권한이 있어야 합니다.

• serverlessrepo:CreateCloudFormationChangeSet— Lambda 교체 함수를 구성하고 생성하는 AWS CloudFormation 변경 세트를 생성합니다.

• cloudformation:ExecuteChangeSet— Lambda 교체 함수를 생성하고 구성하는 AWSCloudFormation 변경 세트를 실행합니다.

• lambda:AddPermission— 생성한 Lambda 교체 함수에 필요한 권한을 추가합니다. 이것은• lambda:InvokeFunction— 교체 함수를 보안 암호에 연결합니다.• lambda:UpdateFunctionConfiguration— VPC 있는 데이터베이스 또는 서비스와 통신할

수 있도록 콘솔에서 Lambda 함수의 VPC 구성을 업데이트할 수 있게 허용합니다.• secretsmanager:RotateSecret— 최초 교체를 구성하고 트리거합니다.

이러한 권한을 IAM 사용자 또는 역할에 연결하여 IAM 사용자 또는 역할에 모두 부여할 수 있습니다.SecretsManagerReadWriteAWS 관리형 정책.

다음 명령은 일반 명령어를 적용합니다.SecretsManagerRotationTemplate를 Lambda 함수에 추가합니다. 이 템플릿은 AWS Serverless Application Repository 제공하며, AWS CloudFormation 에서 대부분의단계를 자동화하는 데 사용됩니다. 지정해야 하는 전체 템플릿 세트와 ARN을 보려면 Lambda 교체 함수를생성하는 데 사용할 수 있는 AWS 템플릿 (p. 173) 단원을 참조하십시오.

일반 템플릿의 ARN을 사용하여 다음과 같이 정확하게 입력합니다.

arn:aws:serverlessrepo:us-east-1:297356227824:applications/SecretsManagerRotationTemplate

108

Page 115: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서기타 보안 암호 교체

자격 증명을 사용하는 데이터베이스 또는 서비스가 Amazon VPC에서 제공한 VPC에 있는 경우, 5단계의 명령을 포함해야 합니다. 이 명령은 해당 VPC와 통신하기 위한 함수를 구성합니다. VPC가 없으면 명령을 건너뛸 수 있습니다.

사용자 지정할 수 있는 일반 템플릿으로 Lambda 교체 함수 생성

1. 첫 번째 명령은 Secrets Manager가 제공한 템플릿을 기반으로 AWS CloudFormation 변경 세트를 설정합니다. 템플릿에 2가지 파라미터를 입력합니다. 하나는 보안 Secrets Manager 엔드포인트 URL이고,하나는 템플릿이 생성하는 Lambda 교체 함수에 지정할 이름입니다.

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

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

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

3. 그런 다음 이전 명령이 생성한 Lambda 함수의 이름을 찾아야 합니다.

$ aws lambda list-functions { ... "FunctionName": "MySecretsManagerRotationFunction", "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:MySecretsManagerRotationFunction", ... }

4. 다음 명령은 보안 Secrets Manager 함수를 호출할 수 있는 권한을 부여합니다.

$ aws lambda add-permission \ --function-name MySecretsManagerRotationFunction \ --principal secretsmanager.amazonaws.com \ --action lambda:InvokeFunction \ --statement-id SecretsManagerAccess{ "Statement": "{\"Sid\":\"SecretsManagerAccess\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"secretsmanager.amazonaws.com\"},\"Action\":\"lambda:InvokeFunction\",\"Resource\":\"arn:aws:lambda:us-west-2:123456789012:function:aws-serverless-repository-SecretsManagerRDSMySQLRo-10WGBDAXQ6ZEH\"}"}

5. VPC에서 데이터베이스를 실행하는 경우 다음 명령이 필요합니다. VPC가 없는 경우 이 명령을 건너뜁니다. 이 명령은 Amazon RDS DB 인스턴스를 실행하는 VPC 실행되도록 Lambda 교체 함수를 구성합

109

Page 116: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서다른 데이터베이스 또는 서비스에 대한 보안 암호 교체를 활성화하는 경우

니다. Amazon RDS DB 인스턴스의 VPC 정보를 조회하십시오.aws rds describe-instancesCLI명령을 실행합니다. 그런 다음 해당 정보를 다음 명령에 추가하고 실행합니다.

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

6. 데이터베이스 인스턴스 및 Lambda 교체 함수를 포함하는 VPC PC가 인터넷 액세스 권한이 없는 경우의 프라이빗 서비스 엔드포인트를 사용하여 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

7. 이 때 Lambda 교체 함수에 원하는 코드를 입력할 수 있습니다.

https://console.aws.amazon.com/lambda/에서 AWS Lambda 콘솔을 엽니다.8. 선택한 교체 시나리오를 구현하도록 코드를 사용자 지정합니다. 세부 정보는 Lambda 회전 함수 이해 및

사용자 지정 (p. 112) 단원을 참조하십시오.9. 마지막으로, 보안 암호에 교체 구성을 적용하고 최초 교체를 수행할 수 있습니다. --rotation-rules

파라미터로 연속 교체 간 일 수를 지정하고 AutomaticallyAfterDays를 원하는 일 수로 설정합니다.

$ aws secretsmanager rotate-secret \ --secret-id production/MyAwesomeAppSecret \ --rotation-lambda-arn arn:aws:lambda:us-west-2:123456789012:function:MySecretsManagerRotationFunction \ --rotation-rules AutomaticallyAfterDays=7

보안 암호는 즉시 교체된 후 지정한 빈도로 교체되기 시작합니다.

다른 데이터베이스 또는 서비스에 대한 보안 암호 교체를 활성화하는 경우지원 RDS 데이터베이스 또는 다른 서비스 이외의 데이터베이스에 대한 보안 암호의 교체를 구성하려면 몇가지 추가 단계를 수동으로 구성해야 합니다. 주로 Lambda 교체 함수에 대한 코드를 생성하고 제공해야 합니다.

Warning

교체를 구성하면 보안 암호를 저장하자마자 보안 암호가 한 번 교체됩니다. 보안 암호에 저장된 자격 증명을 사용하는 모든 애플리케이션이 AWS 보안 암호 관리자에서 보안 암호를 검색하도록 업데이트되어 있는지 확인하십시오. 이전 자격 증명은 초기 교체 후 사용하지 못할 수 있습니다. 이전 자격 증명이 더 이상 유효하지 않게 되는 즉시 업데이트에 실패한 애플리케이션이 중단됩니다.

Lambda 교체 함수가 생성되어 있어야 합니다. 아직 함수를 작성하지 않았다면 다른 데이터베이스 또는 서비스에 대한 AWS Secrets Manager 비밀 교체 (p. 108)의 단계를 수행합니다. 함수가 생성되고 보안 암호와연결할 준비가 되면 이 절차로 돌아갑니다.

사전 조건: 교체를 활성화하기 위한 네트워크 요구 사항

110

Page 117: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서다른 데이터베이스 또는 서비스에 대한 보안 암호 교체를 활성화하는 경우

교체를 성공적으로 활성화하려면 네트워크 환경을 올바르게 구성해야 합니다.

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

• Lambda 함수가 보안 Secrets Manager 서비스 엔드포인트와 통신할 수 있어야 합니다. Lambda 교체 함수가 인터넷에 액세스할 수 있는 경우 함수가 VPC PC에서 실행하도록 구성되지 않았거나 VPC에연결된 NAT 게이트웨이 NAT의 경우 을 사용할 수 있습니다.Secrets Manager 사용할 수있는 공용 끝점 중 하나를 선택합니다. 또는 Lambda 함수가 인터넷에 액세스할 수 없는 VPC 실행하도록 구성된 경우,프라이빗Secrets Manager 서비스 끝점을 사용하여 VPC 구성 (p. 86)를 선택합니다.

다른 데이터베이스 또는 서비스의 보안 암호 교체를 활성화 및 구성하려면

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

Using the AWS Management Console

최소 권한

콘솔에서 교체를 활성화 및 구성하려면 다음과 같은 권한이 있어야 합니다.

• secretsmanager:ListSecrets— 콘솔에서 보안 암호 목록을 확인합니다.• secretsmanager:DescribeSecrets— 선택한 보안 암호 세부 정보 페이지에 액세스합

니다.• secretsmanager:RotateSecret— 교체를 구성하거나 트리거합니다.

1. 보안 Secrets Manager 콘솔에 로그인하십시오.https://console.aws.amazon.com/secretsmanager/를선택합니다.

2. 교체를 활성화하고자 하는 보안 암호의 이름을 선택합니다.3. [Configure automatic rotation] 섹션에서 [Enable automatic rotation]을 선택합니다. 이를 통해 이 섹션

의 다른 컨트롤이 활성화됩니다.4. 용교체 간격 선택에서 사전 정의된 값 중 하나를 선택하거나 또는사용자 지정를 클릭한 다음 교체 사

이에 원하는 일수를 입력합니다.

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

5. 용AWS Lambda 함수 선택의 드롭다운 목록에서 교체 함수를 선택합니다. 아직 함수를 작성하지 않은 경우 다른 데이터베이스 또는 서비스에 대한 AWS Secrets Manager 비밀 교체 (p. 108)의 단계를 수행합니다. 함수가 생성되고 보안 암호와 연결할 준비가 되면 돌아가서 이 단계를 수행합니다.

Using the AWS CLI or AWS SDKs

최소 권한

콘솔을 사용하여 Lambda 함수를 생성하려면 다음 권한이 있어야 합니다.

• lambda:CreateFunction— AWS Lambda 에서 함수를 생성합니다.• lambda:InvokeFunction— 교체 함수를 보안 암호에 연결합니다.• secretsmanager:DescribeSecrets— 보안 암호 세부 정보 페이지에 액세스합니다.

111

Page 118: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Lambda 회전 함수 이해 및 사용자 지정

• secretsmanager:RotateSecret— 교체 함수를 보안 암호에 연결하거나 교체를 트리거합니다.

보안 Secrets Manager 다음 명령을 사용하여 교체를 활성화하고 구성할 수 있습니다.

• API/SDK: RotateSecret• AWS CLI: rotate-secret

Example

다음은 에서 콘솔 기반 보안 암호 생성과 동일한 기능을 수행하는 CLI 명령의 예입니다.AWSManagement Console 사용탭을 클릭합니다. 교체 간격을 30일로 설정하고 데이터베이스에서 이 보안암호의 자격 증명을 변경할 권한을 가진 두 번째 보안 암호의 Amazon 리소스 이름(ARN)을 지정합니다.

$ aws secretsmanager rotate-secret --secret-id production/MyAwesomeAppSecret --automatically-rotate-after-days 30 --rotation-lambda-arn arn:aws:secretsmanager:region:accountid:secret:production/MasterSecret-AbCdEf{ "ARN": "arn:aws:secretsmanager:region:accountid:secret:production/MyAwesomeAppSecret-AbCdEf", "Name": "production/MyAwesomeAppSecret", "VersionId": "EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE"}

이ClientRequestToken파라미터는 필요하지 않습니다. 이 파라미터를 자동으로 생성하고 제공하는AWS CLI를 사용하기 때문입니다. 출력에는 최초 교체 중에 생성된 새 보안 암호 버전 ID가 포함됩니다.교체가 완료된 후 이러한 새 버전에는 AWSCURRENT 스테이징 레이블이 연결되어 있고 이전 버전에는AWSPREVIOUS 스테이징 레이블이 있습니다.

Lambda 회전 함수 이해 및 사용자 지정Lambda 교체 함수에 대한 자세한 내용은Lambda 교체 함수 개요 (p. 113)를 선택합니다.

중 하나를 선택하는 경우지원되는 데이터베이스 (p. 4)에서 보안 암호 유형에 대한 보안 AWS SecretsManager Lambda 교체 함수를 생성해 구성합니다. Amazon RDS 데이터베이스 암호에 대한 순환 활성화 (p. 88) 단계에 따라 해당 데이터베이스에 대해 교체를 활성화할 수 있습니다. 그러나 다른 서비스에 대해 사용자 지정 Lambda 교체 함수를 생성하려는 경우 의 단계를 따라야 합니다.다른 데이터베이스 또는 서비스에 대한 보안 암호 교체를 활성화하는 경우 (p. 110)를 선택합니다.

이 단원에서는 Lambda 함수가 작동하는 방법과 보안 암호를 성공적으로 교체하도록 함수를 구성하는 방법에 대해 자세히 설명합니다.

Important

함수를 호출하는 Lambda 함수 및 보안 Secrets Manager 보안 암호는 동일한 AWS 리전에 있어야합니다. 다른 리전에 있는 경우 보안 암호 메타데이터에 함수의 Amazon 리소스 이름(ARN)을 추가하려고 하면 "Lambda가 존재하지 않습니다."라는 오류 메시지가 표시됩니다.

다음은 교체에 사용할 고유한 Lambda 함수를 생성할 때 고려해야 할 시나리오입니다. 보안 리소스를 보호하는 인증 시스템에서 지원하는 기능 및 사용자의 보안 문제에 따라 시나리오를 적용합니다.

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

112

Page 119: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Lambda 교체 함수 개요

사용자에게는 주로 암호를 변경할 수 있는 권한이 있기 때문에 암호를 변경할 수 있는 관리자 권한이 있는별도의 사용자가 필요하지 않습니다. 하지만 활성 상태의 단일 사용자에 대해 암호를 변경하고 있으므로이 사용자를 통해 서비스에 액세스하는 클라이언트가 암호 변경 중 일시적으로 로그인에 실패할 수 있습니다.

암호가 변경되는 시점과 모든 클라이언트가 암호의 새 버전 사용에 대한 알림을 받는 시점 간에 가동 중지가 발생할 수 있습니다. 이 시간은 일반적으로 몇 초 정도여야 하며, 보안 암호를 사용하는 애플리케이션코드에서 허용 가능한 범위여야 합니다. 그 사이에 약간의 지연을 통해 재시도가 활성화되어 교체 중에 이짧은 중단 시간이 허용될 수 있어야 합니다.

• 교대로 적용 가능한 두 사용자를 생성할 수 있습니다. 이 시나리오에서는 교체 프로세스가 복제하는 한 명의 사용자를 생성하여 보안 리소스에 대해 동일한 액세스 권한을 가진 두 사용자를 생성할 수 있습니다. 교체 프로세스는 두 사용자 간에 교체합니다. 보안 Secrets Manager 사용자가 “활성” 보안 암호의 자격 증명을 사용하여 데이터베이스 또는 서비스에 계속 액세스하는 동안 암호를 변경하고 “비활성” 보안 암호를 테스트합니다.

클라이언트가 기본 스테이징 레이블인 AWSCURRENT가 연결된 버전을 쿼리하여 한 사용자 이름으로 보안리소스에 액세스하는 동안 교체 함수는 비활성 상태인 두 번째 사용자의 암호를 변경합니다. 교체 함수는업데이트된 암호를 스테이징 레이블이 AWSCURRENT인 새 버전의 보안 암호에 저장합니다. 테스트를 마친후에는 AWSCURRENT 스테이징 레이블을 대체 사용자 및 새 암호를 가리키는 새 버전으로 옮겨 지정합니다. 모든 클라이언트가 바로 대체 사용자 및 업데이트된 암호를 사용하여 보안 리소스에 액세스하기 시작합니다.

다음 교체 시기가 되면 현재 유휴 상태인 원래 사용자 계정에 대한 암호를 변경합니다. 이렇게 보안 암호의다른 새 버전이 생성되고 주기가 반복됩니다.

이 시나리오에서는 두 사용자 모두에 대해 암호를 변경할 수 있는 권한을 가진 관리자 또는 수퍼유저를 가리키는 두 번째 보안 암호가 필요합니다.

• 단일 사용자에 대해 새 자격 증명을 생성할 수 있습니다. 일부 시스템에서는 여러 개의 액세스 자격 증명세트를 사용하는 단일 사용자를 만들 수 있습니다. 각 액세스 자격 증명은 전체 자격 증명 세트를 제공하며서로 독립적으로 작동합니다. 보안 Secrets Manager 두 번째 액세스 자격 증명을 사용하는 동안 첫 번째액세스 자격 증명을 삭제하고 다시 만들 수 있습니다. 그런 다음 모든 클라이언트를 새로운 첫 번째 액세스자격 증명으로 전환할 수 있습니다. 다음에 교체 시에는 고객이 계속해서 두 번째 액세스 자격 증명을 사용하는 동안 두 번째 액세스 자격 증명을 삭제하여 다시 생성합니다.

각 시나리오를 구성하는 방법에 대한 자세한 내용 및 지침은 다음 항목을 참조하십시오.

• Lambda 교체 함수 개요 (p. 113)• 단일 암호로 AWS Secret Manager 보안 암호 교체 (p. 116)• 기존 사용자 2명 간에 교대로 AWS Secrets Manager 보안 암호 교체 (p. 119)• 여러 자격 증명을 지원하는 단일 사용자에 대해 AWS Secrets Manager 보안 암호 교체 (p. 122)

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

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

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

113

Page 120: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Lambda 교체 함수 개요

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

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

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

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

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

동일한 secretId 및 clientTokenRequest는 모든 단계를 호출합니다. 호출 시마다 Step 파라미터만 변경됩니다. 이렇게 하면 단계 사이의 모든 상태를 저장할 수 없습니다. 매개 변수는 필요한 모든 정보를 제공하거나AWSPENDING또는AWSCURRENT레이블을 사용합니다.

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

• 단일 암호로 AWS Secret Manager 보안 암호 교체 (p. 116)• 기존 사용자 2명 간에 교대로 AWS Secrets Manager 보안 암호 교체 (p. 119)• 여러 자격 증명을 지원하는 단일 사용자에 대해 AWS Secrets Manager 보안 암호 교체 (p. 122)

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

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

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

createSecret 단계

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

114

Page 121: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Lambda 교체 함수 개요

setSecret 단계

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

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

테스트Secret 단계

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

115

Page 122: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서보안 암호 교체 - 단일 사용자, 단일 암호

더 피니쉬Secret 단계

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

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

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

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

116

Page 123: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서보안 암호 교체 - 단일 사용자, 단일 암호

교체 시 레이블을 사용하여 암호 변경 권한을 가진 단일 사용자를관리하는 방법아래에서는 이 시나리오에 대해 좀 더 자세히 설명합니다.

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

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

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

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

117

Page 124: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서보안 암호 교체 - 단일 사용자, 단일 암호

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

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

1. 보안 리소스를 보호하는 인증 시스템에서 단일 사용자를 생성합니다. 암호를 기록해 둡니다.2. 이전 단계에서 생성한 자격 증명의 세부 정보를 저장할 보안 암호 하나를 생성합니다.

a. Secrets Manager 콘솔에 로그인합니다.https://console.aws.amazon.com/secretsmanager/를 선택합니다.

b. 새 암호를 선택합니다.c. 암호 유형 선택에서 사용 중인 서비스에 가장 잘 맞는 옵션을 선택합니다. 그런 다음 사용자 이름 및

최초 암호 등과 같은 데이터베이스 또는 서비스에 대한 세부 정보를 구성합니다.d. 용AWS KMS 암호화 키에서 보안 암호를 암호화하는 데 사용할 고객 마스터 키 (CMK) 를 선택하거

나DefaultMasterKey계정에 대해 기본 키를 사용하려면 보안 암호에 액세스하는 자격 증명이 보안암호를 소유한 계정과 동일한 계정의 자격 증명이어야 합니다. 사용자 자격 증명이 다른 계정에 있는 경우 사용자 지정 CMK의 Amazon 리소스 이름(ARN)을 생성하여 지정해야 합니다.

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

Note

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

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

Note

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

g. 다음 단계를 선택합니다.h. 암호 이름을 입력하고, 필요한 경우 설명을 입력합니다. 태그를 추가하도록 선택할 수도 있습니다.i. [Store secret]을 선택합니다.

3. 새 보안 암호를 검사하여 Lambda 교체 함수의 ARN 가져옵니다.

a. 비밀 목록 페이지에서 2단계에서 생성한 보안 암호의 이름을 선택합니다.b. 에서비밀 세부 정보/비밀 회전섹션에서 교체 함수의 ARN 선택하여 Lambda 에서 엽니다.c. 특정 요구 사항에 맞게 교체 함수를 사용자 지정합니다. 각 단계에 대한 다음 요구 사항을 함수 작성

을 위한 기준으로 사용할 수 있습니다.118

Page 125: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서보안 암호 교체 - 기존 사용자 간에 전환

• createSecret 단계:• 작업을 사용하여 보안 암호의 버전을 검색합니다.AWSCURRENTGetSecretValue• SecretString 필드에서 보호되는 보안 암호 텍스트를 추출하고 수정할 수 있는 구조로 저장

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

즘을 사용하여 새 암호를 생성합니다.• 해당 구조의 password 필드를 이전 단계에서 생성한 새 구조를 덮어씁니다. username 및 연

결 세부 정보 등 기타 모든 자세한 정보는 동일하게 유지합니다.• PutSecretValue에 대한 호출에서 보안 암호 구조의 수정된 사본을 SecretString 파라미

터로 전달하여 저장합니다. Secret Manager는 보안 암호의 새 버전을AWSPENDING를 선택합니다.

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

• testSecret 단계:• 작업을 사용하여 보안 암호의 버전을 검색합니다.AWSPENDINGGetSecretValue• 보안 리소스에 대한 명령을 실행하여 보안 암호의 자격 증명을 사용하여 보안 리소스에 액세스

해 봅니다.• finishSecret 단계:

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

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

Important

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

기존 사용자 2명 간에 교대로 AWS Secrets Manager보안 암호 교체보안 리소스에 대한 보안 암호를 자동으로 교체하도록 AWS Secret Manager를 구성할 수 있습니다.

이 주제에서는 두 사용자를 생성하고 사용자 간 교체를 허용하도록 시스템의 교체를 구성하는 방법을설명합니다. 필요한 경우 암호를 변경할 수 있습니다. 이를 통해 사용자 계정을 하나로만 제한한 시나리오 (p. 116)에서 가동 중지가 발생할 가능성을 제거할 수 있습니다. 이러한 경우 보안 암호 버전의 암호 이외의 암호로 변경합니다. 각 버전은 각 교체 주기 시 각 사용자 간에 번갈아 가며 사용자의 변경 사항을 캡처해야 합니다.

관리자가 처음 두 사용자에 대한 암호를 변경할 수 있는 승격된 권한을 가진 세 번째 "마스터" 사용자를 생성하도록 한 경우 이렇게 하는 것이 좋습니다. 이는 사용자에게 자신의 암호를 변경하는 권한을 갖도록 허용하는 것보다 더 안전합니다. 이러한 방식으로 시나리오를 구성하는 경우 첫 번째 보안 암호와 번갈아 사용자의암호를 변경하는 데 사용할 두 번째 보안 암호를 생성해야 합니다. 먼저 "마스터" 보안 암호를 생성하여 "사용자" 보안 암호를 구성할 때 이를 참조할 수 있게 합니다.

보안 Secrets Manager 현재 자격 증명을 비활성화하지만 즉시 삭제하지는 않는 다음 시나리오를 구현하기위한 템플릿을 제공합니다. 대신 보안 Secrets Manager 버전은 현재 자격 증명이 있는 보안 암호 버전을 스

119

Page 126: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서보안 암호 교체 - 기존 사용자 간에 전환

테이징 레이블로 표시합니다.AWSPREVIOUS를 선택합니다. 이는 하나의 추가적인 교체 주기 동안 해당 자격증명을 "마지막으로 확인된 정상" 자격 증명으로 보존합니다. 보안 Secrets Manager 현재 자격 증명에 문제가 발생하는 경우 복구용으로 자격 증명을 사용할 수 있도록 유지합니다.

보안 Secrets Manager 이 주제의 뒷부분에 설명된 바와 같이 교체 함수를 사용하여 사용자가 다시 활성 서비스로 전환될 때 두 번째 교체 주기 후에만 자격 증명을 제거합니다. 즉, 지정된 일수에 대해서만 자격 증명 집합을 유효하게 하려면 교체 기간을 1에서 절반을 뺀 값으로 설정하는 것이 좋습니다. 이를 통해 두 교체 주기가 모두 완료되며 자격 증명이 지정된 기간 내에 완전히 사용 중지될 수 있습니다.

예를 들어 규정 준수 필수 최대 자격 증명 기간(최대 90일)이 있는 경우 교체 간격을 44일(90/2 - 1 = 44)로 설정하는 것이 좋습니다. 0일에 Secrets Manager 는 교체에서 새 자격 증명을 생성하고 레이블을지정합니다.AWSCURRENT를 선택합니다. 44일에 다음 교체에서는 해당 자격 증명을 가진 보안 암호가AWSPREVIOUS로 강등되고 클라이언트는 이를 사용하여 적극적으로 중단합니다. 88일에 다음 교체에서는버전에서 스테이징 레이블을 모두 제거합니다. 보안 Secrets Manager 이 시점에서 해당 버전이 완전히 사용중지되며, 데이터베이스의 사용자가 새로운 암호로 재활용되어 주기가 다시 시작됩니다.

교체 시 레이블을 사용해 두 사용자 간에 교대로 적용하는 방법스테이징 레이블을 사용하면 Secrets Manager 가 두 사용자 간에 앞/뒤로 전환할 수 있습니다. AWSCURRENT레이블이 지정된 사용자는 클라이언트에서 적극적으로 사용합니다. Lambda 함수 교체가 트리거되면 교체프로세스에서 비활성화 상태의 두 번째 사용자에게 새 암호를 할당합니다. Secret Manager는 보안 암호의새 버전에 이러한 자격 증명을 저장합니다. 새 보안 암호 버전의 자격 증명을 사용한 액세스가 잘 작동하는지확인하면 교체 프로세스에서 AWSCURRENT 레이블을 새 버전으로 이동하여 활성 버전으로 만듭니다. 다음에트리거할 때 Secrets Manager 역할은 두 사용자 계정을 역전시킵니다.

기본 예제 시나리오

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

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

b. 최초 교체 중 해당 프로세스에서 보안 암호의 새 버전 "B"를 생성합니다(새로운 보안 암호가 아니라 동일한 보안 암호의 새로운 버전). 그리고 사용자 이름을 두 번째 사용자로 전환하고 새 암호를 생성한다는 점을 제외하면 A 버전의 모든 세부 정보를 복제합니다. 그런 다음 교체 프로세스에서는 새 암호로 두 번째 사용자를 업데이트합니다. 처음에 보안 암호 버전 B에는 교체 프로세스에서 연결한 AWSPENDING 레이블이있습니다. 사용자 지정 앱이 항상 AWSCURRENT 레이블을 요청하도록 프로그래밍되어 있는데 이 레이블이변경되지 않았기 때문에 이 애플리케이션은 데이터베이스에 액세스하기 위한 자격 증명을 얻기 위해 계속해서 보안 암호의 원래 A 버전을 검색해 사용합니다.

120

Page 127: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서보안 암호 교체 - 기존 사용자 간에 전환

c. 제대로 작동하는지 B 버전 보안 암호를 테스트한 후 교체 프로세스는 AWSCURRENT 레이블을 A 버전에서옮겨 보안 암호의 새로운 B 버전에 연결합니다. 또한 AWSPREVIOUS 스테이징 레이블을 AWSCURRENT 스테이징 레이블이 있는 이전 버전으로 자동으로 옮깁니다. 이를 통해 복구가 필요한 경우 "마지막으로 확인된 정상" 상태로 작동할 수 있습니다. 보안 암호의 AWSPREVIOUS 버전은 하나의 교체 주기 동안 계속 복구용으로 사용할 수 있으며, Secrets Manager 다음 주기에서 비밀을 더 이상 사용하지 않습니다.

d. 이제 보안 암호의 B 버전에 AWSCURRENT 레이블이 있으므로 사용자 지정 애플리케이션의 다음 요청은 보안 암호의 B 버전을 수신하는 것입니다. 사용자 지정 애플리케이션은 새로운 암호와 함께 두 번째 사용자를 사용하여 데이터베이스에 액세스합니다.

두 사용자 간의 교체 구성당신은 중 하나에 대한 보안 암호를 사용하는 경우지원되는 Amazon RDS 데이터베이스 (p. 4)에 대한 절차를 따르십시오.Amazon RDS 데이터베이스 암호에 대한 순환 활성화 (p. 88)를 선택합니다.

대신 다른 서비스 또는 데이터베이스에 대한 교체를 구성하려면 Lambda 교체 함수를 생성하고 다음 지침에따라 사용자 지정합니다.

1. 데이터베이스 또는 서비스에 두 사용자를 생성합니다. 사용하는 사용자 이름 및 암호를 적어 놓습니다.각 사용자가 자신의 암호를 변경할 수 있는지 확인합니다.

2. 첫 번째 사용자의 자격 증명을 사용하여 보안 암호를 생성합니다.

다음 단계를 따르십시오.다른 데이터베이스 또는 서비스에 대한 AWS Secrets Manager 비밀 교체 (p. 108)를 사용하여 사용자 지정할 수 있는 일반 Lambda 교체 함수 템플릿을 생성합니다. 7단계로 이동한 후 다음 정보를 사용하여 함수를 사용자 지정합니다.

121

Page 128: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서보안 암호 교체 - 암호만

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

• createSecret 단계:• 작업을 사용하여 보안 암호의 버전을 검색합니다.AWSCURRENTGetSecretValue• SecretString 필드에서 보호되는 보안 암호 텍스트를 추출하고 사용할 수 있는 파일 구조로 배치합니

다.• username 필드를 살펴보고 교대 사용자 이름을 확인합니다.• 교대 사용자 이름을 가진 사용자가 데이터베이스에 존재하는지 확인합니다. 교체 프로세스를 처음으로

수행하는 경우에만 해당 사용자가 존재하지 않을 수 있습니다. 이 경우 현재 사용자와 해당 권한을 복제합니다.

• 보안 암호 구조의 사본에 있는 username 항목을 교대 사용자 이름으로 설정합니다.• 보호되는 리소스에서 지원하는 최대 길이 및 복잡성 요구 사항에 맞춰 새 암호를 생성합니다.• 보안 암호 구조의 사본에 있는 password 항목을 새 암호로 설정합니다.• 에 대한 호출에서 보안 암호 구조의 수정된 사본을 파라미터로 전달하여 저장합니

다.SecretStringPutSecretValue Secret Manager는 보안 암호의 새 버전을AWSPENDING를 선택합니다.

• setSecret 단계:• 작업을 사용하여 보안 암호의 버전을 검색합니다.AWSPENDINGGetSecretValue• SecretString 필드에서 사용자 이름 및 암호를 추출합니다.• 보안 리소스의 인증 시스템에 대한 명령을 실행하여 지정된 사용자의 암호를 해당 값으로 변경합니다.

• testSecret 단계:• 작업을 사용하여 보안 암호의 버전을 검색합니다.AWSPENDINGGetSecretValue• 보안 암호의 자격 증명을 사용하여 보안 리소스에 액세스해 봅니다.

• finishSecret 단계:• 레이블이 지정된 버전으로 레이블을 옮겨 지정합니다.AWSCURRENTAWSPENDING• (선택 사항) 보안 암호의 해당 버전에서 AWSPENDING 레이블을 제거합니다.

Note

이 시나리오에서는 보안 암호 교체 중 사용자에게 오류가 표시될 가능성이 적습니다. 사용자는 새버전이 구성되는 동안 이전 버전을 계속해서 사용합니다. 보안 Secrets Manager 새 버전을 테스트한 후에만 새 버전을 가리키도록 레이블을 전환합니다. 그러면 클라이언트에서 새 버전을 사용하기시작합니다. 그러나 일부 서버는 암호 변경 시 전파 지연이 발생하는 서버 팜에 있기 때문에 암호가모든 서버로 전파될 시간을 가질 수 있도록 (테스트하기 전에 대부분의 경우 setSecret 단계에서)적절한 지연 시간을 포함해야 합니다. 또한 위험을 줄이기 위해 이러한 상황에서 클라이언트 애플리케이션에 적절한 재시도 기능을 포함해야 합니다.

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

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

122

Page 129: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서보안 암호 교체 - 암호만

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

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

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

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

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

123

Page 130: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서보안 암호 교체 - 암호만

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

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

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

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

a. Secrets Manager 콘솔에 로그인합니다.https://console.aws.amazon.com/secretsmanager/를 선택합니다.

b. 새 암호를 선택합니다.c. 암호 유형 선택에서 사용자 이름 및 첫 번째 자격 증명 세트를 포함해 다른 암호 유형을 선택합니다.

예를 들어, 보호되는 보안 암호 텍스트에 대해 키 값 쌍 2개를 입력합니다. 이 페어는 다음 예제와 유사할 수 있습니다.

키 값

UserName <your user name>

APIKey <your API key>

APIKeyId <identifies which of the two API keys isstored in this version>

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

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

Note

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

f. Select the Lambda rotation function(Lambda 교체 함수 선택)에서 함수 생성을 선택합니다.g. 다음 단계를 선택합니다.h. 암호 이름을 입력하고, 필요한 경우 설명을 입력합니다. 선택적으로 태그를 추가할 수 있습니다.i. [Store secret]을 선택합니다.

124

Page 131: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서교체 함수 삭제

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

a. 비밀 목록 페이지에서 2단계에서 생성한 보안 암호의 이름을 선택합니다.b. 에서비밀 세부 정보/비밀 회전섹션에서 교체 함수의 ARN 선택하여 Lambda 에서 엽니다.c. 교체 함수를 작성하기 위한 기준으로 다음 로직을 사용합니다.

• createSecret 단계:• 작업을 사용하여 보안 암호의 버전을 검색합니다.AWSCURRENTGetSecretValue• 보안 암호의 SecretString 값을 추출하고 수정할 수 있는 구조로 저장합니다.• 보안 암호의 AWSCURRENT 버전에서 참조하지 않는 비활성 API 키를 확인합니다.• 서비스에 대한 명령을 실행하여 이전 단계에서 확인한 비활성 API 키를 삭제합니다.• 서비스에 대한 명령을 실행하여 동일한 사용자에 대해 새 액세스 키를 생성합니다.• 보안 암호 구조의 사본에 있는 API 키와 식별자를 방금 생성한 새 API 키로 덮어 씁니다. 모든

다른 세부 정보는 동일하게 유지합니다.• 에 대한 호출에서 보호되는 보안 암호 텍스트의 수정된 사본을 파라미터로 전달하여 저

장합니다.SecretStringPutSecretValue Secret Manager는 보안 암호의 새 버전을AWSPENDING를 선택합니다.

• setSecret 단계:• 이 시나리오의 setSecret 단계에서는 아무 것도 하지 않습니다. 보안 암호에 저장할 API 키와

식별자가 있어야 하기 때문에 createSecret 단계에서 API 키를 생성했습니다. 대부분의 다른 시나리오에서처럼 고유한 키를 생성하지 않습니다.

• testSecret 단계:• 작업을 사용하여 보안 암호의 버전을 검색합니다.AWSPENDINGGetSecretValue• 보안 리소스에 대한 명령을 실행하여 보안 암호의 이 버전에 있는 API 키를 사용하여 보안 리소

스에 액세스해 봅니다.• finishSecret 단계:

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

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

사용되지 않는 Lambda 회전 함수 삭제보안 암호에 대한 교체 함수를 만든 후 해당 보안 암호 교체가 더 이상 필요하지 않을 수 있습니다. 보안 암호삭제 (p. 66)가 확실한 방법입니다. 하지만 보안 암호를 교체하는 Lambda 교체 함수를 제거할 수도 있습니다. 교체 함수를 여러 보안 암호 간에 공유하는 경우 이 함수가 교체하는 마지막 보안 암호를 삭제할 때까지함수를 삭제하지 않을 수 있습니다.

AWS Serverless Application Repository 템플릿을 사용하여 이 설명서에서 설명한 대로 교체 함수를 만드는경우 단순히 함수만 삭제하지 마십시오. Secrets Manager AWS CloudFormation 스택의 일부로 함수를 생성했습니다. 스택을 삭제하면 스택이 생성한 모든 항목이 삭제됩니다. 이 경우 Secrets Manager 는 Lambda 함수와 해당 함수에 권한을 부여하는 IAM 역할을 모두 삭제합니다. 모든 항목을 완전히 삭제하려면 다음 단계를 수행해야 합니다.

AWS Serverless Application Repository 템플릿을 사용하여 만든 교체 함수 삭제

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

125

Page 132: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서교체 함수 삭제

Using the AWS Management Console

최소 권한

AWS Serverless Application Repository 템플릿 중 하나를 사용하여 만든 Lambda 교체 함수를삭제하려면 스택을 탐색하고 생성된 모든 구성 요소를 삭제하는 데 필요한 권한이 있어야 합니다.

• cloudformation:ListStacks• cloudformation:DescribeStack• cloudformation:ListStackResources• cloudformation:DeleteStack• lambda:ListFunctions• lambda:GetFunction• lambda:DeleteFunction• iam:ListRoles• iam:DetachRolePolicy• iam:DeleteRolePolicy• iam:DeleteRole• cloudformation:DeleteStack

이러한 모든 권한은 다음 AWS 관리형 정책을 연결하여 부여할 수 있습니다.

• SecretsManagerReadWrite• IAMFullAccess

1. https://console.aws.amazon.com/lambda/에서 AWS Lambda 콘솔을 엽니다.2. 함수 목록을 탐색하고, 삭제할 함수 이름을 선택합니다.3. 기능 세부 정보 페이지의 상단에 배너가 표시됩니다.이 함수는 CloudFormation

스택에 속합니다.AWS 서버를 사용하지 않는 저장소-비밀 관리자<rotation_template_name><unique_guid>를 선택합니다. 이 스택을 관리하려면CloudFormation 콘솔을 방문하십시오.를 선택합니다.

선택을 선택합니다.CloudFormation 콘솔링크를 클릭하여 AWS CloudFormation 콘솔을 엽니다.스택세부 정보페이지를 엽니다.

4. 기존 인라인 정책을 편집하지 않고 IAM 역할에 인라인 권한 정책을 추가했거나, 관리형 정책을 추가로 연결한 경우 이러한 정책을 삭제하거나 분리해야 AWS CloudFormation 에서 스택을 삭제할 수 있습니다.a. 스택의 리소스 섹션을 확장한 후 유형이 AWS::IAM::Role로 설정된 행의 물리적 ID 값을 선택합니

다. 그러면 IAM 콘솔이 별도의 탭에서 열립니다.b. 인라인 정책이 정책 유형인 행을 확인합니다. AWSLambdaBasicExecutionRole

AWS 관리형 함수가 연결되어 있어야 합니다. 또한 2개의 인라인 정책이 있어야 합니다.SecretsManager<template name>정책0및SecretsManager<template name>정책1를 선택합니다. 이러한 정책 외의 다른 정책이 있는 경우 Secrets Manager 는 이러한 정책을 스택의 일부로 생성한 것이 아닙니다. 이러한 정책은 스택이 생성된 후 수동으로 추가한 것입니다. 이들을 수동으로 삭제하거나 연결 해제해야 합니다. 이렇게 하지 않으면 다음 단계에서 스택 삭제 요청이 실패할 수 있습니다.

c. 로 돌아갑니다.스택 세부 정보AWS CloudFormation 콘솔로 이동합니다.5. 기타 작업을 선택한 후 스택 삭제를 선택합니다.6. 스택 삭제 확인 대화 상자에서 예, 삭제를 선택합니다.

126

Page 133: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서교체 함수 삭제

상태가 DELETE_IN_PROGRESS로 바뀝니다. 삭제가 성공하면 상태가 DELETE_COMPLETE로 바뀝니다.

7. 스택 목록으로 돌아가면 삭제된 스택이 더 이상 표시되지 않습니다.

Using the AWS CLI or SDK Operations최소 권한

AWS Serverless Application Repository 템플릿 중 하나를 사용하여 만든 Lambda 교체 함수를삭제하려면, 다음 단계에 나와 있는 각각의 AWS CLI 또는 이와 동등한 API 작업을 수행하는 데필요한 권한이 있어야 합니다. 이러한 모든 권한은 다음 2개의 AWS 관리형 정책을 연결하여 부여할 수 있습니다.

• SecretsManagerReadWrite• IAMFullAccess

1. 명령 프롬프트를 열어 AWS CLI 명령을 실행합니다.2. 어느 AWS CloudFormation 스택에 특정 함수가 포함되어 있는지 확인하려면 함수 이름을--

physical-resource-id파라미터. 그러면 특정 함수를 소유한 스택과 연결된 리소스 목록이 표시됩니다.

$ aws cloudformation describe-stack-resources --physical-resource-id MyLambdaRotationFunction{{ "StackResources": [ { "StackName": "aws-serverless-repository-MyLambdaCreationStack", "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/aws-serverless-repository-MyLambdaCreationStack/EXAMPLE2-90ab-cdef-fedc-ba987EXAMPLE", "LogicalResourceId": "SecretsManagerRotationTemplate", "PhysicalResourceId": "MySecretsManagerRotationFunction", "ResourceType": "AWS::Lambda::Function", "Timestamp": "2018-04-27T18:03:05.490Z", "ResourceStatus": "CREATE_COMPLETE" }, { "StackName": "aws-serverless-repository-MyLambdaCreationStack", "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/aws-serverless-repository-MyLambdaCreationStack/EXAMPLE2-90ab-cdef-fedc-ba987EXAMPLE", "LogicalResourceId": "SecretsManagerRotationTemplateRole", "PhysicalResourceId": "aws-serverless-repository-SecretsManagerRotationTe-<random-chars>", "ResourceType": "AWS::IAM::Role", "Timestamp": "2018-04-27T18:03:00.623Z", "ResourceStatus": "CREATE_COMPLETE" } ]}

3. 를 찾습니다.StackId및PhysicalResourceId응답 값과 연관된"ResourceType" :"AWS::IAM::Role"에서 함수를 호출할 권한이 있는 IAM 역할의 이름입니다. 기존 인라인 정책을 편집하지 않고 IAM 역할에 인라인 권한 정책을 추가했거나, 관리형 정책을 추가로 연결한 경우 이러한 정책을 삭제하거나 분리해야 AWS CloudFormation 에서 스택을 삭제할 수있습니다.

포함된 인라인 정책이 있는지 확인하려면 다음 명령을 실행합니다.

$ aws iam list-role-policies --role-name <role-name-from-PhysicalResourceId-on-previous-command>

127

Page 134: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서교체 함수 삭제

{ "PolicyNames": [ "SecretsManagerRotationTemplateRolePolicy0", "SecretsManagerRotationTemplateRolePolicy1" ]}

여기서 명시한 이름의 인라인 정책이 표시되어야 하며 이 정책에 대해 아무 작업도 수행할 필요가 없습니다.

4. 해당 정책 외의 다른 정책이 나열될 경우 먼저 이러한 정책을 역할에서 제거한 후 단계를 진행해야 합니다.

$ aws iam delete-role-policy --role-name <role-name-from-PhysicalResourceId-on-previous-command> / --policy-name <policy-name-from-previous-command>

5. 이제 역할에 연결된 관리형 정책이 있는지 확인해 보겠습니다.

$ aws iam list-attached-role-policies --role-name <role-name-from-PhysicalResourceId-on-previous-command>

6. 이전 명령의 출력에 아무 정책도 나열되지 않는 경우, 이 마지막 준비 명령을 실행하여 역할에서 정책을 분리합니다.

$ aws iam detach-role-policy --role-name <role-name-from-PhysicalResourceId-on-previous-command> / --policy-arn <ARN-of-policy-discovered-in-previous-command>

7. 이제 스택을 삭제하여 연결된 리소스를 모두 삭제할 수 있습니다. 2단계에서 검색한 스택 이름을 --stack-name으로 전달합니다.

$ aws cloudformation delete-stack --stack-name aws-serverless-repository-MyLambdaCreationStack

AWS CloudFormation 은 이 명령을 실행한 후 바로 IAM 역할과 Lambda 교체 함수를 삭제합니다.

128

Page 135: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서VPC 엔드포인트를 통해 Secrets Manager에 연결

VPC 엔드포인트로 Secrets Manager사용하기

다음 단원에서는 이러한 작업을 설명합니다.

• Secrets Manager 및 VPC 엔드포인트 연결• Secrets Manager VPC 엔드포인트 생성• Secrets Manager 엔드포인트에 대한 엔드포인트 정책 생성

VPC 엔드포인트에 대한 자세한 내용은 VPC 서비스 설명서인 VPC 엔드포인트의 문서를 참조하십시오.

주제• VPC 엔드포인트를 통해 Secrets Manager에 연결 (p. 129)• Secrets Manager VPC 프라이빗 엔드포인트 생성 (p. 130)• Secrets Manager VPC 프라이빗 엔드포인트에 연결 (p. 132)• 정책 설명에 VPC 프라이빗 엔드포인트 사용 (p. 132)• Secrets Manager VPC 엔드포인트의 엔드포인트 정책 생성 (p. 134)• Secrets Manager VPC 엔드포인트 사용 감사 (p. 135)

VPC 엔드포인트를 통해 Secrets Manager에 연결VPC를 인터넷에 연결하는 대신 VPC 내에서 구성된 프라이빗 엔드포인트를 통해 Secrets Manager에 직접연결할 수 있습니다. VPC 서비스 엔드포인트를 사용하는 경우 VPC와 Secrets Manager 사이의 통신은 모두AWS 네트워크 내에서 이루어지므로 퍼블릭 인터넷에 액세스할 필요가 없습니다.

보안 Secrets Manager Amazon VPC 지원합니다.인터페이스 엔드포인트에서 제공하는AWS PrivateLink를선택합니다. 각 VPC 엔드포인트는 하나 이상의 탄력적 네트워크 인터페이스 및 VPC 서브넷의 프라이빗 IP주소로 표현됩니다.

VPC 인터페이스 엔드포인트는 NAT 디바이스, VPN 연결 또는 AWS Direts Connets 연결 없이 VPC를 직접Secrets Manager 에 연결합니다. VPC 인스턴스는 Secrets Manager 와 통신하는 데 퍼블릭 IP 주소를 필요로 하지 않습니다.

Lambda 순환 함수가 프라이빗 엔드포인트를 찾는 경우 다음 단계 중 하나를 수행하십시오.

• 에서 VPC 엔드포인트를 수동으로 지정할 수 있습니다.Secrets Manager API 작업및AWS CLI 명령를선택합니다. 예를 들어 다음 명령은endpoint-url파라미터를 사용하여 AWS CLI 명령에서 보안 SecretsManager 대한 VPC 엔드포인트를 지정할 수 있습니다.

$ aws secretsmanager list-secrets --endpoint-url https://vpce-1234a5678b9012c-12345678.secretsmanager.us-west-2.vpce.amazonaws.com

• VPC 프라이빗 엔드포인트에 대해 프라이빗 DNS 호스트 이름을 활성화하면 엔드포인트 URL을 지정할 필요가 없습니다. Secrets Manager CLI 및 SDK가 기본적으로 사용하는 표준 암호 관리자 DNS 호스트 이름(https://secretsmanager.<region>.amazonaws.com) 가 자동으로 VPC 엔드포인트로 확인됩니다.

129

Page 136: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Secrets Manager VPC 프라이빗 엔드포인트 생성

AWS CloudTrail 로그를 사용하면 VPC 엔드포인트를 통해 보안 암호 사용을 감사할 수도 있습니다. 또한IAM 및 보안 암호 리소스 기반 정책에 이러한 조건을 사용하면 지정된 VPC 또는 VPC 엔드포인트에서 시작하지 않은 요청에 대한 액세스를 거부할 수 있습니다.

Note

VPC 엔드포인트를 기반으로 IAM 및 키 정책을 생성할 경우 주의하십시오. 정책 설명에서 특정VPC 또는 VPC 엔드포인트의 요청을 요구하는 경우, 사용자를 대신하여 보안 암호와 상호 작용하는 다른 AWS 서비스의 요청은 실패할 수 있습니다. 도움말은 Secrets Manager 권한으로 정책에서VPC 엔드포인트 조건 사용 (p. 183)를 참조하십시오.

Regions

Secrets Manager 는 모든 AWS 리전에서 VPC 엔드포인트를 지원합니다.Amazon VPC및보안 관리자를 사용할 수 있습니다.

Secrets Manager VPC 프라이빗 엔드포인트 생성Secrets Manager VPC 프라이빗 엔드포인트를 생성하려면

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

Using the AWS Management Console

1. https://console.aws.amazon.com/vpc/에서 Amazon VPC 콘솔을 엽니다.2. 탐색 모음에서 리전 선택기를 사용하여 리전을 선택합니다.3. 탐색 창에서 [Endpoints]를 선택합니다. 기본 창에서 엔드포인트 생성을 선택합니다.4. [Service category]에서 [AWS services]를 선택합니다.5. 에서서비스 이름목록에서 리전의 Secrets Manager 인터페이스 엔드포인트 항목을 선택합

니다. 예를 들어 미국 동부(버지니아 북부) 리전에서 항목 이름은 com.amazonaws.us-east-1.secretsmanager입니다.

6. VPC에서, VPC를 선택합니다.7. 서브넷에서 포함하고자 하는 각 가용 영역의 서브넷을 선택합니다.

VPC 엔드포인트는 여러 가용 영역을 아우를 수 있습니다. AWS에서 선택한 각 서브넷에 VPC 엔드포인트에 대한 탄력적 네트워크 인터페이스를 생성합니다. 각 네트워크 인터페이스에는 DNS 호스트 이름과 프라이빗 IP 주소가 있습니다.

8. 기본적으로 AWS 는프라이빗 DNS 이름 활성화옵션을 사용하면 표준 Secrets Manager DNS 호스트 이름 (https://secretsmanager.<region>.amazonaws.com) 가 자동으로 VPC 엔드포인트로 확인됩니다. 이 옵션을 선택하면 VPC 엔드포인트를 더 쉽게 사용할 수 있습니다. SecretsManager CLI 및 SDK는 기본적으로 표준 DNS 호스트 이름을 사용하므로 애플리케이션 및 명령에VPC 엔드포인트 URL을 지정할 필요가 없습니다.

이 기능은 VPC의 enableDnsHostnames 및 enableDnsSupport 속성을 true(기본값)로 설정한 경우에만 작동합니다. 이러한 속성을 설정하려면 VPC에 대한 DNS 지원을 업데이트합니다.

9. [Security group]에서 보안 그룹을 선택하거나 새로 만듭니다.

보안 그룹을 사용하면 엔드포인트에 대한 액세스를 제어하므로 방화벽을 사용하는 것과 마찬가지입니다.

10. [Create endpoint]를 선택합니다.

결과에는 VPC 엔드포인트 ID와 VPC 엔드포인트에 연결하는 데 사용하는 DNS 이름을 포함하여 VPC엔드포인트가 표시됩니다.

130

Page 137: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Secrets Manager VPC 프라이빗 엔드포인트 생성

또한 Amazon VPC 도구를 사용하여 엔드포인트를 보고 관리할 수 있습니다. 여기에는 엔드포인트에 대한 알림 생성, 엔드포인트 속성 변경, 엔드포인트 삭제 등이 포함됩니다. 자세한 내용은 인터페이스 VPC엔드포인트를 참조하십시오.

Using the AWS CLI or SDK Operations

다음을 수행할 수 있습니다.VPC-끝점 만들기명령을 사용하여 Secrets Manager 연결하는 VPC 엔드포인트를 생성합니다.

interface를 VPC 엔드포인트 유형으로 사용해야 합니다. 또한 VPC가 위치한 리전 및secretsmanager가 포함된 서비스 이름 값을 사용하십시오.

이 명령은 VPC 기본값이 true이기 때문에 PrivateDnsNames 파라미터를 포함하지 않습니다. 이 옵션을 비활성화하기 위해 false 값의 파라미터를 포함할 수 있습니다. 프라이빗 DNS 이름은 VPC의enableDnsHostnames 및 enableDnsSupport 속성이 true로 설정된 경우에만 사용할 수 있습니다.이러한 속성을 설정하려면 ModifyVpcAttribute API를 사용합니다.

다음 다이어그램은 명령의 일반 구문을 보여줍니다.

aws ec2 create-vpc-endpoint --vpc-id <vpc id> \ --vpc-endpoint-type Interface \ --service-name com.amazonaws.<region>.secretsmanager \ --subnet-ids <subnet id> \ --security-group-id <security group id>

예를 들어, 다음 명령은 us-west-2 리전에 있는 VPC ID vpc-1a2b3c4d로 VPC에 VPC 엔드포인트를만듭니다. 여기에서는 가용 영역을 나타내기 위해 서브넷 ID 하나만 지정하지만, 더 많이 지정할 수 있습니다. VPC 엔드포인트에는 보안 그룹 ID가 필요합니다.

출력에는 새 VPC 엔드포인트에 연결하는 데 사용할 수 있는 VPC 엔드포인트 ID와 DNS 이름이 포함됩니다.

$ aws ec2 create-vpc-endpoint --vpc-id vpc-1a2b3c4d \ --vpc-endpoint-type Interface \ --service-name com.amazonaws.us-west-2.secretsmanager \ --subnet-ids subnet-e5f6a7b8c9 \ --security-group-id sg-1a2b3c4d{ "VpcEndpoint": { "PolicyDocument": "{\n \"Statement\": [\n {\n \"Action\": \"*\", \n \"Effect\": \"Allow\", \n \"Principal\": \"*\", \n \"Resource\": \"*\"\n }\n ]\n}", "VpcId": "vpc-1a2b3c4d", "NetworkInterfaceIds": [ "eni-abcdef12" ], "SubnetIds": [ "subnet-e5f6a7b8c9" ], "PrivateDnsEnabled": true, "State": "pending", "ServiceName": "com.amazonaws.us-west-2.secretsmanager", "RouteTableIds": [], "Groups": [ { "GroupName": "default", "GroupId": "sg-1a2b3c4d" } ], "VpcEndpointId": "vpce-1234a5678b9012c", "VpcEndpointType": "Interface", "CreationTimestamp": "2018-06-12T20:14:41.240Z",

131

Page 138: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Secrets Manager VPC 프라이빗 엔드포인트에 연결

"DnsEntries": [ { "HostedZoneId": "Z7HUB22UULQXV", "DnsName": "vpce-1234a5678b9012c-12345678.secretsmanager.us-west-2.vpce.amazonaws.com" }, { "HostedZoneId": "Z7HUB22UULQXV", "DnsName": "vpce-1234a5678b9012c-12345678-us-west-2a.secretsmanager.us-west-2.vpce.amazonaws.com" }, { "HostedZoneId": "Z1K56Z6FNPJRR", "DnsName": "secretsmanager.us-west-2.amazonaws.com" } ] }}

Secrets Manager VPC 프라이빗 엔드포인트에 연결기본적으로 VPC는 VPC 프라이빗 엔드포인트가 생성되면 프라이빗 DNS 이름을 자동으로 활성화하므로 해당 리전의 표준 엔드포인트 DNS 이름을 사용하는 것 이외에 아무것도 수행할 필요가 없습니다. 엔드포인트DNS 이름이 VPC 내의 해당 엔드포인트로 자동으로 확인됩니다.

https://secretsmanager.<region>.amazonaws.com

AWS CLI와 SDK는 기본적으로 이 호스트 이름을 사용하므로 스크립트 및 애플리케이션의 내용을 변경하지않고 VPC 엔드포인트를 사용할 수 있습니다.

프라이빗 DNS 이름을 활성화하지 않은 경우에도 전체 DNS 이름을 사용하여 엔드포인트에 계속 연결할 수있습니다.

예를 들어 이 list-secrets 명령은 endpoint-url 파라미터를 사용해 VPC 프라이빗 엔드포인트를 지정합니다. 이러한 명령을 사용하려면 VPC 프라이빗 엔드포인트 ID 예제를 본인 계정의 ID로 바꿉니다.

aws secretsmanager list-secrets --endpoint-url https://vpce-1234a5678b9012c-12345678.secretsmanager.us-west-2.vpce.amazonaws.com

정책 설명에 VPC 프라이빗 엔드포인트 사용IAM 정책과 Secrets Manager 보안 암호 정책을 사용하여 보안 암호에 대한 액세스를 제어할 수 있습니다. 전역 조건 키를 사용해 이러한 정책이 요청의 VPC 또는 VPC 엔드포인트에 기반하도록 제한할 수도 있습니다.

• aws:sourceVpce 조건 키를 사용해 VPC 엔드포인트를 기반으로 보안 암호에 대한 액세스를 부여하거나제한합니다.

• aws:sourceVpc 조건 키를 사용해 프라이빗 엔드포인트를 호스팅하는 VPC를 기반으로 보안 암호에 대한 액세스를 부여하거나 제한합니다.

Note

VPC 엔드포인트를 기반으로 IAM 및 보안 암호 정책을 생성할 경우 주의하십시오. 정책 설명에서특정 VPC 또는 VPC 엔드포인트의 요청을 요구하는 경우, 사용자를 대신하여 보안 암호에 액세스

132

Page 139: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서정책 설명에 VPC 프라이빗 엔드포인트 사용

하는 다른 AWS 서비스의 요청은 실패할 수 있습니다. 자세한 내용은 Secrets Manager 권한으로 정책에서 VPC 엔드포인트 조건 사용 (p. 183) 단원을 참조하세요.또한,aws:sourceIP조건 키는 요청이 Amazon VPC 엔드포인트에서 이루어지는 경우 유효하지않습니다. 요청을 VPC 엔드포인트로 제한하려면 aws:sourceVpce 또는 aws:sourceVpc 조건 키를 사용합니다. 자세한 내용은 단원을 참조하십시오.VPC 엔드포인트 - 엔드포인트 사용 제어의Amazon VPC 사용 설명서를 선택합니다.

예를 들어 다음 샘플 보안 암호 정책을 사용하면 요청이 지정된 VPC 엔드포인트를 통해 이루어질 때만 사용자가 Secrets Manager 작업을 수행할 수 있습니다.

Secrets Manager 요청을 전송하면 Secrets Manager는 요청에 있는 VPC 엔드포인트 ID를aws:sourceVpce조건 키 값을 반환합니다. 두 값이 일치하지 않는 경우 Secrets Manager 는 요청을 거부합니다.

이와 같은 정책을 사용하려면 자리 표시자 AWS 계정 ID 및 VPC 엔드포인트 ID를 계정에 유효한 값으로 바꿉니다.

{ "Id": "example-policy-1", "Version": "2012-10-17", "Statement": [ { "Sid": "EnableSecretsManagerpermissions", "Effect": "Allow", "Principal": {"AWS":["123456789012"]}, "Action": ["secretsmanager:*"], "Resource": "*" }, { "Sid": "RestrictGetSecretValueoperation", "Effect": "Deny", "Principal": "*", "Action": ["secretsmanager:GetSecretValue"], "Resource": "*", "Condition": { "StringNotEquals": { "aws:sourceVpce": "vpce-1234a5678b9012c" } } }

]}

또한 aws:sourceVpc 조건 키를 사용하여 VPC 엔드포인트가 있는 VPC를 기반으로 보안 암호에 대한 액세스를 제한할 수 있습니다.

다음 샘플 보안 암호 정책은 명령이 vpc-12345678에서 이루어진 경우에만 보안 암호를 생성 및 관리하는명령을 허용합니다. 또한 정책에서는 요청이 vpc-2b2b2b2b에서 이루어진 경우에만 보안 암호와 암호화된값에 액세스하는 작업을 허용합니다. 애플리케이션이 하나의 VPC에서 실행 중이지만 관리 용도로 두 번째격리된 VPC를 사용하는 경우, 이와 같은 정책을 사용할 수 있습니다.

이와 같은 정책을 사용하려면 자리 표시자 AWS 계정 ID 및 VPC 엔드포인트 ID를 계정에 유효한 값으로 바꿉니다.

{ "Id": "example-policy-2", "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAdministrativeActionsfromONLYvpc-12345678", "Effect": "Allow",

133

Page 140: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Secrets Manager VPC 엔드포인트의 엔드포인트 정책 생성

"Principal": {"AWS": "123456789012"}, "Action": [ "secretsmanager:Create*", "secretsmanager:Put*", "secretsmanager:Update*", "secretsmanager:Delete*","secretsmanager:Restore*", "secretsmanager:RotateSecret","secretsmanager:CancelRotate*", "secretsmanager:TagResource","secretsmanager:UntagResource" ], "Resource": "*", "Condition": { "StringEquals": { "aws:sourceVpc": "vpc-12345678" } } }, { "Sid": "AllowSecretValueAccessfromONLYvpc-2b2b2b2b", "Effect": "Allow", "Principal": {"AWS": "111122223333"}, "Action": ["secretsmanager:GetSecretValue"], "Resource": "*", "Condition": { "StringEquals": { "aws:sourceVpc": "vpc-2b2b2b2b" } } }, { "Sid": "AllowReadActionsEverywhere", "Effect": "Allow", "Principal": {"AWS": "111122223333"}, "Action": [ "secretsmanager:Describe*","secretsmanager:List*","kms:GetRandomPassword" ], "Resource": "*", } ]}

Secrets Manager VPC 엔드포인트의 엔드포인트 정책 생성

Secrets Manager VPC 엔드포인트를 생성하고 나면 엔드포인트의 보안 암호 관련 활동을 제어하도록 엔드포인트 정책을 연결할 수 있습니다. 예를 들어 엔드포인트 정책을 연결하여 수행된 Secrets Manager 작업,암호에 대해 수행되는 작업, 이러한 작업을 수행하는 IAM 사용자 또는 역할, VPC 엔드포인트를 통해 액세스하는 계정을 정의할 수 있습니다. 엔드포인트 정책을 지원하는 AWS 서비스의 목록을 비롯한 엔드포인트 정책에 대한 자세한 내용은 단원을 참조하십시오.VPC 엔드포인트 정책 사용를 선택합니다.

Note

AWS는 AWS 서비스 간에 VPC 엔드포인트를 공유하지 않습니다. Secrets Manager 및 S3 같은 여러 AWS 서비스에 대해 VPC 엔드포인트를 사용하는 경우 각 엔드포인트에 별도의 정책을 연결해야합니다.

예: Secrets Manager 엔드포인트에 대한 액세스 활성화

다음 예에서는 123456789012 계정의 모든 사용자와 역할에 액세스 권한을 부여합니다.

{

134

Page 141: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Secrets Manager VPC 엔드포인트 사용 감사

"Statement": [ { "Sid": "AccessSpecificAccount", "Principal": {"AWS": "123456789012"}, "Action": "secretsmanager:*", "Effect": "Allow", "Resource": "*" } ] }

예: Secrets Manager 엔드포인트에서 단일 암호에 대한 액세스 활성화

다음 예에서는 액세스 권한을 특정 보안 암호로 제한합니다.

{ "Statement": [ { "Principal": "*", "Action": "secretsmanager:*", "Effect": "Allow", "Resource": [ "arn:aws:secretsmanager:us-west:123456789012:secret:a_specific_secret_name-a1b2c3" ] } ] }

Secrets Manager VPC 엔드포인트 사용 감사Secrets Manager 요청에 VPC 엔드포인트를 사용하는 경우 VPC 엔드포인트 ID가AWS CloudTrail 로그 (p. 137)요청을 기록하는 항목입니다. Secrets Manager VPC 엔드포인트의 사용을 감사하는 데 엔드포인트 ID를 사용할 수 있습니다.

예를 들어, 이 샘플 로그 항목은 VPC 엔드포인트를 사용한 GenerateDataKey 요청을 기록합니다. 이 예제에서 vpcEndpointId 필드는 로그 항목의 끝에 표시됩니다. 간결하게 나타내기 위해 예제에서 관련 없는많은 부분을 생략했습니다.

{ "eventVersion":"1.05", "userIdentity": { "type": "IAMUser", "arn": "arn:aws:iam::123456789012:user/Anika", "accountId": "123456789012", "userName": "Anika" }, "eventTime":"2018-01-16T05:46:57Z", "eventSource":"secretsmanager.amazonaws.com", "eventName":"GetSecretValue", "awsRegion":"us-west-2", "sourceIPAddress":"172.01.01.001", "userAgent":"aws-cli/1.14.23 Python/2.7.12 Linux/4.9.75-25.55.amzn1.x86_64 botocore/1.8.27", "requestID":"EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE",

135

Page 142: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Secrets Manager VPC 엔드포인트 사용 감사

"eventID":"EXAMPLE2-90ab-cdef-fedc-ba987EXAMPLE", "readOnly":true, "eventType":"AwsApiCall", "recipientAccountId":"123456789012", "vpcEndpointId": "vpce-1234a5678b9012c" }

136

Page 143: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서AWS AWS CloudTrail 을 사용하여

AWS Secrets Manager API 호출 로깅

AWS Secrets Manager 보안 암호 사용

보안 암호를 모니터링하여 보안 암호의 사용 및 보안 암호에 대한 모든 변경 사항이 기록되고 있는지 확인하는 것이 가장 좋습니다. 이렇게 하면 예기치 않은 사용 또는 변경 사항을 검토하고 원치 않는 변경 사항을 롤백할 수 있습니다. AWS Secrets Manager 는 현재 2개의 AWS 서비스를 지원합니다. 이 서비스들은 조직 및작업을 모니터링할 수 있도록 해줍니다.

주제• AWS AWS CloudTrail 을 사용하여 AWS Secrets Manager API 호출 로깅 (p. 137)• Amazon CloudWatch Events (p. 140)

AWS AWS CloudTrail 을 사용하여 AWS SecretsManager API 호출 로깅

AWS Secrets Manager 는 보안 Secrets Manager 관리자에서 사용자, 역할, AWS 서비스가 수행한 작업의레코드를 제공하는 서비스인 AWS CloudTrail과 통합됩니다. CloudTrail 은 보안 암호 관리자 콘솔의 호출및 보안 Secrets Manager API에 대한 코드 호출을 포함하여 보안 암호 관리자에 대한 모든 API 호출을 이벤트로 캡처합니다. 추적을 생성하면 Secrets Manager 이벤트를 포함한 CloudTrail 이벤트를 지속적으로Amazon S3 버킷에 배포할 수 있습니다. 추적을 구성하지 않은 경우에도 CloudTrail 콘솔의 Event history(이벤트 기록)에서 최신 이벤트를 볼 수 있습니다. CloudTrail 에서 수집하는 정보를 사용하여 Secrets Manager에 전송된 요청, 요청의 IP 주소, 요청을 수행한 사람, 요청이 수행된 시간 및 추가 세부 정보를 확인할 수 있습니다.

CloudTrail 에 대해 자세히 알아보려면AWS CloudTrail 사용 설명서를 선택합니다.

AWS Secrets Manager 비 API 이벤트 로깅CloudTrail 은 AWS API 호출을 로깅하는 것 이외에도 귀하의 AWS 계정에 보안 또는 규정 준수에 대한 영향을 주거나 사용자가 운영 문제를 해결하는 데 유용한 다른 관련된 이벤트를 캡처합니다. CloudTrail 은 이러한 이벤트를 비 API 서비스 이벤트로 기록합니다.

Secrets Manager 에는 세 가지 비 API 서비스 이벤트가 있습니다.

• RotationAbandoned 이벤트 - Secrets Manager 서비스가 기존 버전 보안 암호에서 AWSPENDING레이블을 제거했음을 알리는 메커니즘입니다. 보안 암호의 새 버전을 수동으로 생성하면 새 보안 암호버전으로 인해 현재 진행 중인 교체를 중단할 것을 알리는 메시지가 전송됩니다. 그 결과, 보안 SecretsManager AWSING 레이블을 제거하여 향후 순환이 성공하도록 하고 CloudTrail 이벤트를 게시하여 변경사항을 인식합니다.

• RotationStarted 이벤트 - 보안 암호 교체의 시작을 알리는 메커니즘입니다.• RotationSucceeded 이벤트 - 교체 이벤트 성공을 알리는 메커니즘입니다.• RotationFailed 이벤트 - 애플리케이션의 보안 암호 교체가 실패했음을 알리는 메커니즘입니다.• StartSecretVersionDelete이벤트 - 보안 암호 버전에 대한 삭제 시작을 알리는 메커니즘입니다.• CancelSecretVersionDelete이벤트 - 보안 암호 버전에 대한 삭제 취소를 알리는 메커니즘입니다.

137

Page 144: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서CloudTrail 의 보안 Secrets Manager 정보

• EndSecretVersionDelete이벤트 - 종료 보안 암호 버전 삭제를 알리는 메커니즘입니다.

CloudTrail 의 보안 Secrets Manager 정보AWS 계정을 생성하면 AWS는 CloudTrail 을 활성화합니다. 보안 Secrets Manager 활동이 발생하면CloudTrail 은 다른 AWS 서비스 이벤트와 함께 CloudTrail 이벤트의 활동을 기록합니다.이벤트 기록를 선택합니다. AWS 계정에서 최신 이벤트를 확인, 검색 및 다운로드할 수 있습니다. 자세한 내용은 CloudTrail 이벤트 기록으로 이벤트 보기를 참조하십시오.

Secrets Manager 의 이벤트를 포함하여 AWS 계정에 이벤트를 지속적으로 기록하려면 추적을 생성하십시오. 추적은 CloudTrail이 Amazon S3 버킷으로 로그 파일을 전송할 수 있게 해줍니다. 콘솔에서 추적을 생성하면 기본적으로 모든 리전에 추적이 적용됩니다. 추적은 AWS 파티션에 있는 모든 리전의 이벤트를 로깅하고 지정된 Amazon S3 버킷으로 로그 파일을 전송합니다. 또는 CloudTrail 로그에서 수집된 이벤트 데이터를추가 분석 및 처리하도록 다른 AWS 서비스를 구성할 수 있습니다. 자세한 내용은 다음을 참조하십시오.

• 추적 생성 개요• CloudTrail 지원 서비스 및 통합• CloudTrail에 대한 Amazon SNS 알림 구성• 여러 리전에서 CloudTrail 로그 파일 받기 및 여러 계정에서 CloudTrail 로그 파일 받기

CloudTrail 은 모든 보안 Secrets Manager 작업을 기록하고AWS Secrets Manager API 참조를 선택합니다.예를 들어, 를 호출합니다.CreateSecret,GetSecretValue및RotateSecret섹션은 CloudTrail 로그 파일에 항목을 생성합니다.

모든 이벤트 및 로그 항목에는 요청을 생성한 사용자에 대한 정보가 들어 있습니다. 자격 증명 정보를 이용하면 다음을 쉽게 판단할 수 있습니다.

• 루트 또는 IAM 사용자 자격 증명으로 요청이 이루어졌는지• 역할 또는 연합된 사용자에 대한 임시 보안 자격 증명을 사용하여 요청이 이루어졌는지• 다른 AWS 서비스를 통해 요청이 이루어졌는지

로그 파일 전달 알림의 경우 Amazon SNS 알림을 CloudTrail 하도록 를 구성할 수 있습니다. 자세한 내용은CloudTrail용 Amazon SNS 알림 구성을 참조하십시오.

또한 여러 AWS 리전 및 여러 AWS 계정의 AWS Secret Manager 로그 파일을 하나의 Amazon S3 버킷으로통합할 수도 있습니다.

자세한 내용은 단원을 참조하십시오.여러 리전에서 CloudTrail 로그 파일 수신및여러 계정에서 CloudTrail 로그 파일 수신를 선택합니다.

Secrets Manager 로그 파일 항목 검색다음과 같은 기술을 사용하여 CloudTrail 에서 개별 이벤트를 검색할 수 있습니다.

CloudTrail 로그에서 Secrets Manager 이벤트를 검색하려면

Using the AWS Management Console

CloudTrail 콘솔을 사용하여 지난 90일 이내에 발생한 이벤트를 확인할 수 있습니다.

1. 에서 CloudTrail 콘솔을 엽니다.https://console.aws.amazon.com/cloudtrail/를 선택합니다.2. 콘솔에서 이벤트가 발생한 리전을 가리키고 있는지 확인합니다. 콘솔에는 선택한 리전에서 발생한

이벤트만 표시됩니다. 오른쪽 상단 모서리에 있는 드롭다운 목록에서 리전을 선택합니다.3. 왼쪽 탐색 창에서 Event history(이벤트 기록)을 선택합니다.

138

Page 145: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서보안 Secrets Manager 로그 파일 항목 이해

4. 필터 기준 및/또는 시간 범위를 선택하면 원하는 이벤트를 찾는 데 도움이 됩니다. 예를 들어 보안Secrets Manager 이벤트를 모두 보려면속성 선택를 선택하고이벤트 소스를 선택합니다. 그런 다음이벤트 소스 입력에서 secretsmanager.amazonaws.com을 선택합니다.

5. 자세한 정보를 보려면 이벤트 옆에 있는 확장 화살표를 선택합니다. 사용 가능한 모든 정보를 보려면 이벤트 보기를 선택합니다.

Using the AWS CLI or SDK Operations

1. AWS CLI 명령을 실행할 수 있는 명령 창을 엽니다.2. 다음 예와 유사한 명령을 실행합니다. 여기서 가독성을 위해 출력은 단어 래핑으로 표시되지만 실제

출력은 표시되지 않습니다.

$ aws cloudtrail lookup-events --region us-east-1 --lookup-attributes AttributeKey=EventSource,AttributeValue=secretsmanager.amazonaws.com{ "Events": [ { "EventId": "EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE", "EventName": "CreateSecret", "EventTime": 1525106994.0, "Username": "Administrator", "Resources": [], "CloudTrailEvent": "{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"IAMUser\",\"principalId\":\"AKIAIOSFODNN7EXAMPLE\", \"arn\":\"arn:aws:iam::123456789012:user/Administrator\",\"accountId\":\"123456789012\",\"accessKeyId\":\"AKIAIOSFODNN7EXAMPLE\", \"userName\":\"Administrator\"},\"eventTime\":\"2018-04-30T16:49:54Z\",\"eventSource\":\"secretsmanager.amazonaws.com\", \"eventName\":\"CreateSecret\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"192.168.100.101\", \"userAgent\":\"<useragent string>\",\"requestParameters\":{\"name\":\"MyTestSecret\", \"clientRequestToken\":\"EXAMPLE2-90ab-cdef-fedc-ba987EXAMPLE\"},\"responseElements\":null, \"requestID\":\"EXAMPLE3-90ab-cdef-fedc-ba987EXAMPLE\",\"eventID\":\"EXAMPLE4-90ab-cdef-fedc-ba987EXAMPLE\", \"eventType\":\"AwsApiCall\",\"recipientAccountId\":\"123456789012\"}" } ]}

보안 Secrets Manager 로그 파일 항목 이해추적을 사용하면 지정된 Amazon S3 버킷에 이벤트를 로그 파일로 제공할 수 있습니다. CloudTrail 로그 파일에는 하나 이상의 로그 항목이 포함될 수 있습니다. 이벤트는 어떤 소스로부터의 단일 요청을 나타내며 요청된 작업, 작업 날짜와 시간, 요청 파라미터 등에 대한 정보가 들어 있습니다. CloudTrail 로그 파일은 퍼블릭API 호출에 대한 순서 지정된 스택 추적을 수집하지 않으므로 특정 순서로 표시되지 않습니다.

다음 예제에서는 샘플의 CloudTrail 로그 항목을 보여 줍니다.CreateSecret를 호출합니다.

{ "eventVersion": "1.05", "userIdentity": { "type": "Root", "principalId": "123456789012", "arn": "arn:aws:iam::123456789012:root", "accountId": "123456789012", "accessKeyId": "AKIAIOSFODNN7EXAMPLE",

139

Page 146: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Amazon CloudWatch Events

"userName": "myusername", "sessionContext": {"attributes": { "mfaAuthenticated": "false", "creationDate": "2018-04-03T17:43:50Z" }} }, "eventTime": "2018-04-03T17:50:55Z", "eventSource": "secretsmanager.amazonaws.com", "eventName": "CreateSecret", "awsRegion": "us-west-2", "requestParameters": { "name": "MyDatabaseSecret", "clientRequestToken": "EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE" }, "responseElements": null, "requestID": "EXAMPLE2-90ab-cdef-fedc-ba987EXAMPLE", "eventID": "EXAMPLE3-90ab-cdef-fedc-ba987EXAMPLE", "eventType": "AwsApiCall", "recipientAccountId": "123456789012"}

다음 예제에서는 샘플의 CloudTrail 로그 항목을 보여 줍니다.DeleteSecret를 호출합니다.

{ "eventVersion": "1.05", "userIdentity": { "type": "Root", "principalId": "123456789012", "arn": "arn:aws:iam::123456789012:root", "accountId": "123456789012", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "myusername", "sessionContext": {"attributes": { "mfaAuthenticated": "false", "creationDate": "2018-04-03T17:43:50Z" }} }, "eventTime": "2018-04-03T17:51:02Z", "eventSource": "secretsmanager.amazonaws.com", "eventName": "DeleteSecret", "awsRegion": "us-west-2", "requestParameters": { "recoveryWindowInDays": 30, "secretId": "MyDatabaseSecret" }, "responseElements": { "name": "MyDatabaseSecret", "deletionDate": "May 3, 2018 5:51:02 PM", "aRN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyDatabaseSecret-a1b2c3" }, "requestID": "EXAMPLE2-90ab-cdef-fedc-ba987EXAMPLE", "eventID": "EXAMPLE3-90ab-cdef-fedc-ba987EXAMPLE", "eventType": "AwsApiCall", "recipientAccountId": "123456789012"}

Amazon CloudWatch EventsSecrets Manager 는 CloudWatch 이벤트와 연동하여 조직에서 관리자 지정 작업이 발생하면 알림을 트리거합니다. 예를 들어, 이러한 작업의 민감도 때문에 관리자는 보안 암호가 삭제되거나 보안 암호가 교체될 때알림을 받으려고 할 수 있습니다. 보안 암호 버전이 삭제되도록 대기 중인 기간에 누군가 이 보안 암호 버전

140

Page 147: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서삭제하도록 예약된 보안 암호 버전 모니터링

을 사용하려고 시도한 경우 역시 알림이 필요한 경우입니다. CloudWatch 이벤트 규칙을 구성하여 이러한 작업을 찾는 다음, 생성된 이벤트를 관리자 정의 “대상”에 보내면 됩니다. 대상은 Amazon SNS 주제가 될 수 있습니다. 또한 나중에 검토할 수 있도록 이벤트를 통해 트리거되며 작업의 세부 정보를 기록하는 간단한 AWSLambda 함수를 만들 수도 있습니다.

CloudWatch Events의 구성 및 활성화 방법을 포함하여 CloudWatch Events에 대한 자세한 내용은AmazonCloudWatch Events 사용 설명서를 선택합니다.

삭제하도록 예약된 보안 암호 버전 모니터링AWS CloudTrail, Amazon CloudWatch 로그, Simple Notification Service (Amazon SNS) 조합을 이용하여 삭제 보류 중인 보안 암호 버전에 액세스하려는 모든 시도에 대해 알려주는 경보를 생성할 수 있습니다. 이러한경보로부터 알림을 받으면 보안 암호 삭제를 취소하여, 정말로 삭제할지 판단할 시간을 확보하고 싶을 수 있습니다. 조사를 통해 필요하다고 판단되면 보안 암호를 복원할 수 있습니다. 또는 사용자가 사용할 새 암호정보로 사용자를 업데이트해야 할 수 있습니다.

다음 절차에서는 알림을 받는 방법에 대해 설명합니다.GetSecretValue작업을 통해 CloudTrail 로그 파일에 특정 오류 메시지가 기록됩니다. 경보를 트리거하지 않고 보안 암호의 버전에 대해 다른 API 작업을 수행할 수 있습니다. 이 CloudWatch 경보는 오래된 자격 증명을 사용하는 사용자나 애플리케이션을 나타낼 수 있는 사용을 감지합니다.

이러한 절차를 시작하기 전, AWS 보안 암호 ManagerAPI 요청을 모니터링하려는 AWS 리전 및 계정에서CloudTrail 을 설정해 놓아야 합니다. 지침은 을 참조하십시오.트레일 생성의AWS CloudTrail 사용 설명서를선택합니다.

단계• 파트 1: CloudTrail 로그 파일을 CloudWatch 로그에 전송하도록 구성하려면 (p. 141)• 파트 2: CloudWatch 경보 생성 (p. 142)• 파트 3: CloudWatch 모니터링 (p. 142)

파트 1: CloudTrail 로그 파일을 CloudWatch 로그에 전송하도록 구성하려면CloudTrail 로그 파일을 CloudWatch CloudWatch Logs 하도록 구성해야 합니다. 이렇게 하면 에서 삭제 보류중인 보안 암호 버전을 검색하려는 CloudWatch Logs 가 보안 암호 관리자 API 요청을 모니터링할 수 있습니다.

CloudTrail 로그 파일을 CloudWatch Logs 하도록 구성하려면

1. 에서 CloudTrail 콘솔을 엽니다.https://console.aws.amazon.com/cloudtrail/를 선택합니다.2. 상단 탐색 모음에서 보안 암호를 모니터링할 AWS 리전을 선택합니다.3. 왼쪽 탐색 창에서추적를 선택한 후 CloudWatch 에 대해 구성할 추적 이름을 선택합니다.4. 에서추적 구성페이지에서 아래로 스크롤하여CloudWatch Logs(CloudWatch 로그)섹션을 선택한 후 편

집 아이콘 ( ).5. New or existing log group(새 또는 기존 로그 그룹)에 로그 그룹 이름을 입력합니다(예: CloudTrail/

MyCloudWatchLogGroup).6. 용IAM 역할라는 기본 역할을 사용할 수 있습니다.클라우드 트래일_클라우드 감시 로그_역할를 선택합

니다. 이 역할에는 CloudTrail 이벤트를 로그 그룹으로 전달하는 필수 권한과 함께 기본 역할 정책이 있습니다.

7. 계속을 선택하여 구성을 저장합니다.8. 에서AWS CloudTrail 은 귀하의 계정에서 API 활동과 관련된 CloudTrail 이벤트를 CloudWatch Logs 그

룹으로 전송합니다.페이지에서허용를 선택합니다.

141

Page 148: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서삭제하도록 예약된 보안 암호 버전 모니터링

파트 2: CloudWatch 경보 생성Secrets Manager 때 알림을 받으려면GetSecretValue삭제 보류 중인 보안 암호 버전에 액세스하려고 하는 API 작업 요청 발생 시 CloudWatch 경보를 생성하고 알림을 구성해야 합니다.

삭제 보류 중인 보안 암호 버전의 사용을 모니터링하는 CloudWatch 경보 생성

1. CloudWatch 콘솔에 로그인합니다.https://console.aws.amazon.com/cloudwatch/를 선택합니다.2. 상단 탐색 모음에서 보안 암호를 모니터링하려는 AWS 리전을 선택합니다.3. 왼쪽 탐색 창에서 Logs를 선택합니다.4. 로그 그룹 목록에서 CloudTrail/MyCloudWatchLogGroup처럼 이전 절차에서 생성한 로그 그룹 옆의 확

인란을 선택합니다. 그런 다음 [Create Metric Filter]를 선택합니다.5. [Filter Pattern]에 다음을 입력하거나 붙여 넣습니다.

{ $.eventName = "GetSecretValue" && $.errorMessage = "*secret because it was marked for deletion*" }

[Assign Metric]을 선택합니다.6. [Create Metric Filter and Assign a Metric] 페이지에서 다음을 수행합니다.

a. 지표 네임스페이스에 CloudTrailLogMetrics를 입력합니다.b. 지표 이름에 AttemptsToAccessDeletedSecrets를 입력합니다.c. 고급 지표 설정 표시를 선택한 후 필요에 따라 지표 값에 1을 입력합니다.d. [Create Filter]를 선택합니다.

7. 필터 상자에서 [Create Alarm]을 선택합니다.8. [Create Alarm] 창에서 다음과 같이 실행합니다.

a. 이름에 AttemptsToAccessDeletedSecretsAlarm을 입력합니다.b. 다음 경우 항상:의 결과 값:에서 >=을 선택하고 1을 입력합니다.c. [Send notification to:] 옆에서 다음 중 하나를 실시합니다.

• Amazon SNS 주제를 생성해 사용하려면새 목록를 클릭한 다음 새 주제 이름을 입력합니다.[Email list:]에 이메일 주소를 하나 이상 입력합니다. 쉼표로 구분하여 두 개 이상의 이메일 주소를입력할 수 있습니다.

• 기존 Amazon SNS 주제를 사용하려면 사용할 주제의 이름을 선택합니다. 목록이 없으면 목록 선택을 선택합니다.

d. [Create Alarm]을 선택합니다.

파트 3: CloudWatch 모니터링경보 생성이 완료되었습니다. 경보를 테스트하려면 보안 암호 버전을 생성한 다음 경보의 삭제를 예약합니다. 그런 다음 보안 암호 값을 검색해 봅니다. 잠시 후 경보에 구성한 주소로 이메일이 수신됩니다. 삭제하도록 예정된 보안 암호 버전 사용에 대해 알려줍니다.

142

Page 149: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서AWS CloudFormation 을 사용하여 비밀의 생성 자동화

AWS 보안 관리자와 통합된 AWS 서비스

AWS Secrets Manager 는 다른 AWS 서비스와 함께 작동하여 비즈니스 문제에 유용한 추가 솔루션을 제공합니다. 이 항목에서는 보안 Secrets Manager 사용하여 기능을 추가하는 서비스에 대해 살펴보거나 보안 암호 Manager에서 작업을 수행하는 데 사용하는 서비스에 대해 살펴봅니다.

Topics

• AWS CloudFormation 을 사용하여 비밀의 생성 자동화 (p. 147)• AWS Config 를 사용하여 Secrets Manager 비밀 모니터링 (p. 153)• AWS Identity and Access Management (IAM) 를 사용하여 보안 암호 보호 (p. 144)• AWS CloudTrail 및 아마존 클라우드워치로 비밀 모니터링 (p. 144)• AWS KMS 로 비밀 암호화 (p. 144)• 파라미터 스토어 API로 보안 암호 검색 (p. 145)• Amazon Elastic Secrets Manager tainer Service 통합 (p. 145)• AWS Secrets Manager와 AWS Fargate 의 통합 (p. 145)• AWS IoT Greengrass와 보안 Secrets Manager 통합 (p. 145)• Secrets Manager SageMaker 리포지토리 자격 증명 관리 (p. 146)• Security Hub 사용 하 여 보안 모범 사례 Secrets Manager (p. 146)• Secrets Manager 사용하여 AWS CodeBuild 레지스트리 자격 증명 저장 (p. 146)• Secrets Manager 사용하여 Amazon EMR 레지스트리 자격 증명 저장 (p. 147)• Secrets Manager 리소스 정책과 젤 코바 통합 (p. 147)

AWS CloudFormation 을 사용하여 비밀의 생성 자동화

Secrets Manager AWS CloudFormation 을 지원하며 스택 템플릿 내에서 암호를 정의하고 참조할 수 있습니다. SecreSecrets Manager 는 보안 암호를 생성하고 자격 증명이 저장된 데이터베이스나 서비스에 연결할수 있도록 몇 가지 AWS CloudFormation 리소스 유형을 정의합니다. 새 데이터베이스에 마스터 사용자 및 암호를 정의할 때 보안 암호에서 사용자 이름과 암호를 검색하는 것과 같이 템플릿의 다른 부분에서 보안 암호의 요소를 참조할 수 있습니다. 리소스 기반 정책을 생성하여 보안 암호에 연결할 수 있습니다. 또한 템플릿에 Lambda 함수를 정의하고 이 함수를 회전 Lambda 함수로 새 보안 암호와 연결하여 교체를 구성할 수도있습니다. 자세한 내용과 종합적인 예제는 AWS CloudFormation 에서 보안 생성 자동화 (p. 147) 단원을 참조하십시오.

AWS Config를 사용하여 보안 암호 모니터링AWS Secrets Manager는 AWS Config와 통합되며, 이를 통해 Secrets Manager의 보안 암호 변경 사항을 더욱 쉽게 추적할 수 있습니다. 두 가지 관리형 AWS Config 를 추가로 사용할 수 있습니다규칙를 사용하여 보안 암호 관리 모범 사례에 대한 조직의 내부 지침을 정의할 수 있습니다. 또한 보안 규칙을 준수하지 않는 보안 암호를 신속하게 식별하는 것은 물론 Amazon SNS에서 보안 암호의 구성 변경에 대한 알림을 받을 수 있습니다. 예를 들어, 순환하도록 구성되지 않은 보안 암호 목록에 대한 SNS 알림을 받는다면 보안 암호 순환과 관련된 보안 모범 사례를 구현할 수 있게 됩니다.

143

Page 150: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서AWS Identity and Access Management

(IAM) 를 사용하여 보안 암호 보호

AWS Config 집계자 기능을 활용하여 전체 조직의 모든 계정 및 지역에 걸쳐 보안 암호 목록을 보고 적합성을확인할 수 있으며, 이를 통해 조직 전체에 대한 보안 암호 관리의 모범 사례를 한 곳에서 만들 수 있습니다.

이 기능에 대해 자세히 알아보려면 AWS Config 를 사용하여 Secrets Manager 비밀 모니터링 (p. 153) 단원을 참조하십시오.

AWS Identity and Access Management (IAM) 를 사용하여 보안 암호 보호

SecreSecrets Manager 는 IAM을 사용하여 보안 암호에 대한 액세스를 보호합니다. IAM은 다음을 제공합니다.

• 인증— 개인 요청의 자격 증명을 확인합니다. Secrets Manager 는 암호, 액세스 키 및 멀티 팩터 인증(MFA) 토큰과 함께 로그인 프로세스를 사용하여 사용자를 식별함을 입증합니다.

• 승인— 승인된 개인만 AWS 리소스 (예: 보안 암호) 에 대한 작업을 수행할 수 있습니다. 그러면 특정 보안암호에 대한 쓰기 권한을 특정 사용자에게 부여하고, 다른 보안 암호에 대한 읽기 전용 권한을 다른 사용자에게 부여할 수 있습니다.

IAM을 사용하여 보안 암호에 대한 액세스 권한을 보호하는 방법에 대한 자세한 내용은 단원을 참조하십시오.AWS Secrets Manager 대한 인증 및 액세스 제어 (p. 34)단원을 참조하십시오. IAM에 대한 전체 내용은단원을 참조하십시오.IAM 사용 설명서를 선택합니다.

AWS CloudTrail 및 아마존 클라우드워치로 비밀 모니터링

당신은 당신의 비밀과 관련된 활동을 몬터 CloudTrail 과 CloudWatch를 사용할 수 있습니다. CloudTrail 은모든 AWS 서비스에서 AWS 리소스에 대한 API 활동을 캡처하고 해당 활동을 Amazon S3 버킷의 로그 파일에 기록합니다. CloudWatch 를 사용하면 규칙을 생성하여 해당 로그 파일을 모니터링하고 관심 있는 활동이발생할 때 작업을 트리거할 수 있습니다. 예를 들어, 다른 사용자가 새 보안 암호를 생성하거나 보안 암호가교체될 경우 텍스트 메시지 알림을 받을 수 있습니다. 클라이언트가 현재 버전 대신 이전 버전의 보안 암호를사용하려고 시도할 때 표시할 알림을 생성할 수도 있습니다. 그러면 문제를 해결하는 데 도움이 됩니다.

자세한 내용은 이 가이드의 AWS Secrets Manager 보안 암호 사용 (p. 137)을 참조하십시오. CloudWatch에 대한 전체 내용은 단원을 참조하십시오.Amazon CloudWatch 사용 설명서를 선택합니다. CloudWatchEvents에 대한 전체 내용은 단원을 참조하십시오.Amazon CloudWatch Events 사용 설명서를 선택합니다.

AWS KMS 로 비밀 암호화Secrets Manager 는 신뢰할 수 있는 업계 표준을 사용합니다.AES (AES) 암호화 알고리즘 (FIPS 197)를 사용하여 보안 암호를 암호화합니다. 또한 보안 Secrets Manager AWS Key Management Service (AWS KMS)에서 제공하는 암호화 키를 사용하여봉투 암호화보안 암호 값. 보안 Secrets Manager 지정된 AWS KMS 고객 마스터 키 (CMK) 를 사용하여 새 보안 암호 버전을 생성할 때데이터 키를 선택합니다. 이 데이터 키는 256비트 대칭 AES 키로 구성됩니다. Secrets Manager 는 데이터 키의 일반 텍스트 및 암호화된 복사본을 모두수신합니다. SecreSecrets Manager 는 일반 텍스트 데이터 키를 사용하여 보안 암호 값을 암호화한 다음 보안 암호 버전의 메타데이터에 암호화된 데이터 키를 저장합니다. 나중에 보안 암호 값을 검색하도록 보안Secrets Manager 요청을 전송하면 보안 암호 관리자는 먼저 메타데이터에서 암호화된 데이터 키를 검색한다음 에 연결된 CMK를 사용하여 데이터 키를 복호화하도록 AWS KMS 에 요청합니다. AWS KMS 는 복호화된 데이터 키를 사용해 보안 암호 값을 복호화하며, 키를 암호화되지 않은 상태로 저장하지 않고, 키를 메모리에서 키를 제거합니다.

144

Page 151: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서파라미터 스토어 API로 보안 암호 검색

자세한 내용은 단원을 참조하십시오.AWS Secrets Manager AWS KMS 사용하는 방법의AWS KeyManagement Service 개발자 가이드를 선택합니다.

파라미터 스토어 API로 보안 암호 검색AWS Systems Manager Parameter Store 구성 데이터 관리 및 암호 관리를 위한 안전한 계층적 스토리지를제공합니다. 암호, 데이터베이스 문자열, 라이선스 코드와 같은 데이터를 파라미터 값으로 저장할 수 있습니다. 하지만 파라미터 스토어에서는 저장된 보안 암호에 대한 자동 교체 서비스를 제공하지 않습니다. 대신 파라미터 스토어를 사용하여 보안 암호 Secrets Manager 보안 암호를 저장한 다음 보안 암호를 파라미터 스토어 파라미터로 참조할 수 있습니다.

Secrets Manager 사용하여 매개 변수 저장소를 구성할 때secret-id파라미터 스토어에는 이름 문자열 앞에 슬래시 (/) 가 필요합니다.

자세한 내용은 단원을 참조하십시오.매개 변수 저장소 매개 변수에서 AWS Secrets Manager 암호 참조의AWS Systems Manager 사용 설명서를 선택합니다.

Amazon Elastic Secrets Manager tainer Service 통합

Amazon ECS를 사용하면 Secrets Manager 보안 암호에 중요한 데이터를 저장한 다음 컨테이너 정의에서참조하여 컨테이너에 중요한 데이터를 주입할 수 있습니다. Secrets Manager 보안 암호에 저장된 중요한 데이터는 환경 변수 또는 로그 구성의 일부로 컨테이너에 노출될 수 있습니다.

통합에 대한 자세한 내용은 중요한 데이터 보안 암호 지정을 참조하십시오.

자습서: 보안 Secrets Manager 사용하여 중요한 데이터 지정

AWS Secrets Manager와 AWS Fargate 의 통합AWS Fargate 는 Amazon ECS와 함께 사용하여 Amazon ECS 인스턴스의 서버나 클러스터를 관리할 필요없이 컨테이너를 실행할 수 있는 기술입니다. AWS Fargate 를 사용하면 더 이상 컨테이너를 실행하기 위해가상 머신의 클러스터를 프로비저닝, 구성 또는 조정할 필요가 없습니다. 따라서 서버 유형을 선택하거나, 클러스터를 조정할 시점을 결정하거나, 클러스터 패킹을 최적화할 필요가 없습니다.

Fargate 시작 유형 또는 Fargate 용량 공급자를 사용하여 Amazon Amazon Amazon ECS 작업과 서비스를실행할 때는 애플리케이션을 컨테이너에 패키징하고, CPU 및 메모리 요구 사항을 지정한 다음, 네트워킹 및IAM 정책을 정의하고, 애플리케이션을 시작합니다. 각 Fargate 작업에는 자체 격리 경계가 있으며 다른 작업과 기본 커널, CPU 리소스, 메모리 리소스 또는 탄력적 네트워크 인터페이스를 공유하지 않습니다.

보안 암호 Secrets Manager 보안 암호 검색을 허용하도록 Fargate 인터페이스를 구성할 수 있습니다. 자세한 내용은 Fargate 작업 네트워킹을 참조하십시오.

AWS IoT Greengrass와 보안 Secrets Manager 통합AWS IoT Greengrass 를 사용하면 암호, 토큰 또는 기타 보안 암호를 하드 코딩하지 않고도 Greengrass 디바이스의 서비스와 애플리케이션을 인증할 수 있습니다.

AWS Secrets Manager를 사용하여 클라우드에서 보안 암호를 안전하게 저장하고 관리할 수 있습니다. AWSIoT Greengrass는 Secrets Manager를 Greengrass Core 디바이스로 확장하므로 커넥터와 Lambda 함수가

145

Page 152: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Secrets Manager SageMaker 리포지토리 자격 증명 관리

로컬 보안 암호를 사용하여 서비스 및 애플리케이션과 상호 작용할 수 있습니다. 예를 들어, Twilio 알림 커넥터는 로컬로 저장된 인증 토큰을 사용합니다.

보안 암호를 Greengrass 그룹에 통합하려면 Secrets Manager 보안 암호를 참조하는 그룹 리소스를 생성합니다. 이 보안 암호 리소스는 연결된 ARN을 사용하여 클라우드 보안 암호를 참조합니다. 보안 암호 리소스를생성, 관리 및 사용하는 방법에 대한 자세한 내용은 AWS IoT 개발자 안내서의 보안 암호 리소스 작업을 참조하십시오.

AWS IoT Greengrass Core에 보안 암호를 배포하려면 AWS IoT Greengrass Core에 보안 암호 배포를 참조하십시오.

Secrets Manager SageMaker 리포지토리 자격 증명관리

SageMaker 는 종합 관리형 기계 학습 서비스입니다. SageMaker 를 사용하여 데이터 과학자와 개발자는 기계 학습 모델을 빠르고 쉽게 구축하고 훈련시킬 수 있으며, 그리고 나서 프로덕션 지원 호스팅 환경에 직접배포할 수 있습니다. 탐색 및 분석에 필요한 데이터 원본에 대한 쉬운 액세스를 위해 내장형 Jupyter 작성 노트북 인스턴스를 제공하기 때문에 서버를 관리할 필요가 없습니다. 또한 분산된 환경 내 대규모 데이터를 효율적으로 실행하는 데 최적화된 일반 기계 학습 알고리즘 또한 제공합니다. BYOM (Bring-Your-Algm) 및 프레임워크 기본 지원을 통해 SageMaker 는 특정 워크플로에 맞게 조정되는 유연한 분산 교육 옵션을 제공합니다. SageMaker 콘솔에서 클릭 한 번으로 모델을 시작하고 안전하고 확장 가능한 환경으로 배포합니다.

Secrets Manager 를 사용하여 프라이빗 리포지토리 자격 증명을 관리할 수 있습니다.

자세한 내용은 Amazon SageMaker 노트북 인스턴스와 Git 리포지토리 연결을 참조하십시오.

Security Hub 사용 하 여 보안 모범 사례 SecretsManager

AWS Security Hub 는 보안 업계 표준 및 모범 사례와 비교하여 환경을 확인할 수 있도록 AWS Security Hub는 AWS 보안 상태에 대한 포괄적인 관점을 제공합니다.

Security Hub 는 여러 AWS 계정, 서비스 및 지원되는 타사 파트너 제품에서 보안 데이터를 수집하여 보안 추세를 분석하고 우선 순위가 가장 높은 보안 문제를 파악하는 데 도움을 줍니다.

AWS 기반 보안 모범 사례 표준은 배포된 계정 및 리소스가 보안 모범 사례에서 벗어나는 시점을 감지하는컨트롤 세트입니다. Security Hub 는 모범 사례에서 벗어나는 영역을 지속적으로 평가하고 식별할 수 있도록SecreSecrets Manager 에 대한 컨트롤 집합을 제공합니다.

섹션을 참조하십시오.AWS 기반 보안 모범 사례 컨트롤를 선택합니다.

Secrets Manager 사용하여 AWS CodeBuild 레지스트리 자격 증명 저장

AWS CodeBuild 는 클라우드의 종합 관리형 빌드 서비스입니다. CodeBuild 는 소스 코드를 컴파일하고 단위테스트를 실행하며 배포 준비가 완료된 아티팩트를 생성합니다. CodeBuild에서는 자체 빌드 서버를 프로비저닝, 관리 및 확장할 필요가 없습니다. 이 서비스는 Apache Maven, Gradle 등과 같은 널리 사용되는 프로그래밍 언어 및 빌드 도구에 맞게 사전 패키지된 빌드 환경을 제공합니다. CodeBuild에서 빌드 환경을 사용자지정하여 사용자 고유의 빌드 도구를 사용할 수도 있습니다. CodeBuild는 최대 빌드 요청 수에 맞게 자동으로 확장합니다.

146

Page 153: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Secrets Manager 사용하여 Amazon

EMR 레지스트리 자격 증명 저장

Secrets Manager를 사용하여 프라이빗 레지스트리 자격 증명을 저장할 수 있습니다. CodeBuild에 대한AWS Secrets Manager 샘플이 포함된 프라이빗 레지스트리를 참조하십시오.

Secrets Manager 사용하여 Amazon EMR 레지스트리 자격 증명 저장

Amazon EMR 은 AWS 에서 Apache Hadoop 및 Apache Spark와 같은 빅 데이터 프레임워크 실행을 간소화하는 관리형 클러스터 플랫폼입니다. 이러한 프레임워크와 함께 Apache Hive 및 Apache Pig와 같은 관련 오픈 소스 프로젝트를 사용하여 분석용 데이터와 비즈니스 인텔리전스 워크로드를 처리할 수 있습니다. 또한Amazon EMR을 사용하여 Amazon Simple Storage Service(Amazon S3) 및 Amazon DynamoDB와 같은 기타 AWS 데이터 스토어 및 데이터베이스에서 많은 양의 데이터를 양방향으로 변환하고 이동할 수 있습니다.

Secrets Manager 를 사용하여 프라이빗 Git 기반 레지스트리 자격 증명을 저장할 수 있습니다. AmazonEMR에 Git 기반 리포지토리 추가를 참조하십시오.

Secrets Manager 리소스 정책과 젤 코바 통합Zelkova는 자동화된 추론을 사용하여 정책과 향후 정책의 결과를 분석합니다. 여기에는 다음이 포함됩니다.AWS Identity and Access Management (IAM) 정책,Amazon Simple Storage Service (S3)정책, SecretsManager 리소스 정책 및 기타 리소스 정책으로 구성됩니다. 이러한 정책은 어떤 리소스에 대해 작업을 수행할 수 있거나 수행할 수 없는 사용자를 지정합니다. Zelkova는 자동화된 추론을 사용하므로 정책에 대해 어떤 질문을 해야 하는지 더 이상 생각할 필요가 없습니다. 위에서 언급한 멋진 수학을 사용하여 Zelkova는 정책에 대해 물어봐야 하는 질문과 대답을 자동으로 도출하고 보안 구성에 대한 신뢰도를 높입니다.

젤코바에 대한 자세한 내용은 단원을 참조하십시오.AWS 가 자동화된 추론을 사용하여 대규모로 보안을 달성하는 방법에서 AWS 보안 블로그에서 확인할 수 있습니다.

AWS CloudFormation 에서 보안 생성 자동화AWS CloudFormation 템플릿을 사용하여 AWS 클라우드 인프라의 데이터베이스 또는 서비스 리소스에 대한 보안 암호 생성을 자동화할 수 있습니다.

AWS CloudFormation 사용 프로젝트에 필요한 리소스를 정의하는 템플릿을 JSON 또는 YAML 형식으로 생성할 수 있습니다. 그런 다음 AWS CloudFormation 이 템플릿을 처리하고 정의된 리소스를 빌드합니다. 이렇게 하면 필요할 때마다 인프라의 사본을 새로 손쉽게 생성할 수 있습니다. 예를 들어 테스트 인프라를 복제하여 공개 버전을 생성할 수 있습니다. 또한 이 인프라를 간단한 텍스트 파일로 공유하여 다른 사용자가 수동개입 없이 리소스를 복제하게 할 수도 있습니다.

AWS CloudFormation 템플릿의 일부로 보안 암호를 생성할 수 있는 다음과 같은 리소스 유형을 지원합니다.AWS CloudFormation 템플릿에서 이를 구성하는 자세한 방법을 보려면AWS CloudFormation 사용 설명서를선택합니다.

• AWS::SecretsManager::Secret— 보안 암호를 생성하고 보안 Secrets Manager 저장합니다. 암호를 지정하거나 Secrets Manager에서 사용자 대신 생성하도록 할 수 있습니다. 또한 빈 보안 암호를 생성하고 나중에 파라미터 SecretString.을 사용하여 보안 암호를 업데이트할 수 있습니다

• AWS::SecretsManager::ResourcePolicy— 리소스 기반 정책을 생성하여 지정된 보안 암호에 연결합니다.리소스 기반 정책은 보안 암호에 대해 작업을 수행할 수 있는 사용자를 제어합니다.

• AWS::SecretsManager::RotationSchedule— 지정된 Lambda 회전 함수를 사용하여 주기적으로 자동 교체를 수행하도록 보안 암호를 구성합니다.

• AWS::SecretsManager::SecretTargetAttachmentAWS — 보안 암호를 생성한 후 이를 참조하여 자격 증명에 액세스하고 나면 이 리소스 유형은 다시 돌아가서 보안 암호 구성을 완료합니다. 보안 Secrets Manager

147

Page 154: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Examples

교체를 수행하기 위해 필요한 서비스 또는 데이터베이스 세부 정보로 보안 암호를 구성합니다. 예를 들어 Amazon RDS DB 인스턴스의 경우 Secrets Manager 는 연결 세부 정보 및 데이터베이스 엔진 유형을SecureString비밀의 속성.

Examples다음 예제 템플릿은 보안 암호를 생성하고, 보안 암호의 자격 증명을 사용하는 Amazon RDS MySQL DB 인스턴스를 보안 암호에 마스터 사용자와 암호로 생성합니다. 보안 암호에는 보안 암호에 대한 액세스를 지정하는 리소스 기반 정책이 연결됩니다. 또한 템플릿은 Lambda 교체 함수를 생성하고, 30일 간격으로 보안 암호를 자동 교체하도록 구성합니다.

Note

JSON 사양은 주석을 지원하지 않습니다. 주석에 대한 정보는 이 페이지 뒷부분의 YAML 버전을 참조하십시오.

Note

Aurora PostgreSQL 데이터베이스를 배포하는 경우admin를 선택합니다.admin는 예약된 키워드이며 해당 사용자 이름의 데이터베이스를 생성할 수 없습니다.

JSON

{ "Transform": "AWS::SecretsManager-2020-07-23", "Description": "This is an example template to demonstrate CloudFormation resources for Secrets Manager", "Resources": { "TestVPC": { "Type": "AWS::EC2::VPC", "Properties": { "CidrBlock": "10.0.0.0/16", "EnableDnsHostnames": true, "EnableDnsSupport": true } }, "TestSubnet01": { "Type": "AWS::EC2::Subnet", "Properties": { "CidrBlock": "10.0.96.0/19", "AvailabilityZone": { "Fn::Select": [ "0", { "Fn::GetAZs": { "Ref": "AWS::Region" } } ] }, "VpcId": { "Ref": "TestVPC" } } }, "TestSubnet02": { "Type": "AWS::EC2::Subnet", "Properties": { "CidrBlock": "10.0.128.0/19", "AvailabilityZone": { "Fn::Select": [

148

Page 155: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Examples

"1", { "Fn::GetAZs": { "Ref": "AWS::Region" } } ] }, "VpcId": { "Ref": "TestVPC" } } }, "SecretsManagerVPCEndpoint": { "Type": "AWS::EC2::VPCEndpoint", "Properties": { "SubnetIds": [ { "Ref": "TestSubnet01" }, { "Ref": "TestSubnet02" } ], "SecurityGroupIds": [ { "Fn::GetAtt": [ "TestVPC", "DefaultSecurityGroup" ] } ], "VpcEndpointType": "Interface", "ServiceName": { "Fn::Sub": "com.amazonaws.${AWS::Region}.secretsmanager" }, "PrivateDnsEnabled": true, "VpcId": { "Ref": "TestVPC" } } }, "MyRDSInstanceRotationSecret": { "Type": "AWS::SecretsManager::Secret", "Properties": { "Description": "This is my rds instance secret", "GenerateSecretString": { "SecretStringTemplate": "{\"username\": \"admin\"}", "GenerateStringKey": "password", "PasswordLength": 16, "ExcludeCharacters": "\"@/\\" }, "Tags": [ { "Key": "AppName", "Value": "MyApp" } ] } }, "MyDBInstance": { "Type": "AWS::RDS::DBInstance", "Properties": { "AllocatedStorage": 20, "DBInstanceClass": "db.t2.micro", "Engine": "mysql",

149

Page 156: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Examples

"DBSubnetGroupName": { "Ref": "MyDBSubnetGroup" }, "MasterUsername": { "Fn::Sub": "{{resolve:secretsmanager:${MyRDSInstanceRotationSecret}::username}}" }, "MasterUserPassword": { "Fn::Sub": "{{resolve:secretsmanager:${MyRDSInstanceRotationSecret}::password}}" }, "BackupRetentionPeriod": 0, "VPCSecurityGroups": [ { "Fn::GetAtt": [ "TestVPC", "DefaultSecurityGroup" ] } ] } }, "MyDBSubnetGroup": { "Type": "AWS::RDS::DBSubnetGroup", "Properties": { "DBSubnetGroupDescription": "Test Group", "SubnetIds": [ { "Ref": "TestSubnet01" }, { "Ref": "TestSubnet02" } ] } }, "SecretRDSInstanceAttachment": { "Type": "AWS::SecretsManager::SecretTargetAttachment", "Properties": { "SecretId": { "Ref": "MyRDSInstanceRotationSecret" }, "TargetId": { "Ref": "MyDBInstance" }, "TargetType": "AWS::RDS::DBInstance" } }, "MySecretRotationSchedule": { "Type": "AWS::SecretsManager::RotationSchedule", "DependsOn": "SecretRDSInstanceAttachment", "Properties": { "SecretId": { "Ref": "MyRDSInstanceRotationSecret" }, "HostedRotationLambda": { "RotationType": "MySQLSingleUser", "RotationLambdaName": "SecretsManagerRotation", "VpcSecurityGroupIds": { "Fn::GetAtt": [ "TestVPC", "DefaultSecurityGroup" ] }, "VpcSubnetIds": { "Fn::Join": [

150

Page 157: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Examples

",", [ { "Ref": "TestSubnet01" }, { "Ref": "TestSubnet02" } ] ] } }, "RotationRules": { "AutomaticallyAfterDays": 30 } } } } }

YAMLTransform: AWS::SecretsManager-2020-07-23 Description: "This is an example template to demonstrate CloudFormation resources for Secrets Manager" Resources:

#This is the VPC that the rotation Lambda and the RDS instance will be placed in TestVPC: Type: AWS::EC2::VPC Properties: CidrBlock: 10.0.0.0/16 EnableDnsHostnames: true EnableDnsSupport: true

# Subnet that the rotation Lambda and the RDS instance will be placed in TestSubnet01: Type: AWS::EC2::Subnet Properties: CidrBlock: 10.0.96.0/19 AvailabilityZone: Fn::Select: - '0' - Fn::GetAZs: {Ref: 'AWS::Region'} VpcId: Ref: TestVPC

TestSubnet02: Type: AWS::EC2::Subnet Properties: CidrBlock: 10.0.128.0/19 AvailabilityZone: Fn::Select: - '1' - Fn::GetAZs: {Ref: 'AWS::Region'} VpcId: Ref: TestVPC

#VPC endpoint that will enable the rotation Lambda to make api calls to Secrets Manager SecretsManagerVPCEndpoint: Type: AWS::EC2::VPCEndpoint Properties: SubnetIds:

151

Page 158: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Examples

- Ref: TestSubnet01 - Ref: TestSubnet02 SecurityGroupIds: - !GetAtt TestVPC.DefaultSecurityGroup VpcEndpointType: 'Interface' ServiceName: !Sub "com.amazonaws.${AWS::Region}.secretsmanager" PrivateDnsEnabled: true VpcId: Ref: TestVPC

#This is a Secret resource with a randomly generated password in its SecretString JSON. MyRDSInstanceRotationSecret: Type: AWS::SecretsManager::Secret Properties: Description: 'This is my rds instance secret' GenerateSecretString: SecretStringTemplate: '{"username": "admin"}' GenerateStringKey: 'password' PasswordLength: 16 ExcludeCharacters: '"@/\' Tags: - Key: AppName Value: MyApp

#This is an RDS instance resource. Its master username and password use dynamic references to resolve values from #SecretsManager. The dynamic reference guarantees that CloudFormation will not log or persist the resolved value #We sub the Secret resource's logical id in order to construct the dynamic reference, since the Secret's name is being #generated by CloudFormation MyDBInstance: Type: AWS::RDS::DBInstance Properties: AllocatedStorage: 20 DBInstanceClass: db.t2.micro Engine: mysql DBSubnetGroupName: Ref: MyDBSubnetGroup MasterUsername: !Sub '{{resolve:secretsmanager:${MyRDSInstanceRotationSecret}::username}}' MasterUserPassword: !Sub '{{resolve:secretsmanager:${MyRDSInstanceRotationSecret}::password}}' BackupRetentionPeriod: 0 VPCSecurityGroups: - !GetAtt TestVPC.DefaultSecurityGroup

#Database subnet group for the RDS instance MyDBSubnetGroup: Type: AWS::RDS::DBSubnetGroup Properties: DBSubnetGroupDescription: "Test Group" SubnetIds: - Ref: TestSubnet01 - Ref: TestSubnet02 #This is a SecretTargetAttachment resource which updates the referenced Secret resource with properties about #the referenced RDS instance SecretRDSInstanceAttachment: Type: AWS::SecretsManager::SecretTargetAttachment Properties: SecretId: !Ref MyRDSInstanceRotationSecret TargetId: !Ref MyDBInstance TargetType: AWS::RDS::DBInstance

152

Page 159: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서AWS Config 를 사용하여 Secrets Manager 비밀 모니터링

#This is a RotationSchedule resource. It configures rotation of password for the referenced secret using a rotation lambda #The first rotation happens at resource creation time, with subsequent rotations scheduled according to the rotation rules #We explicitly depend on the SecretTargetAttachment resource being created to ensure that the secret contains all the #information necessary for rotation to succeed MySecretRotationSchedule: Type: AWS::SecretsManager::RotationSchedule DependsOn: SecretRDSInstanceAttachment Properties: SecretId: !Ref MyRDSInstanceRotationSecret HostedRotationLambda: RotationType: MySQLSingleUser RotationLambdaName: SecretsManagerRotation VpcSecurityGroupIds: !GetAtt TestVPC.DefaultSecurityGroup VpcSubnetIds: Fn::Join: - "," - - Ref: TestSubnet01 - Ref: TestSubnet02 RotationRules: AutomaticallyAfterDays: 30

AWS Config 를 사용하여 Secrets Manager 비밀 모니터링

AWS Secrets Manager는 AWS Config와 통합되며, 이를 통해 Secrets Manager의 보안 암호 변경 사항을 더욱 쉽게 추적할 수 있습니다. 관리형 AWS Config 2개를 추가로 사용할 수 있습니다.규칙를 사용하여 보안 암호 관리의 모범 사례에 대한 조직의 내부 지침을 정의할 수 있습니다. 또한 보안 규칙을 준수하지 않는 보안암호를 신속하게 식별하는 것은 물론 Amazon SNS에서 보안 암호의 구성 변경에 대한 알림을 받을 수 있습니다. 예를 들어, 순환하도록 구성되지 않은 보안 암호 목록에 대한 SNS 알림을 받는다면 보안 암호 순환과관련된 보안 모범 사례를 구현할 수 있게 됩니다.

AWS Config 다중 계정 다중 리전 데이터 집계자를 활용하여 전체 조직의 모든 계정 및 리전에 걸쳐 보안 암호 목록을 보고 적합성을 확인할 수 있으며, 이를 통해 조직 전체에 대한 보안 암호 관리의 모범 사례를 한 곳에서 만들 수 있습니다.

주제

• AWS Config 를 통해 비밀을 추적하는 이점 (p. 153)• 보안 관리자 AWS Config 에서 지원되는 규칙 (p. 154)• AWS Config 를 사용하여 비밀 관리 모범 사례 구현 (p. 154)• 보안 암호 관리를 위한 AWS Config 다중 계정 다중 리전 데이터 집계자 구성 (p. 156)

AWS Config 를 통해 비밀을 추적하는 이점AWS Config 를 사용하면 AWS 리소스 구성을 지속적으로 모니터링 및 기록하여 AWS 리소스 전체의 구성을 측정, 감사 및 평가할 수 있으며, 원하는 구성을 기준으로 기록된 구성을 자동으로 평가할 수도 있습니다.AWS Config 를 사용하여 다음 작업을 수행할 수 있습니다.

• AWS 리소스 간의 관계 및 구성을 검토합니다.• 자세한 리소스 구성 기록을 추적합니다.

153

Page 160: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서보안 관리자 AWS Config 에서 지원되는 규칙

• 내부 지침에 지정된 구성을 기준으로 전반적인 준수 여부를 확인합니다.

AWS Config에 다중 계정 다중 리전 AWS 리소스가 있는 경우 여러 계정과 리전의 구성 및 규정 준수 데이터를 단일 계정에서 볼 수 있습니다. 따라서 여러 계정의 비 규정 준수 리소스를 식별할 수 있습니다.

AWS Config 로 보안 암호를 추적하면 보안 암호는 AWS Config 지원 리소스가 되므로 보안 암호 설명 및순환 구성과 같은 암호 메타 데이터의 변경, 보안 암호 암호화에 사용된 KMS 키 및 보안 암호화에 사용된Lambda 함수 같은 다른 AWS 소스와의 관계회전뿐만 아니라 비밀과 관련된 태그와 같은 속성도 포함됩니다.

또한 AWS 관리형 구성 규칙을 활용하여 보안 구성이 조직의 보안 및 규정 준수 요구 사항을 준수하는지 평가하고 이러한 표준을 준수하지 않는 암호를 식별할 수 있습니다.

주제

• 시Secrets Manager 대한 AWS Config 지원 규칙• AWS Config를 사용하여 보안 암호 관리 모범 사례 구현• 보안 암호 관리를 위한 AWS Config 집계자 구성

보안 관리자 AWS Config 에서 지원되는 규칙AWS Config 를 사용하여 리소스 구성을 평가할 때 리소스 구성이 내부 관행, 업계 지침 및 규정을 준수하는정도를 평가할 수 있습니다. AWS Config 는 Secrets Manager 대해 다음과 같은 규칙을 지원합니다.

• secretsmanager-rotation-enabled-check— 보안 암호 Secrets Manager 저장된 보안 암호의 순환을 구성했는지 확인합니다. AWS Config 는 보안 암호를 교체하도록 구성했는지 확인합니다. 이 규칙은또한 maximumAllowedRotationFrequency를 지원하며, 지정되는 경우 보안 암호의 빈도 구성을 파라미터에 설정된 값과 비교합니다.

• secretsmanager-scheduled-rotation-success-check— Secrets Manager 성공적으로 순환하는지 확인합니다. AWS Config 는 규칙을 확인하고 마지막 순환된 날짜가 구성된 순환 빈도에 맞는지 확인합니다.

AWS Config 및 규칙에 대한 자세한 내용은 AWS Config 제품을 참조하십시오.설명서를 참조하십시오.• secretsmanager-using-cmk— AWS가 AWS KMS 고객 마스터 키 (CMK) 를 사용하여 모든 암호를 암

호화하는지 확인합니다.• secretsmanager-secret-unused— 보안 Secrets Manager 지정된 일수에 보안 암호에 액세스했는지

확인합니다.• secretsmanager-secret-periodic-rotation— 지정된 기간 (일) 내에 AWS 가 암호를 교체했는지

확인합니다.

Secrets Manager 대한 AWS Config 지원 리소스AWS 리소스는 AWS Management Console, AWS 명령줄 인터페이스(CLI), AWS SDK 또는 AWS 파트너 도구를 사용하여 생성하고 관리하는 엔터티입니다. AWS Config는 리소스 ID 또는 Amazon 리소스 이름(ARN)등의 고유 식별자를 사용하여 각 리소스를 참조합니다.

AWS Config 는 Secrets Manager 리소스,AWS::SecretsManager::Secret를 선택합니다. 자세한 내용은단원을 참조하십시오.AWS Config 개발자 안내서를 참조하십시오.

AWS Config 를 사용하여 비밀 관리 모범 사례 구현보안 Secrets Manager 의 일부로 보안 암호를 순환시킵니다.모범 사례보안 계획을 참조하십시오. 관리형 규칙을 사용하여secretsmanager-rotation-enabled-checkAWS Config 는 보안 암호 Secrets Manager순환을 확인합니다.

154

Page 161: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서AWS Config Secrets Manager 규칙 구성

AWS Config 의 규칙 구성에 대한 자세한 내용은 단원을 참조하십시오.AWS Config 규칙AWS Config 개발자안내서의

AWS Config Secrets Manager 규칙 구성Important

AWS Config 콘솔을 처음 사용하는 경우AWS Config(콘솔) 설정를 선택합니다.

규칙 페이지에 나와 있는 초기 AWS 관리형 규칙을 계정에 추가할 수 있습니다. AWS Config AWS SecretsManager 리소스를 선택한 규칙에 따라 평가합니다. 설정 후 규칙을 업데이트하거나 관리형 규칙을 추가로만들 수 있습니다.

1. AWS Config 콘솔에 로그인합니다.https://console.aws.amazon.com/config/를 선택합니다.2. [Settings]를 선택합니다. Recording is on 파라미터를 활성화해야 합니다.3. 규칙을 선택합니다.4. 규칙 섹션에서 규칙 추가를 선택합니다.5. 필터 필드에 secretsmanager-rotation-enabled-check를 입력합니다.6. secretsmanager-rotation-enabled-check 규칙을 구성하려면 콘솔 패널에서 규칙을 선택한 다음

규칙 추가를 선택합니다.7. 검색 기능을 사용하여 secretsmanager-rotation-enabled-check 규칙을 찾습니다.8. MySecretsRotationRule과 같이 고유한 규칙 이름을 만듭니다.9. 다음을 지정합니다.수정 조치를 클릭하여 Amazon SNS 주제를 사용하여 규정을 준수하지 않는 비밀에 대

한 알림을 수신할 수 있습니다.10.Amazon SNS 알림에 대한 주제를 지정합니다.11.선택Save를 사용하여 AWS Config 에 규칙을 저장합니다.

규칙을 저장하면 AWS Config 는 보안 암호의 메타데이터가 변경될 때마다 보안 암호를 평가합니다. 변경 사항이 발생하면 규정을 준수하지 않는 보안 암호에 대한 SNS 알림을 받게 됩니다. 또한, 에서 결과를 볼 수도있습니다.규칙또는대시보드AWS Config.

를 선택한 경우보안 책임자-Rotation-check-mySecretsRotation규칙를 규칙 목록에 추가하면 AWS Config 순환하도록 구성되지 않은 계정의 보안 암호 목록을 표시합니다. 보안 암호를 식별했으니 이제 보안 암호 순환의 모범 사례를 구현하기 시작할 수 있습니다.

• 섹션을 참조하십시오.AWS Config 설명서에 있는secretsmanager-rotation-enabled-check를 선택합니다.

• 섹션을 참조하십시오.AWS Config 설명서에 있는secretsmanager-scheduled-rotation-enabled-success-check를 선택합니다.

AWS Config 에서 비밀 정보 관리자 규칙 보기AWS Config 개발자 안내서에서 Secrets Manager 규칙을 보려면 AWS Config 콘솔에 로그인한 후규칙를 선택합니다. 원하는 규칙을 선택하고 다음 옵션 중 하나를 수행합니다.

• 세부 정보 보기• 규칙 편집• 작업

규칙 보기에 대한 자세한 내용은 단원을 참조하세요.AWS Config 개발자 안내서를 선택합니다.

155

Page 162: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서보안 암호 관리를 위한 AWS Config 다중 계정 다중 리전 데이터 집계자 구성

보안 암호 관리를 위한 AWS Config 다중 계정 다중 리전 데이터 집계자 구성AWS Config 다중 계정 다중 리전 데이터 집계자를 구성하여 조직의 모든 계정 및 리전에 걸쳐 보안 암호 구성을 검토하도록 구성한 다음, 보안 암호 구성을 검토하고 보안 암호 관리의 모범 사례와 비교합니다.

Note

집계자를 만들기 전에 모든 계정 및 리전의 보안 암호와 관련된 AWS Config 관리형 규칙을 활성화해야 합니다. 를 사용할 수 있습니다.CloudFormation StackSets를 사용하여 모든 계정 및 리전에서AWS Config 를 활성화하고 규칙을 프로비저닝합니다.여기에서를 선택합니다.AWS Config 집계자에 대한 자세한 내용은 단원을 참조하십시오.다중 계정 다중 리전 데이터 집계AWS Config 개발자 안내서의

조직의 마스터 계정 또는 조직의 구성원 계정에서 집계자를 만듭니다. 다음 단계에 따라 AWS Config 집계자를 생성합니다.

1. AWS Config 콘솔에 로그인합니다.https://console.aws.amazon.com/config/를 선택합니다.2. Aggregators(집계자)를 선택한 다음 Add Aggregator(집계자 추가)를 선택합니다.3. 데이터 복제 허용 섹션에서 AWS Config의 데이터 복제 허용을 선택합니다. 조직의 모든 계정 및 리전에

대한 자원 구성 및 규정 준수 세부 정보에 마스터 계정이 액세스할 수 있도록 하려면 이 옵션을 활성화해야 합니다.

4. Aggregator name(집계자 이름) 필드에 최대 64자의 영숫자로 구성된 고유한 집계자 이름을 입력합니다.5. Select source accounts(원본 계정 선택) 섹션에서 Add my organization(내 조직 추가)을 선택한 다음

Choose IAM role(IAM 역할 선택)을 클릭합니다.6. 리전에서 해당 조직에 적용되는 모든 지역을 선택한 다음 저장을 선택합니다.

조직의 모든 보안 암호에 대한 대시보드를 보려면 집계자 이름을 선택합니다. 이제 모든 계정과 리전의 모든보안 암호를 확인할 수 있습니다.

AWS Config 집계자 구성에 대한 자세한 내용은 단원을 참조하십시오.콘솔을 사용하여 집계자 설정

데이터를 검토하여 해당 조직의 규정에 맞지 않는 모든 보안 암호를 식별합니다. 개인 계정 및 보안 암호 소유자와 협력하여 모든 보안 암호의 교체 등 보안 암호 관리의 모범 사례를 적용합니다. 모든 보안 암호가 교체 빈도에 대한 모범 사례 정책에 맞는지 확인하고, 사용하지 않는 보안 암호를 사전에 식별하고 삭제를 예약합니다.

Tip

보안 Secrets Manager 및 AWS Config 에 대한 자세한 내용은 다음 AWS Config 설명서를 참조하십시오.

• AWS Config 관리형 규칙 목록• AWS Config에서 지원되는 AWS 리소스 유형 및 리소스 관계• AWS Config가 Amazon SNS 주제로 전송하는 알림

Secrets Manager 비밀을 Kubernetes 비밀 저장소CSI 드라이버와 통합

Kubernetes는 키/값 저장소를 제공합니다etcd를 사용하면 키/값 쌍을 만들고 파일 시스템 인터페이스를 통해 컨테이너 또는 포드에서 실행되는 응용 프로그램에서 키/값 쌍을 사용할 수 있습니다. Kubernetes 커뮤니

156

Page 163: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Prerequisites

티는 제공CSI (Secer Storage Interface) 드라이버동일한 표준 파일 시스템 인터페이스를 사용하여 비밀을제공하는 데 사용할 수 있습니다. 보안 저장소 CSI 드라이버는 플러그 가능한 인터페이스를 사용하여 AWSSecrets Manager 또는 AWS 매개 변수 저장소와 같은 비밀 공급자가 표준 K8s etcd 저장소가 아닌 지정된공급자로부터 비밀을 얻기 위해 어댑터 플러그인을 작성할 수 있습니다.

AWS Secrets Manager 및 구성 공급자 (ASCP) 가 출시됨에 따라 이제 업계 표준 Kubernetes 시크릿 스토어용 플러그인을 사용할 수 있습니다.Container Storage Interface) 드라이버Amazon Elastic KubernetesService 작동하는 애플리케이션에 비밀을 제공하는 데 사용됩니다. ASCP를 사용하여 파일 시스템 또는Kubernetes를 통해 암호를 받은 레거시 Kubernetes 워크로드에 대한 호환성을 제공할 수 있습니다.etcd를선택합니다.

 이전에는 구성 파일에 암호를 일반 텍스트 암호로 저장했거나 Kubernetes를 사용했습니다.etcd를 사용하여 파일 시스템을 통해 비밀을 볼 수 있습니다. 또한 비밀을 교체하는 사용자 지정 코드를 작성하여 조직의유지 관리 과제를 해결했습니다. 포드에 대한 보안 액세스를 구성하려면 액세스를 제어하기 위해 여러 클러스터를 만들어 운영 부하를 증가시켰습니다.

ASCP를 사용하면 Secrets Manager 비밀을 안전하게 저장하고 관리할 수 있을 뿐만 아니라 Kubernetes에서 실행되는 애플리케이션 워크로드를 통해 해당 비밀을 검색할 수 있습니다. 응용 프로그램에 대한 사용자지정 코드를 더 이상 작성할 필요가 없습니다. 비밀에 IAM 및 리소스 정책을 사용하여 클러스터 내의 특정Kubernetes 포드에 대한 액세스를 제한하고 제한할 수도 있습니다. 정책은 개별 포드의 비밀에 대한 액세스가능성을 제어합니다. ASCP는 선택적 순환 조정자 구성 요소를 사용하여 보안 공급자로부터 최신 암호를 검색할 수 있습니다. 순환 조정기를 사용하도록 설정하면 ASCP에서 응용 프로그램이 항상 최신 버전의 암호를받도록 하여 Secret Secrets Manager 의 수명 주기 관리 기능을 활용할 수 있습니다.

PrerequisitesASCP 및 Kubernetes를 구성하려면 다음 항목이 있어야 합니다.

• AWS 계정• Secrets Manager 수정 권한이 있는 AWS Identity and Access Management 계정입니다.• IRSA (서비스 계정) 용 IAM 역할이 구성됩니다.

IRSA용 IAM 역할을 사용하여 포드에 대한 보안 액세스를 제한합니다. 이 옵션을 설정하면 공급자가 포드자격 증명을 검색하고 이 자격 증명을 IAM 역할로 교환합니다. ASCP는 포드의 IAM 역할을 가정하고 해당포드에 대해 인증된 Secrets Manager 에서만 비밀을 검색합니다. 이렇게하면 컨테이너가 다른 컨테이너에 대한 비밀에 액세스하지 못하게됩니다.

특히 다음과 같은 IAM 정책 권한이 필요합니다.• secretsmanager:GetSecretValue

• secretsmanager:SecretsManager:DescribeSecret

• ssm:GetParameters

• 아마존 EKS 버전 1.17 이상.• Kubernetes 클러스터를 수정할 수 있는 권한입니다.• AWS CLI및kubectl를 설치합니다.• 투구• eksctl

CSI 드라이버 설치다음 단계에 따라 ASCP 및 Kubernetes를 배포합니다.

1. 다음을 사용하여 Kubernetes 비밀 저장소 컨테이너 저장 인터페이스 (CSI) 드라이버를 설치합니다.helm명령을 실행합니다.

157

Page 164: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서CSI 드라이버 설치

설치 한 CLI에서kubectlCSI 드라이버를 설치하려면 다음 명령을 실행합니다.

helm repo add secrets-store-csi-driver https://raw.githubusercontent.com/kubernetes-sigs/secrets-store-csi-driver/master/chartshelm -n kube-system install csi-secrets-store secrets-store-csi-driver/secrets-store-csi-driver --set grpcSupportedProviders="aws"

다음과 유사하게 출력되어야 합니다:

csi-secrets-store-qp9r8         3/3     Running   0          4mcsi-secrets-store-zrjt2         3/3     Running   0          4m

2. 주기적으로 업데이트 된 암호를 가져올 필요가 없으면 드라이버를 초기화하십시오.

helm -n kube-system install csi-secrets-store secrets-store-csi-driver/secrets-store-csi-driver --set grpcSupportedProviders=”aws”

3. 순환 조정기 기능을 사용하여 드라이버에 대해 자동 순환을 활성화하려면 다음 명령을 사용합니다.

helm -n kube-system install csi-secrets-store secrets-store-csi-driver/secrets-store-csi-driver --set enableSecretRotation=true --set rotationPollInterval=3600s

회전을 조정하여 API 호출과 회전 빈도의 균형을 맞출 수 있습니다.

Note

이것은 알파 기능입니다.4. 배포를 사용하여 AWS 비밀 및 구성 공급자 설치YAML를 선택합니다.

curl -s https://raw.githubusercontent.com/aws/secrets-store-csi-driver-provider-aws/main/deployment/aws-provider-installer.yaml | kubectl apply -f -

5. SecretProviderClass 사용자 지정 리소스 만들기 및 배포

비밀 저장소 CSI 드라이버를 사용하려면 비밀 공급자 클래스 사용자 지정 리소스를 만들어야 합니다. 사용자 지정 리소스는 CSI 드라이버에 드라이버 구성 및 공급자별 매개변수를 제공합니다.SecretProviderClass 리소스에는 최소한 다음 구성 요소가 포함되어야 합니다.

apiVersion: secrets-store.csi.x-k8s.io/v1alpha1 kind: SecretProviderClass metadata: name: aws-secrets spec: provider: aws parameters: objects: | - objectName: "MySecret" objectType: "secretsmanager"s

ASCP를 구현하려면SecretProviderClass매개 변수 저장소에서 구성을 검색하고 Secrets Manager암호를 검색하는 방법에 대한 자세한 내용을 참조하십시오. 이SecretProviderClass는 참조 된 포드와 동일한 네임 스페이스에 있어야합니다. 다음은 구성의 예입니다.

apiVersion: secrets-store.csi.x-k8s.io/v1alpha1kind: SecretProviderClass

158

Page 165: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서CSI 드라이버 설치

metadata:name: aws-secretsspec:provider: awsparameters:# provider-specific parametersobjects: |array:- |objectName: "arn:aws:secretsmanager:us-east-1:[ACCOUNT]:secret:MySecret-00AABB"objectVersion: "00112233AABB00112233445566778899"- |objectName: "MyConfigValue2"objectType: "ssm"# object types: secretsmanager for secrets and ssm forconfiguration valuesobjectVersion: "1"- |objectName: "MySecret2"objectType: "secretsmanager"objectVersion: "00112233AABB00112233445566778899"- |objectName: "MySecret3"objectType: "secretsmanager"objectVersionStage: "AWSCURRENT"# [OPTIONAL] object version stage, default tolatest if empty

6. 생성한 후SecretProviderClass에서 다음 샘플 코드를 사용하여 응용 프로그램 또는 포드를 배포할수 있습니다.

kind: Pod apiVersion: v1 metadata: name: nginx-deployment spec: serviceAccountName: nginx-deployment-sa containers: - image: nginx name: nginx volumeMounts: - name: secrets-store-inline mountPath: "/mnt/secrets-store" readOnly: true volumes: - name: secrets-store-inline csi: driver: secrets-store.csi.k8s.io readOnly: true volumeAttributes: secretProviderClass: "aws-secrets"

보안 제공자 클래스 옵션이비서리 프로바이더 클래스다음과 같은 형식을 가집니다.

apiVersion: secrets-store.csi.x-k8s.io/v1alpha1 kind: SecretProviderClass metadata: name: <NAME> spec: provider: aws

159

Page 166: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서CSI 드라이버 설치

parameters:

이parameters섹션에는 마운트 요청의 세부 정보가 포함되어 있으며 다음 세 개의 필드 중 하나가 있습니다.

• objects- 탑재 할 비밀의 YAML 선언을 포함하는 문자열입니다.

parameters: objects: | - objectName: "MySecret" objectType: "secretsmanager"

• region(선택 사항) - Secrets Manager 또는 매개 변수 저장소에서 암호를 검색할 때 사용할 AWS 리전을지정합니다. 이 필드를 사용하지 않으면 공급자는 노드의 주석에서 해당 지역을 조회합니다. 이 조회는 마운트 요청에 오버헤드를 추가하므로 많은 수의 포드를 사용하는 클러스터가 여기에 리전을 제공하는 이점을 누릴 수 있습니다.

• pathTranslation(선택 사항) - 파일 이름에 경로 구분 기호 문자 (예: Linux의 경우 슬래시) 를 추가할 때사용할 대체 문자를 지정합니다. 암호 또는 매개 변수 이름에 경로 구분 기호가 포함되어 있으면 공급자가이름을 사용하여 마운트된 파일을 만들려고 할 때 오류가 발생합니다. 지정하지 않으면 밑줄 문자가 사용되며My/Path/Secret탑재My_Path_Secret를 선택합니다. 이pathTranslation값은 문자열 일 수있습니다False또는 단일 문자열. 로 설정된 경우False이면 문자 대체가 수행되지 않습니다.

이objects의 필드SecretProviderClass다음과 같은 하위 필드를 포함할 수 있습니다.

• objectName(필수) - 보안 또는 매개 변수의 이름을 지정합니다. Secrets Manager 경우SecretId파라미터는 보안 암호의 친숙한 이름 또는 전체 ARN 이 될 수 있습니다. SSM 매개 변수 저장소의 경우Name이며전체 ARN 포함할 수 없습니다.

• objectType- Secrets Manager ARN 사용하는 경우 선택objectName를 선택합니다. SecretsManager ARN 사용하지 않는 경우SecretProviderClass는 필드를 필요로하며secretsmanager또는ssmparameter를 선택합니다.

• objectAlias(선택 사항) - 암호를 마운트할 파일 이름을 지정합니다. 지정하지 않으면 기본적으로objectName를 선택합니다.

• objectVersion(선택 사항) - 암호를 업데이트할 경우 업데이트가 필요하므로 이 필드를 사용하지 않는것이 좋습니다.

• objectVersionLabel(선택 사항) - 버전에 사용되는 별칭을 지정합니다. SecretProviderClass기본적으로 가장 최신 버전을 사용합니다.

160

Page 167: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서AWS Secrets Manager 에서 데이터 보호

AWS SecRts Manager에서 제공하는보안

AWS 에서 가장 우선순위가 높은 것이 보안 보안입니다. AWS 고객은 보안에 매우 민감한 조직의 요구 사항에 부합하도록 구축된 데이터 센터 및 네트워크 아키텍처의 혜택을 누릴 수 있습니다.

고객과 AWS 보안 책임을 공유합니다. 공동 책임 모델은 이 사항을 클라우드 내 보안 및 클라우드의 보안으로 설명합니다.

• 클라우드의 보안 – AWS는 AWS 클라우드에서 AWS 서비스를 실행하는 인프라를 보호해야 합니다. 또한AWS는 안전하게 사용할 수 있는 서비스를 제공합니다. 타사 감사자는 정기적으로 AWS 규정 준수 프로그램의 일환으로 보안 효과를 테스트하고 검증합니다. AWS SecRts Manager에 적용되는 규정 준수 프로그램에 대한 자세한 내용은규정 준수 프로그램 제공 AWS 범위 내 서비스를 선택합니다.

• 클라우드에서의 보안— AWS 서비스에서 고객의 책임을 결정합니다. 또한 귀하는 데이터의 민감도, 회사요구 사항, 관련 법률 및 규정을 비롯한 기타 요소에 대해서도 책임이 있습니다.

주제• AWS Secrets Manager 에서 데이터 보호 (p. 161)• AWS Secrets Manager의 인프라 보안 (p. 163)• AWS Secrets Manager 에서 (p. 163)• AWS SecRts Manager에 사용되는 규정 준수 (p. 163)

AWS Secrets Manager 에서 데이터 보호AWS공동 책임 모델는 AWS Secrets Manager 에서 데이터 보호에 적용됩니다. 이 모델에서 설명하는 것처럼 AWS는 모든 AWS 클라우드를 실행하는 글로벌 인프라를 보호해야 합니다. 이 인프라에서 호스팅되는 콘텐츠에 대한 제어를 유지하는 것은 사용자의 책임입니다. 이 콘텐츠에는 사용하는 AWS 서비스에 대한 보안구성 및 관리 작업이 포함됩니다. 데이터 프라이버시에 대한 자세한 내용은 데이터 프라이버시 FAQ를 참조하세요. 유럽의 데이터 보호에 대한 자세한 내용은AWS 공동 책임 모델 및 GDPR블로그 게시물에AWS 보안블로그를 선택합니다.

데이터를 보호하려면 AWS 계정 자격 증명을 보호하고 AWS Identity and Access Management(IAM)를 사용해 개별 사용자 계정을 설정하는 것이 좋습니다. 이러한 방식에서는 각 사용자에게 자신의 직무를 충실히 이행하는 데 필요한 권한만 부여됩니다. 또한 다음과 같은 방법으로 데이터를 보호하는 것이 좋습니다.

• 각 계정마다 멀티 팩터 인증(MFA)을 사용합니다.• SSL/TLS를 사용하여 AWS 리소스와 통신합니다. TLS 1.2 이상을 권장합니다.• AWS CloudTrail로 API 및 사용자 활동 로깅을 설정합니다.• AWS 암호화 솔루션을 AWS 제품 내의 모든 기본 보안 컨트롤과 함께 사용합니다.• Amazon S3에 저장된 개인 데이터를 검색하고 보호하는 데 도움이 되는 Amazon Macie와 같은 고급 관리

형 보안 서비스를 사용합니다.• 명령줄 인터페이스 또는 API를 통해 AWS에 액세스할 때 FIPS 140-2 검증된 암호화 모듈이 필요한 경우

FIPS 엔드포인트를 사용합니다. 사용 가능한 FIPS 엔드포인트에 대한 자세한 내용은 Federal InformationProcessing Standard(FIPS) 140-2를 참조하세요.

161

Page 168: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서저장 데이터 암호화

이름 필드와 같은 자유 형식 필드에 고객 계정 번호와 같은 중요 식별 정보를 절대 입력하지 마십시오. 여기에는 Secrets Manager 또는 기타 AWS 서비스에서 콘솔, API, AWS CLI 또는 AWS SDK를 사용하여 작업하는 경우가 포함됩니다. Secrets Manager 또는 기타 서비스에 입력하는 모든 데이터는 진단 로그에 포함되도록 선택될 수 있습니다. 외부 서버에 URL을 제공할 때 해당 서버에 대한 요청을 검증하기 위해 자격 증명 정보를 URL에 포함시키지 마십시오.

저장 데이터 암호화Secrets Manager 는 AWS Key Management Service (KMS) 를 통한 암호화를 사용하여 유휴 데이터의 기밀성을 보호합니다. AWS KMS 는 여러 AWS 서비스에서 사용하는 키 스토리지 및 암호화 서비스를 제공합니다. AWS Secrets Manager 모든 비밀을 AWS KMS 에 연결합니다.고객 마스터 키(CMK). 연결된 CMK를 계정의 기본 Secrets Manager CMK로 사용할 수도 있고, 사용자가 직접 CMK를 만들 수도 있습니다. CMK 생성에 대한 자세한 내용은 Secrets Manager에서 AWS KMS를 이용하는 방법을 참조하십시오.

전송 중 데이터 암호화SecreSecrets Manager 는 전송 중인 데이터를 암호화하기 위한 보안 프라이빗 엔드포인트를 제공합니다. 보안 및 사설 엔드포인트를 통해 AWS Secrets Manager 대한 API 요청의 무결성을 보호할 수 있습니다. AWS에서는 X.509 인증서 및/또는 AWS SecreAWS Secrets Manager 보안 액세스 키를 사용해 호출자에 서명해야 합니다. 이 요구 사항은 Signature 버전 4 서명 프로세스(Sigv4)에 명시되어 있습니다.

AWS CLI (명령줄 인터페이스) 또는 AWS SDK를 사용해 AWS를 호출하는 경우 해당 도구에서 자동으로 지정된 액세스 키를 사용해 요청에 서명합니다. CLI 또는 AWS SDK를 구성할 때, 사용할 액세스 키를 사용자가지정하게 됩니다.

암호화 키 관리SecreSecrets Manager 는 새 버전의 보호된 보안 암호 데이터를 암호화해야 하는 경우 SecreSecretsManager 에서 AWS KMS 에 지정된 CMK에서 새 데이터 키를 생성하도록 요청합니다. Secrets Manager 는이 데이터 키를봉투 암호화를 선택합니다. Secrets Manager 는 암호화한 데이터 키를 암호화된 보안 암호와함께 저장합니다. 보안 암호를 해독해야 하는 경우 보안 Secrets Manager AWS KMS 에 데이터 키를 해독하도록 요청합니다. 그러면 Secrets Manager 는 해독한 데이터 키를 사용해 암호화된 보안 암호를 해독합니다.Secrets Manager 는 데이터 키를 암호화되지 않은 형식으로 저장하지 않으며 가능한 한 빨리 메모리에서 키를 제거합니다.

암호 및 복호화 프로세스에 대한 자세한 내용과 보안 Secrets Manager AWS KMS 를 이용하는 방식에 대한자세한 설명은 단원을 참조하십시오.AWS Secrets Manager AWS KMS 사용하는 방법를 선택합니다.

인터네트워크 트래픽 개인 정보 보호AWS 알려진 네트워크 경로와 프라이빗 네트워크 경로를 통해 트래픽을 라우팅할 때 개인 정보를 보호하는옵션을 제공합니다.

서비스와 온프레미스 클라이언트 및 애플리케이션 간의 트래픽프라이빗 네트워크와 AWS Secrets Manager 사이에는 두 연결 옵션이 있습니다.

• AWS Site-to-Site VPN 연결. 자세한 내용은 AWS Site-to-Site VPN이란 무엇입니까?를 참조하십시오.• AWS Direct Connect 연결 자세한 내용은 AWS Direct Connect란 무엇입니까?를 참조하십시오.

같은 리전에 있는 AWS 리소스 사이의 트래픽AWS 에서 SecreSecrets Manager 와 API 클라이언트 간의 트래픽을 보호하려면AWS PrivateLinkSecretsManager API 끝점에 비공개로 액세스 할 수 있습니다.

162

Page 169: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서인프라 보안

AWS Secrets Manager의 인프라 보안관리형 서비스인 AWS Secrets Manager 는 AWS 글로벌 네트워크 보안 절차로 보호됩니다.Amazon WebServices: 보안 프로세스 개요백서

AWS 에서 게시한 API 호출을 사용하여 네트워크를 통해 Secrets Manager 에 액세스합니다. 클라이언트가TLS(전송 계층 보안) 1.1 이상을 지원해야 합니다. TLS 1.2 이상을 권장합니다. 클라이언트는 EphemeralDiffie-Hellman(DHE) 또는 Elliptic Curve Ephemeral Diffie-Hellman(ECDHE)과 같은 PFS(전달 완전 보안,Perfect Forward Secrecy)가 포함된 암호 제품군도 지원해야 합니다. Java 7 이상의 최신 시스템은 대부분 이러한 모드를 지원합니다.

또한 요청은 액세스 키 ID 및 IAM 주체와 관련된 보안 액세스 키를 사용하여 서명해야 합니다. 혹은 AWSSecurity Token Service(AWS STS)를 사용해 요청서에 서명하기 위한 임시 보안 자격 증명을 생성할 수도 있습니다.

AWS Secrets Manager 에서AWS에서는 AWS 리전 및 가용 영역을 중심으로 글로벌 인프라를 구축합니다. AWS 지역에서는 물리적으로분리되고 격리된 다수의 가용 영역을 제공하며 이러한 가용 영역은 짧은 지연 시간, 높은 처리량 및 높은 중복성을 갖춘 네트워크에 연결되어 있습니다. 가용 영역을 사용하면 중단 없이 영역 간에 자동으로 장애 조치가 이루어지는 애플리케이션 및 데이터베이스를 설계하고 운영할 수 있습니다. 가용 영역은 기존의 단일 또는 다중 데이터 센터 인프라보다 가용성, 내결함성, 확장성이 뛰어납니다.

복구 및 재해 복구에 대한 자세한 내용은AWS Well-Architected Framework 에서는 다음과 같이 지정합니다.를 선택합니다.

AWS 리전 및 가용 영역에 대한 자세한 내용은 AWS 글로벌 인프라를 참조하십시오.

AWS SecRts Manager에 사용되는 규정 준수타사 감사자는 여러 AWS 규정 준수 프로그램의 일환으로 AWS Secrets Manager 의 보안 및 규정 준수를 평가합니다. 여기에는 SOC, PCI, HIPAA 등이 포함됩니다.

특정 규정 준수 프로그램이 적용되는 AWS 서비스 목록은 규정 준수 프로그램 제공 범위 내 AWS 서비스를참조하십시오. 일반적인 내용은 AWS 규정 준수 프로그램을 참조하십시오.

AWS Artifact를 사용하여 타사 감사 보고서를 다운로드할 수 있습니다. 자세한 내용은 AWS Artifact에서 보고서 다운로드를 참조하십시오.

Secrets Manager 를 사용할 때 규정 준수 책임은 데이터의 민감도, 회사의 규정 준수 목표 및 관련 법률 및 규정에 따라 결정됩니다. AWS는 규정 준수에 도움이 되도록 다음 리소스를 제공합니다.

• 보안 및 규정 준수 빠른 시작 안내서 – 이 배포 가이드에서는 아키텍처 고려 사항에 대해 설명하고 AWS에서 보안 및 규정 준수에 중점을 둔 기본 환경을 배포하기 위한 단계를 제공합니다.

• HIPAA 보안 및 규정 준수에 따라 아키텍처 설계 백서 – 이 백서에서는 기업에서 AWS를 사용하여 HIPAA를 준수하는 애플리케이션을 만드는 방법을 설명합니다.

• AWS 규정 준수 리소스 – 이 워크북 및 안내서 모음은 귀사가 속한 업계 및 국가에 적용될 수 있습니다.• 규칙을 사용하여 리소스 평가의AWS Config 개발자 안내서AWS Config 서비스는 사용자의 리소스 구성이

내부 관행, 업계 지침 및 규정을 얼마나 잘 준수하는지 평가합니다.• AWS Security Hub – 이 AWS 서비스는 AWS 내의 보안 상태를 포괄적으로 검토해 사용자가 보안 업계 표

준 및 모범 사례를 준수하는지 확인하는 데 도움을 줍니다.

163

Page 170: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서AWS Secrets Manager AWS KMS 사용하는 방법

AWS Secrets Manager이 섹션의 주제를 이용해 AWS Secrets Manager

주제• AWS Secrets Manager AWS KMS 사용하는 방법 (p. 164)• AWS Secrets Manager 를 위한 할당량 (p. 171)• Lambda 교체 함수를 생성하는 데 사용할 수 있는 AWS 템플릿 (p. 173)• AWS 암호 관리에 사용할 수 있는 AWS 관리형 정책 (p. 180)• IAM 정책 또는 AWS Secrets Manager 보안 암호 정책에서 사용할 수 있는 작업, 리소스 및 컨텍스트

키 (p. 180)

AWS Secrets Manager AWS KMS 사용하는 방법AWS 보안 AWS Secrets Manager 지원합니다.는 암호를 암호화 및 저장하고 투명하게 해독한 다음 일반 텍스트로 반환하는 서비스로 사용합니다. 애플리케이션에서 일반 텍스트로 저장되거나 하드 코딩되지 않아야하며, 주기적으로 변경되는 로그인 자격 증명과 같은 애플리케이션 암호를 저장하기 위해 특별히 설계되었습니다. 애플리케이션에서는 하드 코딩된 자격 증명이나 테이블 조회 대신에 Secrets Manager 호출합니다.

Secrets Manager 일반적으로 사용되는 데이터베이스와 연결된 암호를 정기적으로 교체하는 기능도 지원합니다. Secrets Manager는 항상 저장하기 전에 새로 교체된 암호를 암호화합니다.

Secrets Manager AWS Key Management Service (AWS KMS) 와 통합하여 모든 암호의 모든 버전을 고유한데이터 키AWS KMS 에서 보호고객 마스터 키(CMK). 이러한 통합은 AWS KMS 가 암호화되지 않은 상태로 방치되지 않는 암호화 키로 암호를 보호합니다. 또한 CMK에 대한 사용자 지정 권한을 설정하고 암호를보호하는 데이터 키를 생성, 암호화 및 해독하는 작업을 감사할 수 있도록 합니다.

주제• 암호 값 보호 (p. 164)• 암호 암호화 및 해독 (p. 165)• AWS KMS CMK 사용 (p. 166)• CMK 사용 권한 부여 (p. 167)• Secrets Manager 암호화 컨텍스트 (p. 168)• AWS KMS 와의 Secrets Manager 상호 작용 모니터링 (p. 170)

암호 값 보호보안 암호 Secrets Manager 보호하기 위해보안 암호 값는 비밀리에.

Secrets Manager암호는 다음과 같이 구성됩니다.보안 암호 값라고도 합니다.보호된 비밀 텍스트또는암호화된 보안 암호 데이터, 관련 메타데이터 및 버전 정보가 포함됩니다. 암호 값은 최대 65,536바이트의 문자열또는 이진 데이터일 수 있지만, 일반적으로 서버나 데이터베이스에 대한 로그인 정보를 구성하는 이름-값 페어 모음으로 구성됩니다.

164

Page 171: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서암호 암호화 및 해독

Secrets Manager 암호를 저장하기 전에 항상 전체 암호 값을 암호화합니다. Secrets Manager 값을 가져오거나 변경할 때마다 암호 값을 투명하게 해독합니다. 암호화를 활성화 또는 비활성화하는 옵션은 없습니다. 보안 암호 값을 암호화하거나 해독하기 위해 는 AWS KMS Secrets Manager 사용합니다.

암호 암호화 및 해독비밀을 보호하기 위해 Secrets Manager봉투 암호화AWS KMS 사용고객 마스터 키(CMK) 및데이터 키각 암호 값을 보호하기 위해. 암호의 암호 값이 변경될 때마다 Secrets Manager 새 데이터 키를 사용하여 암호 값을 보호합니다. 다음 이미지와 같이, 데이터 키는 AWS KMS CMK로 암호화되어 암호의 메타데이터에 저장됩니다. 암호를 해독하려는 경우 Secrets Manager 먼저 AWS KMS 의 CMK를 사용하여 암호화된 데이터 키를 해독해야 합니다.

각 암호의 AWS KMS CMK각 암호는 AWS 관리형 또는 고객 관리형고객 마스터 키(CMK). 고객 관리형 CMK를 사용하면 권한이 있는사용자가 정책 및 허가를 통해 CMK에 대한 액세스를 제어하고, 자동 교체를 관리하며, 가져온 키 구성 요소를 사용할 수 있습니다.

Important

Secrets Manager 만 지원CMK를 선택합니다. 를 사용할 수 없습니다.비대칭 CMK를 사용하여 암호를 암호화할 수 있습니다. CMK가 대칭 또는 비대칭인지 여부를 확인하는 방법은 단원을 참조하십시오.대칭 및 비대칭 CMK 식별를 선택합니다.

새 암호를 생성하는 경우 계정 및 리전의 대칭 고객 관리형 CMK 또는 Secrets Manager 용 AWS 관리형 CMK,aws/secretsmanager를 선택합니다. CMK를 지정하지 않거나 콘솔 기본값을 선택하는 경우DefaultEncryptionKey을 선택하면 Secrets Manageraws/secretsmanagerCMK가 존재하지 않는 경우는 암호와 연결합니다. 계정의 각 암호에 대해 동일한 CMK 또는 다른 CMK를 사용할 수 있습니다.

언제든지 암호 관리자 콘솔에서 암호에 대한 CMK를 변경할 수 있으며,UpdateSecret작업을 수행합니다.Secrets Manager CMK를 변경할 때 에서 기존 암호 값을 새 CMK로 다시 암호화하지 않습니다. 하지만 암호값이 다음 번에 변경될 때는 Secrets Manager 새 CMK로 암호화합니다.

암호와 연결된 CMK를 찾으려면ListSecrets또는DescribeSecret작업을 수행합니다. 비밀이 AWS 관리형 보안 Secrets Manager CMK와 연결된 경우 (aws/secretsmanager), 이러한 작업은 CMK 식별자를 반환하지않습니다.

165

Page 172: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서AWS KMS CMK 사용

보안 Secrets Manager CMK를 사용하여 암호 값을 직접 암호화하지 않습니다. 대신 CMK를 사용하여 고유한 데이터 키를 생성 및 암호화하고, 그 데이터 키를 사용하여 암호 값을 암호화합니다.

각 암호 값에 대한 고유 데이터 키암호의 암호 값을 만들거나 변경할 때마다 Secrets Manager 암호와 연결된 CMK를 사용하여 고유한 256비트 고급 암호화 표준 (AES) 대칭 암호화 표준을 생성 및 암호화합니다.데이터 키를 선택합니다. SecretsManager 일반 텍스트 데이터 키를 사용하여 AWS KMS 외부에서 암호 값을 암호화한 다음 메모리에서 제거합니다. 데이터 키의 암호화된 사본을 암호의 메타데이터에 저장합니다.

암호 값은 궁극적으로 CMK에 의해 보호되므로 AWS KMS 가 암호화되지 않은 상태로 방치되지 않습니다.Secrets Manager 암호를 해독하기 전에 AWS KMS 에 암호화된 데이터 키를 해독하도록 요청해야 합니다.

암호 값 암호화암호 값을 암호화하기 위해 Secrets Manager 다음 프로세스를 사용합니다.

1. Secrets Manager AWS KMS 를 호출합니다.GenerateDataKey는 256비트 AES 대칭 키에 대한 요청과 암호용 CMK ID를 사용하여 작업을 호출합니다. AWS KMS 는 일반 텍스트 데이터 키와 CMK로 암호화된 해당 데이터 키의 복사본을 반환합니다.

2. Secrets Manager 일반 텍스트 데이터 키와 고급 암호화 표준 (AES) 알고리즘을 사용하여 AWS KMS 외부에서 암호 값을 암호화합니다. 사용한 후에는 가능한 빨리 메모리에서 일반 텍스트 키를 제거합니다.

3. Secrets Manager 암호 값을 해독하는 데 사용할 수 있도록 암호의 메타데이터에 암호화된 데이터 키를 저장합니다. 하지만 Secrets Manager API 중에서 어떤 것도 암호화된 암호나 암호화된 데이터 키를 반환하지 않습니다.

암호 값 해독암호화된 암호 값을 해독하려는 경우 Secrets Manager 먼저 암호화된 데이터 키를 해독해야 합니다. 데이터키가 AWS KMS의 암호용 CMK로 암호화되므로 Secrets Manager AWS KMS에 요청해야 합니다.

암호화된 암호 값을 해독하려면:

1. Secrets Manager AWS KMS 를 호출합니다.암호화 해제작업을 수행하고 암호화된 데이터 키를 전달합니다.

2. AWS KMS 는 암호용 CMK를 사용하여 데이터 키를 해독합니다. 그런 다음 일반 텍스트 데이터 키를 반환합니다.

3. Secrets Manager 일반 텍스트 데이터 키를 사용하여 암호 값을 해독합니다. 그런 다음 가능한 빨리 메모리에서 데이터 키를 제거합니다.

AWS KMS CMK 사용Secrets Manager 다음을 사용하여고객 마스터 키는 암호와 연결된 CMK (CMK) 를 사용하여 각 암호 값에 대한 데이터 키를 생성할 수 있도록 합니다. 암호 관리자는 암호화된 암호 값을 해독하는 데 필요할 경우 암호관리자를 사용하여 해당 데이터 키를 해독합니다. AWS CloudTrail 이벤트에서 요청 및 응답을 추적할 수 있습니다.Amazon CloudWatch Logs및 감사 추적에 대한 정보를 제공합니다.

다음 Secrets Manager 작업은 AWS KMS CMK 사용 요청을 트리거합니다.

GenerateDataKey

Secrets Manager AWS KMS 를 호출합니다.GenerateDataKey다음 Secrets Manager 작업에 대 한 응답으로 작업을 수행 합니다.

166

Page 173: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서CMK 사용 권한 부여

• CreateSecret— 새 암호에 암호 값이 포함된 경우 암호 Secrets Manager 값을 암호화하기 위해 새 데이터 키를 요청합니다.

• PutSecretValue— Secrets Manager 지정된 암호 값을 암호화하기 위해 새 데이터 키를 요청합니다.• UpdateSecret— 업데이트로 암호 값이 변경되는 경우 Secrets Manager 새 암호 값을 암호화하기 위

해 새 데이터 키를 요청합니다.

Note

RotateSecret 작업은 암호 값을 변경하지 않으므로 GenerateDataKey를 호출하지 않습니다. 하지만 RotateSecret에서 호출하는 Lambda 함수가 암호 값을 변경하는 경우PutSecretValue 작업에 대한 호출로 GenerateDataKey 요청이 트리거됩니다.

암호화 해제

암호화된 보안 암호 값을 해독하기 위해 AWS KMS Secrets Manager 호출합니다.암호화 해제작업을 사용하여 암호의 암호화된 데이터 키를 해독합니다. 그런 다음, 일반 텍스트 데이터 키를 사용하여 암호화된 암호 값을 해독합니다.

Secrets Manager 호출암호화 해제다음 Secrets Manager 작업에 대 한 응답으로 작업을 수행 합니다.• GetSecretValue— Secrets Manager 암호 값을 호출자에게 반환하기 전에 암호 값을 해독합니다.• PutSecretValue및UpdateSecret— MostPutSecretValue및UpdateSecret요청을 트리거하지 않

는Decrypt작업을 수행합니다. 그러나, 때PutSecretValue또는UpdateSecret요청이 암호의 기존 버전에서 암호 값을 변경하려 할 경우, Secret Manager는 기존 암호 값을 해독하고 요청의 암호 값과 비교하여 동일한지 확인합니다. 이 작업을 통해 Secrets Manager 작업을 idempotent가 유지됩니다.

CMK에 대한 액세스 검증

암호와 연결된 CMK를 설정하거나 변경할 때 Secrets ManagerGenerateDataKey및Decrypt작업을지정된 CMK로 바꿉니다. 이러한 호출은 호출자가 해당 작업에 대해 CMK를 사용할 수 있는 권한이 있는지 확인합니다. Secrets Manager 이러한 작업의 결과를 무시하며, 암호화 작업에서 사용하지 않습니다.

이러한 요청에서는 SecretVersionId 키 암호화 컨텍스트 값이 RequestToValidateKeyAccess이므로 이와 같은 검증 호출을 식별할 수 있습니다.

Note

예전에는 Secrets Manager 검증 호출에 암호화 컨텍스트가 포함되지 않았습니다. 오래된 AWSCloudTrail 로그에서는 암호화 컨텍스트가 없는 호출을 찾아볼 수 있습니다.

CMK 사용 권한 부여Secrets Manager 사용하는 경우고객 마스터 키(CMK) 를 암호화 작업에서 사용하는 경우 는 암호의 암호 값을 만들거나 변경하는 사용자를 대신하여 작업합니다.

사용자를 대신하여 암호에 대해 AWS KMS 고객 마스터 키 (CMK) 를 사용하려면 사용자에게 다음 권한이 있어야 합니다. IAM 정책이나 키 정책에서 이러한 필수 권한을 지정할 수 있습니다.

• kms:GenerateDataKey• kms:Decrypt

Secrets Manager 생성된 요청에 대해서만 CMK를 사용할 수 있도록 하려면KMS:서비스 조건 키를 사용하여secretsmanager.<region>.amazonaws.comUSD 상당.

암호화 작업에 대한 CMK 사용 조건으로서 암호화 컨텍스트에서 키나 값을 사용할 수도 있습니다. 예를 들어를 사용할 수 있습니다.문자열 조건 연산자를 사용하거나, IAM 또는 키 정책 문서에서제약 조건 부여보조금에.

167

Page 174: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Secrets Manager 암호화 컨텍스트

AWS 관리형 CMK의 주요 정책암호 관리자용 AWS 관리형 CMK에 대한 키 정책은 암호 관리자가 사용자를 대신하여 요청할 때만 지정된작업에 대해 CMK를 사용할 수 있는 권한을 사용자에게 부여합니다. 키 정책에서는 사용자가 CMK를 직접 사용하도록 허용하지 않습니다.

이 키 정책은 모든 AWS 관리형 키의 정책처럼 서비스로 연결됩니다. 키 정책은 변경할 수 없지만 언제든지볼 수 있습니다. 자세한 내용은 다음을 참조하십시오키 정책 보기를 선택합니다.

키 정책의 정책 설명문은 다음 효과를 갖습니다.

• 계정 내 사용자가 Secrets Manager 대신 요청할 때만 암호화 작업에 대해 CMK를 사용할 수 있도록 합니다. kms:ViaService 조건 키는 이 제한을 강제 적용합니다.

• AWS 계정에서 사용자가 CMK 속성을 보고 권한 부여를 취소하도록 허용하는 IAM 정책을 생성할 수 있도록 허용합니다.

• Secrets Manager CMK에 대한 액세스 권한을 얻기 위해 부여를 사용하지 않지만 이 정책은 SecretsManager 도권한 부여 생성사용자를 대신하여 CMK에 대해 계정에 다음을 허용합니다.권한 부여 취소보안Secrets Manager CMK를 사용할 수 있도록 허용합니다. AWS 관리형 CMK용 정책 문서의 표준 요소입니다.

다음은 Secrets Manager 용 AWS 관리형 CMK 예제에 대한 키 정책입니다.

{ "Version" : "2012-10-17", "Id" : "auto-secretsmanager-1", "Statement" : [ { "Sid" : "Allow access through AWS Secrets Manager for all principals in the account that are authorized to use AWS Secrets Manager", "Effect" : "Allow", "Principal" : { "AWS" : "*" }, "Action" : [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey" ], "Resource" : "*", "Condition" : { "StringEquals" : { "kms:ViaService" : "secretsmanager.us-west-2.amazonaws.com", "kms:CallerAccount" : "111122223333" } } },{ "Sid" : "Allow direct access to key metadata to the account", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:root" }, "Action" : [ "kms:Describe*", "kms:Get*", "kms:List*", "kms:RevokeGrant" ], "Resource" : "*" } ]}

Secrets Manager 암호화 컨텍스트암호화 컨텍스트는 보안되지 않은 임의의 데이터를 포함하는 키-값 페어 세트입니다. 데이터 암호화 요청에암호화 컨텍스트를 포함하는 경우, AWS KMS는 암호화된 데이터에 암호화 컨텍스트를 암호 방식으로 바인딩합니다. 따라서 동일한 암호화 컨텍스트로 전달해야 이 데이터를 해독할 수 있습니다.

168

Page 175: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Secrets Manager 암호화 컨텍스트

그 안에GenerateDataKey및암호화 해제요청에 따라 보안 Secrets Manager 다음 예와 같이 암호와 해당 버전을 식별하는 두 개의 이름 (값 쌍) 이 포함된 암호화 컨텍스트를 사용합니다. 이름은 달라지지 않지만, 결합된 암호화 컨텍스트 값은 각 암호 값마다 다릅니다.

"encryptionContext": { "SecretARN": "arn:aws:secretsmanager:us-west-2:111122223333:secret:test-secret-a1b2c3", "SecretVersionId": "EXAMPLE1-90ab-cdef-fedc-ba987SECRET1"}

암호화 컨텍스트를 사용하여 같은 감사 레코드 및 로그에서 이러한 암호화 작업을 식별할 수 있습니다.AWSCloudTrail및 Amazon CloudWatch Logs 사용하여 정책 및 권한 부여의 권한 부여 조건으로서 사용할 수 있습니다.

Secrets Manager 암호화 컨텍스트는 이름-값 페어로 구성됩니다.

• SecretARN— 첫 번째 이름-값 페어는 암호를 식별합니다. 키는 SecretARN입니다. 이 값은 암호의Amazon 리소스 이름(ARN)입니다.

"SecretARN": "ARN of an Secrets Manager secret"

예를 들어, 비밀 ARN이 arn:aws:secretsmanager:us-west-2:111122223333:secret:test-secret-a1b2c3이면 암호화 컨텍스트는 다음 쌍을 포함합니다.

"SecretARN": "arn:aws:secretsmanager:us-west-2:111122223333:secret:test-secret-a1b2c3"

• SecretVersionId— 두 번째 이름-값 페어는 암호의 버전을 식별합니다. 키는 SecretVersionId입니다.이 값은 버전 ID입니다.

"SecretVersionId": "<version-id>"

예를 들어, 암호의 버전 ID가 EXAMPLE1-90ab-cdef-fedc-ba987SECRET1이면 암호화 컨텍스트에는다음 쌍이 포함됩니다.

"SecretVersionId": "EXAMPLE1-90ab-cdef-fedc-ba987SECRET1"

비밀에 대한 CMK를 설정하거나 변경하면 Secrets ManagerGenerateDataKey및암호화 해제요청을 통해 호출자가 해당 작업에 대해 CMK를 사용할 수 있는 권한이 있는지 검증합니다. 응답을 무시하므로 암호 값에응답을 사용하지 않습니다.

이러한 검증 요청에서 SecretARN의 값은 암호의 실제 ARN이지만, SecretVersionId 값은 다음 예제 암호화 컨텍스트에서 나와 있는 것처럼 RequestToValidateKeyAccess입니다. 이 특수 값은 로그 및 감사내역에서 검증 요청을 식별하는 데 도움이 됩니다.

"encryptionContext": { "SecretARN": "arn:aws:secretsmanager:us-west-2:111122223333:secret:test-secret-a1b2c3", "SecretVersionId": "RequestToValidateKeyAccess"}

Note

예전에는 Secrets Manager 검증 요청에 암호화 컨텍스트가 포함되지 않았습니다. 오래된 AWSCloudTrail 로그에서는 암호화 컨텍스트가 없는 호출을 찾아볼 수 있습니다.

169

Page 176: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서AWS KMS 와의 Secrets Manager 상호 작용 모니터링

AWS KMS 와의 Secrets Manager 상호 작용 모니터링AWS CloudTrail 및 Amazon CloudWatch Logs 사용하여 Secrets Manager 사용자를 대신하여 AWS KMS 에전송하는 요청을 추적할 수 있습니다.

GenerateDataKey

때 당신은생성 또는 변경는 암호의 암호 값을 암호에서 암호 관리자는GenerateDataKey요청을 암호에대한 CMK를 지정하는 AWS KMS 에 보냅니다.

GenerateDataKey 작업을 기록하는 이벤트는 다음 예제 이벤트와 유사합니다. 이 요청은secretsmanager.amazonaws.com에 의해 호출됩니다. 파라미터로는 암호용 CMK의 Amazon 리소스 이름(ARN), 256비트 키를 요구하는 키 지정자, 그리고 암호와 버전을 식별하는 암호화 컨텍스트가 있습니다.

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AROAIGDTESTANDEXAMPLE:user01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/user01", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2018-05-31T23:23:41Z" } }, "invokedBy": "secretsmanager.amazonaws.com" }, "eventTime": "2018-05-31T23:23:41Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "us-west-2", "sourceIPAddress": "secretsmanager.amazonaws.com", "userAgent": "secretsmanager.amazonaws.com", "requestParameters": { "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "keySpec": "AES_256", "encryptionContext": { "SecretARN": "arn:aws:secretsmanager:us-west-2:111122223333:secret:test-secret-a1b2c3", "SecretVersionId": "EXAMPLE1-90ab-cdef-fedc-ba987SECRET1" } }, "responseElements": null, "requestID": "a7d4dd6f-6529-11e8-9881-67744a270888", "eventID": "af7476b6-62d7-42c2-bc02-5ce86c21ed36", "readOnly": true, "resources": [ { "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333", "type": "AWS::KMS::Key" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333"}

170

Page 177: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서AWS Secrets Manager 를 위한 할당량

암호화 해제

언제 든 지가져오기 또는 변경비밀의 비밀 값, Secrets Manager암호화 해제요청을 AWS KMS 암호화된데이터 키를 해독할 수 있습니다.

Decrypt 작업을 기록하는 이벤트는 다음 예제 이벤트와 유사합니다. 사용자는 테이블에 액세스 중인AWS 계정의 보안 주체입니다. 매개 변수에는 암호화된 테이블 키 (암호문 Blob) 와암호화 컨텍스트에서테이블 및 AWS 계정을 식별합니다. AWS KMS 는 암호문에서 CMK의 ID를 가져옵니다.

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AROAIGDTESTANDEXAMPLE:user01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/user01", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2018-05-31T23:36:09Z" } }, "invokedBy": "secretsmanager.amazonaws.com" }, "eventTime": "2018-05-31T23:36:09Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-west-2", "sourceIPAddress": "secretsmanager.amazonaws.com", "userAgent": "secretsmanager.amazonaws.com", "requestParameters": { "encryptionContext": { "SecretARN": "arn:aws:secretsmanager:us-west-2:111122223333:secret:test-secret-a1b2c3", "SecretVersionId": "EXAMPLE1-90ab-cdef-fedc-ba987SECRET1" } }, "responseElements": null, "requestID": "658c6a08-652b-11e8-a6d4-ffee2046048a", "eventID": "f333ec5c-7fc1-46b1-b985-cbda13719611", "readOnly": true, "resources": [ { "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333", "type": "AWS::KMS::Key" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333"}

AWS Secrets Manager 를 위한 할당량이 단원에서는 AWS SecRets Manager에 대한 할당량을 설명합니다.

에 대한 내용은서비스 엔드포인트단원을 참조하십시오.AWS SecRets Manager 엔드포인트 및 할당량지역서비스 끝점을 포함합니다. 계정에서 미국 동부 (버지니아 북부) 리전 및 미국 서부 (캘리포니아 북부) 리전등 여러 리전을 운영할 수 있으며 각 할당량은 각 리전별로 다릅니다.

171

Page 178: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서이름에 대한 제한 사항

이름에 대한 제한 사항AWS SecREts Manager에는 보안 암호 이름을 포함하여 생성된 이름에 대해 다음과 같은 제한 사항이 있습니다.

• 보안 암호 이름은 유니코드 문자를 사용해야 합니다.• 보안 암호 이름은 512자를 초과할 수 없습니다.

최대 할당량다음은 AWS SecREts Manager의 개체에 대한 최대 할당량입니다.

Note

계정에서 여러 지역을 운영할 수 있으며 각 할당량은 각 지역마다 다릅니다.

엔터티 값

AWS 계정의 보안 암호 40,000

보안 암호 버전 ~100

보안 암호의 모든 버전에연결된 레이블

20

레이블에 동시에 연결된버전

1

보안 암호의 길이 65,536바이트

리소스 기반 정책의 길이- JSON 텍스트

20,480자

비율 할당량이러한 파라미터에는 AWS Secrets Manager 에 대해 다음과 같은 비율 할당량이 있습니다.

요청 유형 초당 허용되는 연산 수

DescribeSecret

GetSecretValue

5,000

PutResourcePolicy

GetResourcePolicy

DeleteResourcePolicy

검증 자원 정책

CreateSecret

UpdateSecret

50

172

Page 179: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서교체 함수 템플릿

UpdateSecretVersionStage

PutSecretValue

DeleteSecret

RestoreSecret

RotateSecret

CancelRotateSecret

AssociateSecretLabels

DisassociateSecretLabels

GetRandomPassword

TagResource

UntagResource

ListSecrets

ListSecretVersionIds

Lambda 교체 함수를 생성하는 데 사용할 수 있는AWS 템플릿

이 단원에서는 AWS 보안 암호에 대한 Lambda 교체 함수를 생성하는 데 사용할 수 있는 AWS 관리형 템플릿에 대해 설명합니다. 이러한 템플릿은 AWS Serverless Application Repository 리와 연결됩니다. 이 저장소에서는 AWS CloudFormation 을 사용하여 미리 구성된 리소스의 '스택'을 생성하는 AWS 서버를 사용하지 않는 애플리케이션 리포지 이 경우 템플릿은 교체 발생 시 보안 암호에서 함수를 호출하기 위해 수임할 수 있는IAM 역할과 Lambda 함수로 구성된 스택을 생성합니다.

다음 템플릿을 사용하여 Lambda 교체 함수를 생성하려면 지정된 템플릿의 ARN 복사한 후 항목에 설명된CLI 명령에 붙여 넣을 수 있습니다.다른 데이터베이스 또는 서비스에 대한 AWS Secrets Manager 비밀 교체 (p. 108)를 선택합니다.

다음 템플릿은 서로 다른 조합의 데이터베이스 및 교체 전략에 대한 Lambda 교체 함수를 생성합니다. 각 템플릿 아래의 첫 번째 글머리표는 함수가 지원하는 데이터베이스 또는 서비스를 보여줍니다. 두 번째 글머리표는 함수에 의해 구현되는 교체 전략에 대해 설명합니다. 세 번째 글머리표는 교체 함수가 교체한 보안 암호의 SecretString 값에서 찾을 것으로 기대되는 JSON 구조를 지정합니다.

RDS 데이터베이스

• RDS MariaDB 단일 사용자 (p. 174)• RDS MariaDB 마스터 사용자 (p. 174)• RDS MySQL 단일 사용자 (p. 175)• RDS MySQL 다중 사용자 (p. 175)• RDS Oracle 단일 사용자 (p. 175)• RDS Oracle 마스터 사용자 (p. 176)• RDS PostgreSQL 단일 사용자 (p. 176)• RDS PostgreSQL 마스터 사용자 (p. 176)• RDS Microsoft SQLServer 단일 사용자 (p. 177)

173

Page 180: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서아마존 RDS 데이터베이스용 템플릿

• RDS Microsoft SQLServer 마스터 사용자 (p. 177)

기타 데이터베이스 및 서비스

• MongoDB 단일 사용자 (p. 178)• MongoDB 마스터 사용자 (p. 178)• Amazon Redshift (p. 179)• Amazon Redshift 기본 사용자 (p. 179)• 일반 교체 함수 템플릿 (p. 179)

아마존 RDS 데이터베이스용 템플릿RDS MariaDB 단일 사용자• 이름: SecretsManagerRDSMariaDBRotationSingleUser• 지원되는 데이터베이스/서비스: Amazon Relational Database Service (Amazon RDS) 데이터베이스 인스

턴스에 호스팅되는 MariaDB 데이터베이스• 교체 전략: 교체되는 보안 암호에 자격 증명이 저장되는 사용자에 대한 암호를 변경합니다. 이 전략에 대한

자세한 정보는 단일 암호로 AWS Secret Manager 보안 암호 교체 (p. 116) 단원을 참조하십시오.• ExpectedSecretString구조:

{ "engine": "mariadb", "host": "<required: instance host name/resolvable DNS name>", "username": "<required: username>", "password": "<required: password>", "dbname": "<optional: database name. If not specified, defaults to None>", "port": "<optional: TCP port number. If not specified, defaults to 3306>"}

• 소스 코드

RDS MariaDB 마스터 사용자• 이름: SecretsManagerRDSMariaDBRotationMultiUser• 지원되는 데이터베이스/서비스: Amazon RDS 데이터베이스 인스턴스에 호스팅되는 MariaDB• 교체 전략: 교체 중에 별도 보안 암호로 저장된 개별 마스터 사용자의 자격 증명을 사용하여 두 사용자가

교체됩니다. 보안 Secrets Manager 비활성 사용자의 암호를 변경합니다. 이 전략에 대한 자세한 정보는 기존 사용자 2명 간에 교대로 AWS Secrets Manager 보안 암호 교체 (p. 119) 단원을 참조하십시오.

• ExpectedSecretString구조:

{ "engine": "mariadb", "host": "<required: instance host name/resolvable DNS name>", "username": "<required: username>", "password": "<required: password>", "dbname": "<optional: database name. If not specified, defaults to None>", "port": "<optional: TCP port number. If not specified, defaults to 3306>", "masterarn": "<required: the ARN of the master secret used to create 2nd user and change passwords>"}

• 소스 코드

174

Page 181: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서아마존 RDS 데이터베이스용 템플릿

RDS MySQL 단일 사용자• 이름: SecretsManagerRDSMySQLRotationSingleUser• 지원되는 데이터베이스/서비스: Amazon Relational Database Service (Amazon RDS) 데이터베이스 인스

턴스에 호스팅되는 MySQL 데이터베이스• 교체 전략: 교체되는 보안 암호에 자격 증명이 저장되는 사용자에 대한 암호를 변경합니다. 이 전략에 대한

자세한 정보는 단일 암호로 AWS Secret Manager 보안 암호 교체 (p. 116) 단원을 참조하십시오.• ExpectedSecretString구조:

{ "engine": "mysql", "host": "<required: instance host name/resolvable DNS name>", "username": "<required: username>", "password": "<required: password>", "dbname": "<optional: database name. If not specified, defaults to None>", "port": "<optional: TCP port number. If not specified, defaults to 3306>"}

• 소스 코드

RDS MySQL 다중 사용자• 이름: SecretsManagerRDSMySQLRotationMultiUser• 지원되는 데이터베이스/서비스: Amazon RDS 데이터베이스 인스턴스에 호스팅되는 MySQL 데이터베이

스• 교체 전략: 교체 중에 개별 마스터 사용자의 자격 증명을 사용하여 두 사용자가 교대되고 별도 보안 암호로

저장됩니다. 보안 Secrets Manager 비활성 사용자의 암호를 변경합니다. 이 전략에 대한 자세한 정보는 기존 사용자 2명 간에 교대로 AWS Secrets Manager 보안 암호 교체 (p. 119) 단원을 참조하십시오.

• ExpectedSecretString구조:

{ "engine": "mysql", "host": "<required: instance host name/resolvable DNS name>", "username": "<required: username>", "password": "<required: password>", "dbname": "<optional: database name. If not specified, defaults to None>", "port": "<optional: TCP port number. If not specified, defaults to 3306>", "masterarn": "<required: the ARN of the master secret used to create 2nd user and change passwords>"}

• 소스 코드

RDS Oracle 단일 사용자• 이름: SecretsManagerRDSOracleRotationSingleUser• 지원되는 데이터베이스/서비스: Amazon Relational Database Service (Amazon RDS) 데이터베이스 인스

턴스에 호스팅되는 Oracle 데이터베이스• 교체 전략: 교체되는 보안 암호에 자격 증명이 저장되는 사용자에 대한 암호를 변경합니다. 이 전략에 대한

자세한 정보는 단일 암호로 AWS Secret Manager 보안 암호 교체 (p. 116) 단원을 참조하십시오.• ExpectedSecretString구조:

{

175

Page 182: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서아마존 RDS 데이터베이스용 템플릿

"engine": "oracle", "host": "<required: instance host name/resolvable DNS name>", "username": "<required: username>", "password": "<required: password>", "dbname": "<required: database name>", "port": "<optional: TCP port number. If not specified, defaults to 1521>"}

• 소스 코드

RDS Oracle 마스터 사용자• 이름: SecretsManagerRDSOracleRotationMultiUser• 지원되는 데이터베이스/서비스: Amazon RDS 데이터베이스 인스턴스에 호스팅되는 Oracle 데이터베이스• 교체 전략: 교체 중에 개별 마스터 사용자의 자격 증명을 사용하여 두 사용자가 교대되고 별도 보안 암호로

저장됩니다. 보안 Secrets Manager 비활성 사용자의 암호를 변경합니다. 이 전략에 대한 자세한 정보는 기존 사용자 2명 간에 교대로 AWS Secrets Manager 보안 암호 교체 (p. 119) 단원을 참조하십시오.

• ExpectedSecretString구조:

{ "engine": "oracle", "host": "<required: instance host name/resolvable DNS name>", "username": "<required: username>", "password": "<required: password>", "dbname": "<required: database name>", "port": "<optional: TCP port number. If not specified, defaults to 1521>", "masterarn": "<required: the ARN of the master secret used to create 2nd user and change passwords>"}

• 소스 코드

RDS PostgreSQL 단일 사용자• 이름: SecretsManagerRDSPostgreSQLRotationSingleUser• 지원되는 데이터베이스/서비스: Amazon RDS 데이터베이스 인스턴스에 호스팅되는 PostgreSQL 데이터

베이스• 교체 전략: 교체되는 보안 암호에 자격 증명이 저장되는 사용자에 대한 암호를 변경합니다. 이 전략에 대한

자세한 정보는 단일 암호로 AWS Secret Manager 보안 암호 교체 (p. 116) 단원을 참조하십시오.• ExpectedSecretString구조:

{ "engine": "postgres", "host": "<required: instance host name/resolvable DNS name>", "username": "<required: username>", "password": "<required: password>", "dbname": "<optional: database name. If not specified, defaults to 'postgres'>", "port": "<optional: TCP port number. If not specified, defaults to 5432>"}

• 소스 코드

RDS PostgreSQL 마스터 사용자• 이름: SecretsManagerRDSPostgreSQLRotationMultiUser

176

Page 183: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서아마존 RDS 데이터베이스용 템플릿

• 지원되는 데이터베이스/서비스: Amazon RDS 데이터베이스 인스턴스에 호스팅되는 PostgreSQL 데이터베이스

• 교체 전략: 교체 중에 개별 마스터 사용자의 자격 증명을 사용하여 두 사용자가 교대되고 별도 보안 암호로저장됩니다. 보안 Secrets Manager 비활성 사용자의 암호를 변경합니다. 이 전략에 대한 자세한 정보는 기존 사용자 2명 간에 교대로 AWS Secrets Manager 보안 암호 교체 (p. 119) 단원을 참조하십시오.

• ExpectedSecretString구조:

{ "engine": "postgres", "host": "<required: instance host name/resolvable DNS name>", "username": "<required: username>", "password": "<required: password>", "dbname": "<optional: database name. If not specified, defaults to 'postgres'>", "port": "<optional: TCP port number. If not specified, defaults to 5432>", "masterarn": "<required: the ARN of the master secret used to create 2nd user and change passwords>"}

• 소스 코드

RDS Microsoft SQLServer 단일 사용자• 이름: SecretsManagerRDSSQLServerRotationSingleUser• 지원되는 데이터베이스/서비스: Amazon RDS 데이터베이스 인스턴스에 호스팅되는 Microsoft SQLServer• 교체 전략: 교체되는 보안 암호에 자격 증명이 저장되는 사용자에 대한 암호를 변경합니다. 이 전략에 대한

자세한 정보는 단일 암호로 AWS Secret Manager 보안 암호 교체 (p. 116) 단원을 참조하십시오.• ExpectedSecretString구조:

{ "engine": "sqlserver", "host": "<required: instance host name/resolvable DNS name>", "username": "<required: username>", "password": "<required: password>", "dbname": "<optional: database name. If not specified, defaults to 'master'>", "port": "<optional: TCP port number. If not specified, defaults to 1433>"}

• 소스 코드

RDS Microsoft SQLServer 마스터 사용자• 이름: SecretsManagerRDSSQLServerRotationMultiUser• 지원되는 데이터베이스/서비스: Amazon RDS 데이터베이스 인스턴스에 호스팅되는 Microsoft SQLServer• 교체 전략: 교체 중에 개별 마스터 사용자의 자격 증명을 사용하여 두 사용자가 교대되고 별도 보안 암호로

저장됩니다. 보안 Secrets Manager 비활성 사용자의 암호를 변경합니다. 이 전략에 대한 자세한 정보는 기존 사용자 2명 간에 교대로 AWS Secrets Manager 보안 암호 교체 (p. 119) 단원을 참조하십시오.

• ExpectedSecretString구조:

{ "engine": "sqlserver", "host": "<required: instance host name/resolvable DNS name>", "username": "<required: username>", "password": "<required: password>", "dbname": "<optional: database name. If not specified, defaults to 'master'>", "port": "<optional: TCP port number. If not specified, defaults to 1433>",

177

Page 184: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서다른 데이터베이스용 템플릿

"masterarn": "<required: the ARN of the master secret used to create 2nd user and change passwords>"}

• 소스 코드

다른 데이터베이스용 템플릿MongoDB 단일 사용자• 이름: SecretsManagerMongoDBRotationSingleUser• 지원되는 데이터베이스/서비스: MongoDB 데이터베이스 버전 3.2 또는 3.4입니다.• 교체 전략: 교체되는 보안 암호에 자격 증명이 저장되는 사용자에 대한 암호를 변경합니다. 이 전략에 대한

자세한 정보는 단일 암호로 AWS Secret Manager 보안 암호 교체 (p. 116) 단원을 참조하십시오.• ExpectedSecretString구조:

{ "engine": "mongo", "host": "<required: instance host name/resolvable DNS name>", "username": "<required: username>", "password": "<required: password>", "dbname": "<optional: database name. If not specified, defaults to None>", "port": "<optional: TCP port number. If not specified, defaults to 27017>"}

• 소스 코드: 소스 코드

MongoDB 마스터 사용자• 이름: SecretsManagerMongoDBRotationMultiUser• 지원되는 데이터베이스 또는 서비스: MongoDB 데이터베이스 버전 3.2 또는 3.4입니다.• 교체 전략: 교체 중에 개별 마스터 사용자의 자격 증명을 사용하여 두 사용자가 교대되고 별도 보안 암호

로 저장됩니다. 비활성 사용자의 경우 비활성 사용자의 경우 활성 사용자가 되기 전에 에서 암호를 변경합니다. 이 전략에 대한 자세한 정보는 기존 사용자 2명 간에 교대로 AWS Secrets Manager 보안 암호 교체 (p. 119) 단원을 참조하십시오.

• ExpectedSecretString구조:

{ "engine": "mongo", "host": "<required: instance host name/resolvable DNS name>", "username": "<required: username>", "password": "<required: password>", "dbname": "<optional: database name. If not specified, defaults to None>", "port": "<optional: TCP port number. If not specified, defaults to 27017>", "masterarn": "<required: the ARN of the master secret used to create 2nd user and change passwords>"}

• 소스 코드

178

Page 185: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서다른 서비스용 템플릿

Amazon Redshift

arn:aws:serverlessrepo:us-east-1:123456789012:applications/SecretsManagerRDSMySQLRotationSingleUser

• 이름: 비서 관리자이동단일 사용자• 지원되는 데이터베이스/서비스: Amazon Redshift• 교체 전략: 교체되는 보안 암호에 자격 증명이 저장되는 사용자에 대한 암호를 변경합니다. 이 전략에 대한

자세한 정보는 단일 암호로 AWS Secret Manager 보안 암호 교체 (p. 116) 단원을 참조하십시오.• ExpectedSecretString구조:

{ "engine": "redshift", "host": "<required: instance host name/resolvable DNS name>", "username": "<required: username>", "password": "<required: password>", "dbname": "<optional: database name. If not specified, defaults to None>", "port": "<optional: TCP port number. If not specified, defaults to 5439>"}

• 소스 코드

Amazon Redshift 기본 사용자• 이름: 비밀관리관리자이동다중 사용자• 지원되는 데이터베이스/서비스: Amazon Redshift• 교체 전략: 교체 중에 별도 보안 암호로 저장된 개별 기본 사용자의 자격 증명을 사용하여 두 사용자가 교

대됩니다. 보안 Secrets Manager 활성 사용자가 되기 전에 비활성 사용자의 암호를 변경합니다. 이 전략에대한 자세한 정보는 기존 사용자 2명 간에 교대로 AWS Secrets Manager 보안 암호 교체 (p. 119) 단원을참조하십시오.

• ExpectedSecretString구조:

{ "engine": "redshift", "host": "<required: instance host name/resolvable DNS name", "username": "<required: username>", "password": "<required: password>", "dbname": "<optional: database name. If not specified, defaults to None", "port": "<optional: TCP port number. If not specified, defaults to 5439", "masterarn": "<required: the master secret ARN used to create 2nd user and change passwords"}

• 소스 코드

다른 서비스용 템플릿일반 교체 함수 템플릿• 이름: SecretsManagerRotationTemplate• 지원되는 데이터베이스/서비스: 없음. 원하는 서비스와 상호 작용하도록 코드를 제공합니다.• 교체 전략: 없음. 원하는 교체 전략을 구현하도록 코드를 제공합니다. 함수를 사용자 지정하는 방법에 대한

자세한 정보는 Lambda 회전 함수 이해 및 사용자 지정 (p. 112) 단원을 참조하십시오.

179

Page 186: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서관리형 정책

• ExpectedSecretString구조: 이를 작성한 코드의 일부로 정의합니다.• 소스 코드: 소스 코드

AWS 암호 관리에 사용할 수 있는 AWS 관리형 정책이 단원에서는 보안 암호에 대한 액세스 권한을 관리하는 데 유용한 AWS 관리형 정책을 살펴봅니다. AWS관리형 정책을 수정 또는 삭제할 순 없지만, 필요에 따라 계정 내 개체에 연결하거나 분리할 수는 있습니다.

Policy Name 설명 ARN

SecretsManagerReadWrite대부분의 Secrets Manager 대한 액세스 권한을 제공합니다. 교체 시 역할을 생성하려면 IAM 권한이 필요하므로 정책에서는 교체를 구성할 수 없습니다. Lambda 회전 함수를 구성하고 회전을 활성화해야 하는 사용자의 경우IAMFullAccess관리형 정책.

arn:aws:iam# aws:policy/SecretsManagerReadWrite

IAM 정책 또는 AWS Secrets Manager 보안 암호 정책에서 사용할 수 있는 작업, 리소스 및 컨텍스트 키

IAM 정책 또는 보안 암호 정책에서 참조할 수 있는 작업IAM 정책 또는 보안 암호 정책에서 권한을 지정하여 보안 암호에 대한 액세스를 제어할 수 있습니다. 작업에있는 각 권한을 수행 가능한 작업을 지정하는 리소스와 연결할 수 있습니다.

전체 작업 목록은 단원을 참조하십시오.AWS Secrets Manager에 사용되는 작업, 리소스 및 조건 키IAM 사용설명서의 단원도 참조하십시오.

IAM 정책 또는 보안 암호 정책에서 참조할 수 있는 리소스다음 표는 AWS Secrets Manager IAM 정책에서 지원되는 ARN 형식을 보여줍니다. 에서 각 엔터티의 ID를확인할 수 있습니다.보안 암호 세부 정보보안 암호 관리자 콘솔에서 각 보안 암호에 대한 페이지를 표시합니다.

확장 화살표 (↗) 을 클릭하면 새 창에서 표를 열 수 있습니다. 창을 닫으려면 오른쪽 아래 모서리에 있는 닫기버튼(X)을 선택합니다.

리소스 유형 ARN 형식

Secret ARN:AWS:비밀 관리자:<Region>:<AccountId>:보안 암호:OptionalPath/SecretName-6RandomCharacters

Secrets Manager 보안 암호 이름의 끝에 대시와 임의의 영숫자 6자를 추가해 ARN 의 마지막 부분을 구성합니다. 보안 암호를 삭제한 다음 이름이 동일한 다른 보안 암호를 다시 생성할 경우 보안 암호에 대한 권한을

180

Page 187: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서콘텍스트 키

가진 개인이 새 임의의 문자 6자를 새로 생성하므로 새 보안 암호에 대한 액세스 권한을 자동으로 얻을 수 없습니다.

IAM 정책 또는 보안 암호 정책에서 참조할 수 있는 콘텍스트 키AWS Secrets Manager의 컨텍스트 키는 일반적으로 API 호출의 요청 파라미터에 해당합니다. 이를 통해 파라미터 값에 따라 요청을 허용하거나 차단할 수 있습니다.

각 컨텍스트 키는 조건 연산자를 사용하여 지정된 값과 비교할 수 있습니다. 사용되는 컨텍스트 키는 선택한작업에 따라 다릅니다. 이 주제의 시작 부분에 있는 작업 (p. 180) 섹션의 "콘텍스트 키" 열을 참조하십시오.

예를 들어 다른 사람이 검색하도록 허용할 수 있습니다.만 the AWSCURRENT보안 암호 값의 버전을 사용 하여Condition요소는 다음처럼 보일 것입니다.

"Condition": {"ForAnyValue:StringEquals" : {"secretsmanager:VersionStage" : "AWSCURRENT"}}

다음 표는 보안 암호 관리자 관련 컨텍스트 키를 표시합니다.Condition요소를 사용하여 작업에 대한 액세스를 더 세분화하여 제어할 수 있습니다. 아래 키 이외에 AWS 전역 조건 콘텍스트 키도 사용할 수 있습니다.

"조건" 요소에 대한 콘텍스트 키 설명 Type

aws:RequestTag/tag-key

Secrets Manager 에 대한 사용자의 요청에 있는 키를 기준으로 액세스를 필터링합니다.

문자열

aws:TagKeys

Secrets Manager 서비스에 대한 사용자의 요청에있는 모든 태그 키 이름의 목록을 기준으로 액세스를 필터링합니다.

문자열

Secretsmanager:Resource/AllowRotationLambdaArn

요청의 대상 리소스에 연결된 Lambda 교체 함수의ARN 기반으로 요청을 필터링합니다. 따라서 이 값과 일치하는 교체 Lambda ARN을 가진 보안 암호로만 액세스를 제한할 수 있습니다. 활성화된 교체가없거나 다른 교체 Lambda ARN이 있는 보안 암호는일치하지 않습니다.

ARN

비서 관리자:블록공개정책

비밀에 할당된 리소스 정책을 평가하고 공용 액세스를 허용하는 정책을 차단합니다.

secretsmanager:Description

요청의 Description 파라미터를 기반으로 요청을 필터링합니다.

문자열

secretsmanager:ForceDeleteWithoutRecovery

삭제에서 복구 기간을 지정하지 않는지 여부에 따라요청을 필터링합니다. 따라서 이 기능을 효과적으로비활성화할 수 있습니다.

secretsmanager:KmsKeyId

요청의 KmsKeyId 파라미터를 기반으로 요청을 필터링합니다. 따라서 요청에서 사용될 수 있는 키를제한할 수 있습니다.

문자열

secretsmanager:Name

요청의 Name 파라미터 값을 기반으로 요청을 필터링합니다. 따라서 보안 암호 이름을 이 값과 일치하는 것으로만 제한할 수 있습니다.

문자열

181

Page 188: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서콘텍스트 키

"조건" 요소에 대한 콘텍스트 키 설명 Type

secretsmanager:RecoveryWindowInDays

지정된 복구 기간을 기반으로 요청을 필터링합니다.복구 기간이 승인된 일 수와 일치하도록 적용할 수있습니다.

Long

Secretsmanager:ResourceTag/<tag-key>

보안 암호에 연결된 태그를 기반으로 요청을 필터링합니다. Replace <tag-key> 를 실제 태그 이름으로 변경합니다. 그런 다음 조건 연산자를 사용하여태그가 있는지 여부와 요청된 값을 포함할 수 있습니다.

문자열

secretsmanager:RotationLambdaArn

RotationLambdaARN 파라미터를 기반으로 요청을 필터링합니다. 따라서 보안 암호와 함께 사용할수 있는 Lambda 회전 함수를 제한할 수 있습니다.키를 CreateSecret 및 기존 보안 암호를 수정하는작업과 함께 사용할 수 있습니다.

ARN

secretsmanager:SecretId

SecretId 파라미터에 제공된 보안 암호의 고유식별자를 기반으로 요청을 필터링합니다. 보안 암호의 친숙한 이름 또는 ARN 이 될 수 있지만Secretsmanager:SecretID는 항상 ARN 형식입니다. 따라서 요청을 통해 액세스할 수 있는 보안암호를 제한할 수 있습니다.

ARN

secretsmanager:VersionId

요청의 VersionId 파라미터를 기반으로 요청을 필터링합니다. 따라서 액세스할 수 있는 보안 암호 버전을 제한할 수 있습니다.

문자열

secretsmanager:VersionStage

요청의 VersionStage 파라미터에서 식별된 스테이징 레이블을 기반으로 요청을 필터링합니다. 이 문자열 배열 파라미터의 값 중 하나와 일치하는 스테이징 레이블을 가진 보안 암호 버전으로만 액세스를제한할 수 있습니다. 이 키는 다중 값 문자열 배열을사용하므로 설정 연산자 중 하나를 사용하여 문자열을 이 값과 비교해야 합니다.

문자열

AWS 글로벌 조건 키AWS가 제공하는 AWS전역 조건 키에서는 액세스 제어에 IAM을 사용하는 모든 AWS 서비스에 대해 사전 정의된 조건 키 집합입니다. 예를 들면 요청의 보안 주체에 지정한 유형이 포함된 경우에만 액세스를 허용하도록 aws:PrincipalType 조건 키를 사용할 수 있습니다.

Secrets Manager 보안 암호 관리자는 모든 전역 조건 키를 지원합니다.aws:TagKeys및aws:RequestTag요청의 리소스 태그에 따라 액세스를 제어하는 조건 키를 사용합니다. 일부 AWS 서비스는 이러한 조건 키를 지원하지 않습니다.

주제• 보안 Secrets Manager 권한으로 정책에서 IP 주소 조건 사용 (p. 182)• Secrets Manager 권한으로 정책에서 VPC 엔드포인트 조건 사용 (p. 183)

보안 Secrets Manager 권한으로 정책에서 IP 주소 조건 사용Secrets Manager 를 사용하여 데이터베이스 또는 서비스에 대한 자격 증명을 보호할 수 있습니다. 그러나 지정할 때는 주의해야 합니다.IP 주소 조건 연산자또는aws:SourceIpSecrets Manager 보안 암호 관리자에대한 액세스를 허용하거나 거부하는 동일한 정책 설명에 조건 키를 사용합니다. 예를 들어, 정책AWS: 소스

182

Page 189: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서콘텍스트 키

IP를 기반으로 AWS 에 대한 액세스를 거부합니다.에서는 AWS 작업을 지정된 IP 범위의 요청으로 제한합니다.

회사 네트워크 IP 주소 범위에서만 보안 암호에 액세스할 수 있도록 해주는 유사한 정책을 보안 암호에 연결할 경우 회사 네트워크에서 요청을 호출하는 IAM 사용자의 요청은 예상대로 작동합니다. 하지만 Lambda 함수를 사용하여 교체를 활성화할 경우 등 다른 서비스에서 사용자를 대신하여 보안 암호에 액세스하도록 허용할 경우 해당 함수는 AWS 내부 주소 범위에서 Secrets Manager 작업을 호출합니다. IP 주소 필터가 있는 정책의 영향을 받는 요청은 실패합니다.

또한,aws:sourceIP에서 요청이 이루어지는 경우 조건 키는 덜 효과적입니다.Amazon VPC 엔드포인트를선택합니다. 요청을 특정 VPC 엔드포인트로 제한하려면 다음을 포함합니다.Secrets Manager VPC 포인트의 경우 을 사용하려면,aws:sourceVpce또는aws:sourceVpc조건 키를 사용합니다. 자세한 내용은 단원을 참조하십시오.VPC 엔드포인트 - 엔드포인트 사용 제어의Amazon VPC 사용 설명서를 선택합니다.

Secrets Manager 권한으로 정책에서 VPC 엔드포인트 조건 사용

Amazon VPC 엔드포인트를 지원하는 보안 Secrets Manager (p. 129)에서 제공하는 항목AWS PrivateLink를선택합니다. 다음을 사용할 수 있습니다.전역 조건 키IAM 정책 또는 IAM 정책 또는리소스 기반 정책 (p. 51)를 사용하여 특정 VPC 또는 VPC 엔드포인트의 요청에 대한 액세스를 허용하거나 거부할 수 있습니다.

• aws:SourceVpc는 지정된 VPC의 요청으로 액세스를 제한합니다.• aws:SourceVpce는 지정된 VPC 엔드포인트의 요청으로 액세스를 제한합니다.

Secrets Manager 보안 암호에 대한 액세스를 허용하거나 거부하는 보안 암호 정책 설명에 이러한 조건 키를 사용하면 보안 Secrets Manager 사용하여 사용자를 대신해 를 사용하여 보안 암호에 액세스하는 서비스에 대한 액세스를 실수로 거부하게 될 수 있습니다. VPC 내의 엔드포인트에서 일부 AWS 서비스만 실행할수 있습니다. 보안 암호에 대한 요청을 VPC 또는 VPC 엔드포인트로 제한하면 구성되지 않은 서비스에서Secrets Manager 호출에 실패할 수 있습니다.

183

Page 190: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서일반적인 문제 해결

AWS SecRets ManagerAWS SecRets Manager 작업 시 문제가 발생한다면 이 섹션의 주제를 참조하십시오.

주제• 일반적인 문제 해결 (p. 184)• AWS Secrets Manager 암호 교체 문제 해결 (p. 185)

일반적인 문제 해결이 문서의 정보를 사용하여 AWS Secrets Manager 로 작업 시 발생할 수 있는 액세스 거부 또는 기타 일반적인 문제를 진단하고 해결할 수 있습니다.

주제• AWS Secret Manager에 요청을 전송하면 “액세스 거부됨” 메시지가 표시됩니다. (p. 184)• 임시 보안 자격 증명으로 요청을 전송하면 "액세스 거부됨" 메시지가 표시됩니다. (p. 184)• 변경 사항이 경우에 따라 즉시 표시되지 않습니다. (p. 185)• 보안 암호를 생성할 때 “비대칭 CMK로 데이터 키를 생성할 수 없습니다.”라는 메시지가 나타납니

다. (p. 185)

AWS Secret Manager에 요청을 전송하면 “액세스 거부됨” 메시지가 표시됩니다.• 요청한 작업 및 리소스를 호출할 권한이 있는지 확인하십시오. 관리자가 IAM 정책을 여러분의 IAM 사용자

나 여러분이 멤버인 그룹에 연결해 권한을 부여해야 합니다. 이러한 권한을 부여하는 정책 명령문에 시간이나 IP 주소 제한 정책이 포함된다면, 요청을 전송할 때 이러한 요구사항을 충족해야 합니다. IAM 사용자,그룹 또는 역할에 대한 정책을 보거나 수정하는 방법에 대한 자세한 정보는 단원을 참조하십시오.정책 작업의IAM 사용 설명서를 선택합니다.

• AWS SDK를 사용하지 않고 API 요청에 수동으로 서명할 경우 올바르게 요청에 서명했는지 확인합니다.

임시 보안 자격 증명으로 요청을 전송하면 "액세스 거부됨" 메시지가 표시됩니다.• 요청에 올바른 권한이 있는지 확인하기 위해 사용 중인 IAM 사용자 또는 역할에 확인합니다. 임시 보안 자

격 증명에 대한 권한은 IAM 사용자 또는 역할에서 파생됩니다. 이는 권한이 IAM 사용자 또는 역할에 부여된 권한으로 제한됨을 의미합니다. 임시 보안 자격 증명의 권한이 결정되는 방법에 대한 자세한 정보는 단원을 참조하십시오.사용자 임시 보안 자격 증명에 대한 권한 제어의IAM 사용 설명서를 선택합니다.

• 요청에 올바르게 서명했고 요청이 잘 구성되었는지 확인합니다. 자세한 내용은 를 참조하십시오툴킷설명서를 참조하거나임시 보안 자격 증명을 사용해 AWS 리소스에 대한 액세스 요청하기의IAM 사용 설명서를선택합니다.

• 임시 보안 자격 증명이 만료되지 않았는지 확인합니다. 자세한 내용은 단원을 참조하십시오.임시 보안 자격 증명 요청하기의IAM 사용 설명서를 선택합니다.

184

Page 191: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서변경 사항이 경우에 따라 즉시 표시되지 않습니다.

변경 사항이 경우에 따라 즉시 표시되지 않습니다.사용자들이 전세계 데이터 센터의 컴퓨터들을 통해 액세스하는 서비스인 AWS Secret Manager는최종 일관성를 선택합니다. Secrets Manager (또는 다른 AWS 서비스) 에서 변경한 사항을, 있을 수 있는 모든 엔드포인트에서 보게 될 때까지는 시간이 걸립니다. 일부 지연은 서버에서 서버로, 복제 영역에서 복제 영역으로,전세계의 리전에서 리전으로 데이터를 보내는 데 걸리는 시간으로 인해 발생합니다. 또한 Secrets Manager는 성능 향상을 위해 캐싱을 사용하지만, 어떤 경우에는 이로 인해 시간이 더 걸릴 수 있습니다. 이러한 변화는 이전에 캐싱된 데이터가 끝날 때까지 가시화되지 않을 수 있습니다.

이러한 잠재적 지연을 고려하도록 전역 애플리케이션을 설계합니다. 또한 한 위치에서 변경한 내용이 다른위치에서 즉시 보이지 않을 때조차도 예상대로 작동하는지 확인합니다.

이로 인해 일부 다른 AWS 서비스가 받게 되는 영향에 대한 자세한 정보는 다음 리소스를 참조하십시오.

• 데이터 일관성 관리의Amazon Redshift 데이터베이스 개발자 안내서• Amazon S3 데이터 일관성 모델의Amazon Simple Storage Service 개발자 안내서• ETL 워크플로에 대해 Amazon S3 및 Amazon Elastic MapReduce 사용 시 일관성 유지AWS Big Data

Blog의 게시물• EC2 최종 일관성의Amazon EC2 API 참조•

보안 암호를 생성할 때 “비대칭 CMK로 데이터 키를 생성할 수 없습니다.”라는 메시지가 나타납니다.비대칭 CMK(고객 마스터 키) 대신 대칭 CMK를 사용하고 있는지 확인하십시오. Secret Manager는 보안 암호에 연결된 대칭 CMK (고객 마스터 키) 를 사용하여 각 보안 암호 값에 대한 데이터 키를 생성합니다. 또한Secret Manager는 암호화된 보안 암호 값을 해독해야 할 때 CMK를 사용하여 해당 데이터 키를 해독합니다.AWS CloudTrail 이벤트, Amazon CloudWatch 로그 및 감사 추적에서 요청 및 응답을 추적할 수 있습니다.현재 비대칭 CMK를 사용할 수 없습니다.

AWS Secrets Manager 암호 교체 문제 해결여기 정보를 사용하여 보안 Secrets Manager 교체할 때 발생할 수 있는 일반적인 오류를 진단 및 수정할 수있습니다.

AWS 보안 암호 관리자에서 보안 암호를 교체하려면 보안 암호를 소유하고 있는 데이터베이스 또는 서비스와 상호 작용할 방법을 정의하는 Lambda 함수를 사용해야 합니다.

일반적인 교체 오류• Lambda 교체 함수에 대한 진단 로그를 찾는 방법 (p. 186)• 교체가 시작되는 시기를 예측할 수 없음 (p. 186)• 보안 암호 교체를 구성하려고 할 때 "액세스 거부됨" (p. 186)• 교체를 활성화한 후 첫 번째 교체가 실패함 (p. 186)• 보안 암호 값의 형식이 교체 함수에서 요구하는 대로 지정되지 않았기 때문에 교체가 실패합니

다. (p. 187)• 보안 Secrets Manager 교체를 성공적으로 구성했지만 암호가 교체되고 있지 않다는 메시지를 표시

함 (p. 187)• 교체가 "Internal failure(내부 오류)" 메시지와 함께 실패함 (p. 187)• CloudTrail 에서 교체 중 액세스가 거부되었다는 오류를 표시함 (p. 188)

185

Page 192: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Lambda 교체 함수에 대한 진단 로그를 찾는 방법

Lambda 교체 함수에 대한 진단 로그를 찾는 방법교체 함수가 예상대로 작동하지 않을 경우 먼저 CloudWatch 로그를 확인해야 합니다. 보안 SecretsManager Lambda 교체 함수에 대한 템플릿 코드를 제공합니다. 이 코드는 오류 메시지를 CloudWatch 로그에 기록합니다.

Lambda 함수에 대한 CloudWatch 로그를 보려면 다음과 같이 하십시오.

1. https://console.aws.amazon.com/lambda/에서 AWS Lambda 콘솔을 엽니다.2. 함수 목록에서 보안 암호와 연결된 Lambda 함수의 이름을 선택합니다.3. [Monitoring] 탭을 선택합니다.4. [Invocation errors] 섹션에서 [Jump to Logs]를 선택합니다.

CloudWatch 콘솔이 열리고 함수에 대한 로그가 표시됩니다.

교체가 시작되는 시기를 예측할 수 없음시간이 아닌 다음 교체 날짜만 예측할 수 있습니다.

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

보안 암호 교체를 구성하려고 할 때 "액세스 거부됨"Lambda 교체 함수 ARN (Amazon 리소스 이름) 을 보안 암호에 추가할 때 보안 Secrets Manager 함수의권한을 확인합니다. 함수에 대한 역할 정책은 보안 Secrets Manager 서비스 보안 주체 를 부여해야 합니다.secretsmanager.amazonaws.com함수 호출 권한 (lambda:InvokeFunction).

다음 AWS CLI 명령을 실행하여 이 권한을 추가할 수 있습니다.

aws lambda add-permission --function-name ARN_of_lambda_function --principal secretsmanager.amazonaws.com --action lambda:InvokeFunction --statement-id SecretsManagerAccess

교체를 활성화한 후 첫 번째 교체가 실패함“마스터” 보안 암호를 사용하여 보안 서비스의 자격 증명을 변경하는 보안 암호에 대한 교체를 활성화하면 보안 Secrets Manager 교체에 필요한 대부분의 요소를 자동으로 구성합니다. 그러나 보안 Secrets ManagerLambda 함수에 대한 마스터 보안 암호를 읽을 수 있는 권한을 자동으로 부여할 수 없습니다. 이 권한을 명시적으로 직접 부여해야 합니다. 특히 Lambda 교체 함수에 연결된 IAM 역할에 연결된 정책에 추가하여 권한을부여합니다. 해당 정책에는 다음 명령문이 포함되어야 합니다(이는 완전한 정책이 아니라 명령문임). 완전한정책의 경우 CloudTrail 에서 교체 중 액세스가 거부되었다는 오류를 표시함 (p. 188) 단원의 두 번째 샘플정책을 참조하십시오.

{ "Sid": "AllowAccessToMasterSecret", "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "ARN_of_master_secret"}

186

Page 193: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서보안 암호 값의 형식이 교체 함수에서 요구하는 대

로 지정되지 않았기 때문에 교체가 실패합니다.

교체 함수가 마스터 보안 암호에서 자격 증명을 검색한 다음 마스터 보안 암호 자격 증명을 사용하여 교체 보안 암호에 대한 자격 증명을 변경할 수 있습니다.

보안 암호 값의 형식이 교체 함수에서 요구하는 대로 지정되지 않았기 때문에 교체가 실패합니다.보안 암호 값의 JSON 구조 형식이 교체 함수에서 요구하는 대로 지정되지 않았기 때문에 교체가 실패할 수도 있습니다. 사용하는 교체 기능에 따라 사용 형식이 결정됩니다. 각 회전 함수가 비밀 값에 필요한 것에 대한 자세한 내용은예상되는 SecretString 값에서 관련 회전 함수 아래의 항목Lambda 교체 함수를 생성하는데 사용할 수 있는 AWS 템플릿 (p. 173)를 선택합니다.

예를 들어 MySQL 단일 사용자 교체 함수를 사용하는 경우, SecretString 텍스트 구조는 다음과 같이 나타나야 합니다.

{ "engine": "mysql", "host": "<required: instance host name/resolvable DNS name>", "username": "<required: username>", "password": "<required: password>", "dbname": "<optional: database name. If not specified, defaults to None>", "port": "<optional: TCP port number. If not specified, defaults to 3306>"}

보안 Secrets Manager 교체를 성공적으로 구성했지만암호가 교체되고 있지 않다는 메시지를 표시함이는 Lambda 함수가 보안 데이터베이스/서비스 또는 공용 인터넷에서 보안 Secrets Manager 서비스 엔드포인트와 통신하지 못하게 차단하는 네트워크 구성 문제가 있는 경우에 발생할 수 있습니다. VPC에서 데이터베이스 또는 서비스를 실행하는 경우 다음 두 가지 옵션 중 하나를 구성에 사용합니다.

• Amazon EC2 탄력적 IP 주소를 사용하여 VPC 데이터베이스에 공개적으로 액세스할 수 있게 합니다.• Lambda 교체 함수가 데이터베이스/서비스와 동일한 VPC 작동하도록 구성합니다.• VPC 가 퍼블릭 인터넷에 액세스할 권한이 없는 경우 (예:NAT 게이트웨이가 있는 VPC 구성합니다.액

세스를 위해, 당신은해야합니다Secrets Manager 용 프라이빗 서비스 엔드포인트를 사용하여 VPC 구성 (p. 86)VPC 내에서 액세스할 수 있습니다.

이러한 유형의 구성 문제가 교체 실패의 원인인지 확인하려면 다음 단계를 수행합니다.

교체 함수와 데이터베이스 또는 보안 Secrets Manager 간의 연결 문제를 진단하려면

1. Lambda 교체 함수에 대한 진단 로그를 찾는 방법 (p. 186) 절차에 따라 로그를 엽니다.2. 로그 파일을 검사하여 Lambda 함수와 AWS Secrets Manager 서비스 사이 또는 Lambda 함수와 보안

데이터베이스 또는 서비스 사이에 시간 초과가 발생한다고 나타나는지 확인합니다.3. VPC 환경 내에서 상호 작용할 서비스 및 Lambda 함수를 구성하는 방법에 대한 자세한 정보는Amazon

Virtual Private Cloud및AWS Lambda 개발자 안내서를 선택합니다.

교체가 "Internal failure(내부 오류)" 메시지와 함께 실패함교체 함수가 새 암호를 생성하여 데이터베이스에 새로운 자격 증명 세트로 저장하려고 할 때, 지정된 데이터베이스에 유효한 문자만 암호에 포함되는지 확인하십시오. 데이터베이스 엔진에서 허용하지 않는 문자가 암

187

Page 194: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서CloudTrail 에서 교체 중 액세스가 거부되었다는 오류를 표시함

호에 포함되어 있으면 사용자 암호 설정 시도가 실패합니다. "내부 오류(internal failure)" 메시지가 표시됩니다. 사용할 수 있는 문자 목록은 데이터베이스 설명서를 참조하십시오. 그런 다음, 사용 하 여 다른 모든 제외ExcludeCharacters의 파라미터GetRandomPasswordAPI 호출을 사용합니다.

CloudTrail 에서 교체 중 액세스가 거부되었다는 오류를표시함교체를 구성할 때 보안 Secrets Manager 교체 함수를 생성하도록 하는 경우 보안 암호 관리자는 해당 권한을부여하는 IAM 역할에 연결된 정책을 자동으로 제공합니다. 사용자 지정 함수를 생성하는 경우 해당 함수에연결된 역할에 다음 권한을 부여해야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:DescribeSecret", "secretsmanager:GetRandomPassword", "secretsmanager:GetSecretValue", "secretsmanager:PutSecretValue", "secretsmanager:UpdateSecretVersionStage", ], "Resource": "*" } ]}

또한 교체 중 별도의 마스터 보안 암호 자격 증명을 사용하여 이 보안 암호를 교체하는 경우 마스터 보안 암호의 보안 암호 값을 검색할 수 있는 권한을 부여해야 합니다. 자세한 내용은 교체를 활성화한 후 첫 번째 교체가 실패함 (p. 186) 단원을 참조하세요. 결합된 정책은 다음과 같을 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAccessToSecretsManagerAPIs", "Effect": "Allow", "Action": [ "secretsmanager:DescribeSecret", "secretsmanager:GetRandomPassword", "secretsmanager:GetSecretValue", "secretsmanager:PutSecretValue", "secretsmanager:UpdateSecretVersionStage", ], "Resource": "*" }, { "Sid": "AllowAccessToMasterSecret", "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "<arn_of_master_secret>" } ]}

188

Page 195: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Endpoints

HTTPS 쿼리 요청을 전송하여 API 호출

이 단원에는 AWS Secrets Manager 용 쿼리 API 사용에 대한 일반적인 정보가 포함되어 있습니다. API 작업및 오류에 대한 자세한 내용은AWS Secrets Manager API 참조를 선택합니다.

Note

AWS Secrets Manager 쿼리 API에 직접 호출을 전송하는 대신 AWS SDK 중 하나를 사용할 수 있습니다. AWS SDK는 다양한 프로그래밍 언어 및 플랫폼 (예: Java, Ruby, .NET, iOS, Android 등) 을위한 라이브러리와 샘플 코드로 구성되어 있습니다. SDK를 사용하면 편리하게 Secrets Manager및 AWS 에 프로그래밍 방식으로 액세스할 수 있습니다. 예를 들어 SDK는 요청에 암호화 방식으로서명, 오류 관리 및 자동으로 요청 재시도와 같은 작업을 수행합니다. 패키지 다운로드 및 설치 방법을 비롯하여 AWS SDK에 대한 자세한 내용은 단원을 참조하십시오.Amazon Web Services용 도구를 선택합니다.

AWS Secrets Manager용 쿼리 API를 사용하면 서비스 작업을 호출할 수 있습니다. 쿼리 API 요청은 HTTPS요청에 포함해야 하는Action파라미터를 사용하여 수행할 작업을 나타내기 위해 사용합니다. AWS SecretsManager 는 모든 작업에 대해 GET과 POST 요청을 지원합니다. API 사용 시 어떤 작업에는 GET을 사용하고 또 어떤 작업에는 POST를 사용할 필요가 없습니다. 하지만 GET 요청에는 URL 크기 제한이 적용됩니다.이 제한은 브라우저에 따라 다르지만, 일반적으로 2,048바이트입니다. 따라서 더 큰 크기가 필요한 쿼리 API요청의 경우 POST 요청을 사용해야 합니다.

API는 XML 문서의 응답을 반환합니다. 응답에 대한 자세한 내용은 의 개별 API 설명 페이지를 참조하십시오.AWS Organizations API 참조를 선택합니다.

주제• Endpoints (p. 189)• HTTPS 필요 (p. 189)• Secrets Manager 에 대한 API 요청에 서명 (p. 190)

EndpointsAWS Secrets Manager 에는 대부분의 AWS 리전에 엔드포인트가 있습니다. 완전한 목록은 단원을 참조하십시오.AWS Secrets Manager 엔드포인트 목록의AWS 일반 참조를 선택합니다.

AWS 리전 및 엔드포인트에 대한 자세한 내용은 단원을 참조하십시오.리전 및 엔드포인트에서도 을 사용할수 있습니다.AWS 일반 참조를 선택합니다.

HTTPS 필요쿼리 API는 보안 자격 증명과 같이 민감한 정보를 반환하므로 HTTPS를 이용해 모든 API 요청을 암호화해야합니다.

단원을 참조하십시오. AWS 일반 참조를 선택합니다.

189

Page 196: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서Secrets Manager 에 대한 API 요청에 서명

Secrets Manager 에 대한 API 요청에 서명액세스 키 ID와 보안 액세스 키를 사용하여 API 요청에 서명해야 합니다. Secrets Manager 를 사용한 일상적인 작업에는 AWS 계정 루트 사용자 자격 증명을 사용하지 않는 것이 좋습니다. 대신 IAM 사용자용 자격 증명이나 IAM 역할에서 사용한 임시 자격 증명을 사용할 수 있습니다.

API 요청에 서명하려면 AWS 서명 버전 4를 사용해야 합니다. 서명 버전 4 사용에 대한 자세한 내용은서명버전 4 서명 프로세스의AWS 일반 참조를 선택합니다.

자세한 내용은 다음 단원을 참조하세요.

• AWS 보안 자격 증명. AWS 에 액세스하는 데 사용할 수 있는 자격 증명 유형에 대한 일반적인 정보를 제공합니다.

• IAM 모범 사례를 선택합니다. SecreSecrets Manager 의 리소스를 비롯하여 AWS 리소스 보안을 강화하는방법은 제안합니다.

• 임시 자격 증명 임시 보안 자격 증명을 만들고 사용하는 방법에 대해 설명합니다.

190

Page 197: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서

AWS Secrets Manager 문서 기록다음 표에서는 AWS Secrets Manager 에 대한 주요 설명서 업데이트를 설명합니다.

• API 버전: 2017-10-17

update-history-change update-history-description update-history-date

비밀 관리를위한 Kubernetes CSI플러그인 (p. 191)

비밀 관리를위한 Kubernetes 플러그인을 구현하기위한 지침이 추가되었습니다.

2021년 4월 22일

다중 리전 암호 Support 리전 간 애플리케이션을 지원하기 위해 리전 간 비밀을 복제하는AWS 에 대한 지원이 추가되었습니다.

2021년 2월 25일

Secrets Manager 대한 세 가지AWS Config 규칙을 추가했습니다.

CMK를 사용하여 사용되지 않는비밀, 회전된 비밀 및 비밀을 확인하는 세 가지 새로운 규칙입니다.

2021년 2월 25일

보안 관리자 및 보안 모범 사례에 대한 Security Hub 컨트롤에 대한 정보가 추가되었습니다. (p. 191)

Security Hub 는 비밀의 자동 회전및 비밀의 성공적인 회전을 확인하는 보안 제어를 제공합니다.

20202020년 9월 18일

Secrets Manager 변환을 사용하도록 CloudFormation 예제가 업데이트되었습니다.

CloudFormation 템플릿을 사용하여 로션을 사용하여 SecretsManager 암호 및 데이터베이스를 만들 때Transform:AWS::SecretsManager-2020-07-23를사용하면 호스팅 된 Lambda 만들수 있습니다.

2020년 7월 23일

비밀에 대한 검색 기능이 향상되었습니다.

이름, 설명, 태그 키 및 태그 값을사용하여 비밀을 검색할 수 있습니다. Secrets Manager 비밀 찾기에 대 한 여러 필터를 사용할 수 있습니다.

20202020년 7월 9일

Secrets Manager 콘솔을 사용하여 리소스 기반 정책을 비밀에 연결하는 기능이 추가되었습니다.

콘솔을 사용해 리소스 기반 정책을 추가, 수정 및 삭제할 수 있습니다. 또한 Secrets Manager 정책의유효성을 검사합니다.

20202020년 7월 9일

Amazon RDS에 대한 링크를 포함하도록 보안 암호 교체 자습서를변경했습니다.

안내서에서 자습서 단계를 최신상태로 유지하기 위해 AmazonRDS 설명서에 대한 링크가 테스트 데이터베이스를 설정하는 단계를 대체했습니다.

2019년 5월 12일

보안 Secrets Manager 위한FedRAMP 규정 준수가 추가되었습니다.

FedRAMP 로고와 SecretsManager의 규정 준수에 대한 정보가 추가되었습니다.

2019년 5월 12일

191

Page 198: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서

보안 Secrets Manager AWSConfig 추가하고 CloudFormation에 대한 자세한 정보를 추가했습니다. (p. 191)

Secrets Manager 함께 AWSConfig 사용하는 방법에 대한 설명서가 추가되었습니다.

2020년 4월 16일

CloudFormation 템플릿을 더 짧고사용하기 쉬운 템플릿으로 대체했습니다. (p. 191)

템플릿이 이제 단 60줄의 코드를사용하여 CloudFormation 구성을생성합니다.

2019년 11월 20일

엔드포인트 정책에 대해 설명서가추가됨

이제 엔드포인트 정책을 사용하여 Secrets Manager VPC 엔드포인트에서 보안 암호 관련 활동을제어할 수 있음. Secrets ManagerVPC 엔드포인트의 엔드포인트 정책 생성에 대한 단원이 추가됨. 또한 모든 VPC 엔드포인트 콘텐츠에 대한 별도의 참조 문서가 생성됨.

2019년 7월 25일

Python, Go 및 .NET 캐싱 클라이언트가 추가됨

Python, Go 및 .NET용 캐싱 클라이언트를 획득할 수 있는 GitHub에 대한 링크가 추가됨.

2019년 6월 9일

Redshift 및 DocumentDB용 암호유형이 추가됨

암호 유형에 Redshift 및DocumentDB 데이터베이스가 추가됨.

2019년 3월 7일

업데이트된 지원되는 데이터베이스

Microsoft SQL Server, Oracle 등을 포함하여, 교체 지원을 위해Amazon RDS에서 지원되는 데이터베이스의 전체 목록이 추가됨.

2018년 12월 2일

PCI 및 ISO 규정 준수 규정 준수 표준 섹션에 PCI 및ISO 표준이 포함됨.

2018년 12월 1일

보안 암호에 기존 Lambda 교체함수 사용

Secrets Manager 콘솔에서 보안암호 교체를 활성화할 경우 새 함수를 만들 수 있을 뿐 아니라 기존Lambda 함수를 선택할 수 있습니다.

2018년 11월 15일

Secrets Manger 콘솔을 사용하여보안 암호에 태그를 지정하려면

Secrets Manager 콘솔을 사용하여 보안 암호를 생성 및 수정할 때태그를 포함시킬 수 있습니다.

2018년 11월 15일

CloudFormation을 사용하여 프로그래밍 방식으로 보안 암호 만들기

보안 암호를 CloudFormation 템플릿에 정의하여 생성할 수 있습니다. 보안 암호가, 완전 지원 데이터베이스 중 하나와 연결된 경우,템플릿을 처리하는 동안 동적으로자격 증명을 생성하고, 이러한 자격 증명을 사용하도록 데이터베이스를 구성하고, 자동으로 교체하도록 구성된 보안 암호에 저장할수도 있습니다.

2018년 11월 12일

192

Page 199: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서

복구 기간 없이 보안 암호 삭제 복구 기간을 지정하지 않고 보안암호를 삭제할 수 있습니다. 따라서 최소 7일을 기다리지 않고도 불필요한 보안 암호를 '정리'할 수 있습니다.

2018년 8월 9일

프라이빗 VPC 서비스 엔드포인트 VPC에서 보안 Secrets Manager대한 프라이빗 서비스 엔드포인트를 구성할 수 있습니다. 이렇게 하면 퍼블릭 인터넷에 연결하지 않고도 VPC 내에서 SecretsManager API 작업을 호출할 수 있습니다.

2018년 7월 11일

리소스 기반 정책 IAM 권한 정책을 보안 암호에 직접 연결하여 해당 보안 암호에 액세스할 수 있는 사용자를 지정할수 있습니다. 또한 다른 AWS 계정을 지정할 수 있기 때문에 교차계정 액세스를 허용할 수 있습니다.Principal리소스 기반 정책의 요소

2018년 26월 6일

HIPAA 규정 준수 HIPAA 적격 서비스로 SecretsManager를 사용할 수 있습니다.

2018년 6월 4일

최초 서비스 릴리스 AWS Secrets Manager 의 최초 릴리스에 대한 설명서를 제공합니다.

2018년 4월 4일

193

Page 200: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서

AWS 용어집For the latest AWS terminology, see the AWS glossary in the AWS General Reference.

194

Page 201: AWS Secrets Manager · 2020. 12. 2. · AWS Secrets Manager 사용 설명서 Secrets Manager의 특징 1.데이터베이스 관리자는 MyCustomApp. 관리자는 또한 애플리케이션이

AWS Secrets Manager 사용 설명서

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

cxcv