AWS Secrets Manager의 고급 개념
AWS Secrets Manager는 비밀 정보를 안전하게 저장하고 관리하는 서비스로, 비밀번호나 API 키 같은 중요한 정보를 암호화하여 안전하게 저장할 수 있습니다. 이번 글에서는 Secrets Manager의 고급 개념을 다루고, KMS 통합, 비밀 회전 및 리소스 정책 설정 방법을 설명합니다.
1. KMS와의 통합
Secrets Manager는 **KMS(KMS: Key Management Service)**와 통합되어 비밀 값을 암호화하고 복호화합니다. 각 비밀은 봉투 암호화(envelope encryption) 방식을 사용하여 고유한 데이터 키로 암호화됩니다. Secrets Manager는 이 데이터 키를 generate data key API 호출을 통해 생성하고, 비밀 값(예: 데이터베이스 비밀번호)을 암호화하여 반환합니다.
- 사용자 설정 KMS 키: 기본적으로 AWS는 AWS/SecretsManager라는 관리형 KMS 키를 제공하지만, 사용자는 자신만의 KMS 키를 설정할 수도 있습니다.
- 암호화: 대칭 KMS 키만 사용 가능하며, 모든 암호화 작업은 서비스 내에서 자동으로 처리됩니다.
비밀에 접근하려면 해당 비밀뿐만 아니라, 비밀을 암호화하거나 복호화할 수 있는 KMS 키에도 접근할 수 있어야 합니다.
2. 비밀 회전(Secret Rotation)
Secrets Manager는 비밀 회전 기능을 제공하여 주기적으로 비밀 값을 갱신할 수 있습니다. 예를 들어, RDS나 Redshift 같은 데이터베이스에서는 자동으로 비밀번호가 회전됩니다. 회전 주기는 사용자가 설정할 수 있으며, 기본적으로 매 30일마다 Lambda 함수가 호출되어 비밀번호를 변경하고 새 값을 Secrets Manager에 저장합니다.
Lambda 함수와 비밀 회전
비밀 회전 기능을 사용하면, 비밀 값이 변경될 때마다 Lambda 함수가 호출됩니다. 이 함수는 비밀번호를 변경하고 그 값을 Secrets Manager에 저장하는 역할을 합니다. 이때 Lambda 함수는 RDS 데이터베이스에 접근할 수 있도록 설정되어야 하며, VPC와 IAM 정책 설정이 필요합니다.
비밀 회전 활성화
비밀 회전 기능을 활성화하면 비밀이 즉시 회전됩니다. 예를 들어, RDS 데이터베이스의 비밀번호를 회전하려면 해당 Lambda 함수가 Secrets Manager 서비스와 데이터베이스에 접근할 수 있는 권한을 가져야 합니다.
3. ECS와 Secrets Manager 통합
**ECS(Elastic Container Service)**와 Secrets Manager를 통합하여 실행 중에 비밀 값을 사용할 수도 있습니다. 예를 들어, RDS 데이터베이스에 접근해야 할 때, ECS 태스크가 시작될 때 Secrets Manager에서 비밀을 가져와 환경 변수로 주입하여 사용할 수 있습니다.
- IAM 정책: ECS 태스크에 적절한 IAM 정책이 설정되어야 하며, 비밀 값을 안전하게 가져올 수 있는 권한이 필요합니다.
4. 리소스 정책(Resource Policies)
Secrets Manager는 비밀에 대한 리소스 정책을 설정할 수 있습니다. 이는 S3 버킷 정책과 비슷한 방식으로 작동합니다. 예를 들어, 특정 비밀에 대해 **"사용자 Mary만 접근할 수 있다"**는 리소스 정책을 설정할 수 있습니다. 이 경우, Mary는 IAM 권한이 없어도 비밀에 접근할 수 있습니다.
사용 사례
- 여러 사용자가 하나의 비밀에 접근할 수 있도록 관리
- 특정 비밀에 대한 접근 제한
- 다른 AWS 계정 간 비밀 공유
5. 결론
Secrets Manager는 비밀 정보의 관리와 보안을 위한 중요한 기능을 제공합니다. KMS와의 통합을 통해 비밀을 안전하게 암호화하고, Lambda 함수와의 자동 회전 기능을 통해 비밀번호나 API 키를 주기적으로 갱신할 수 있습니다. 또한, ECS와의 통합, 리소스 정책을 활용한 세밀한 권한 관리도 가능하여 AWS 환경 내에서 효율적이고 안전한 비밀 관리가 가능합니다.
'자격증 > AWS Certified Security - Specialty' 카테고리의 다른 글
[AWS SCS] S3 Default Encryption (0) | 2024.12.23 |
---|---|
[AWS SCS] S3 암호화 (0) | 2024.12.23 |
[AWS SCS] AWS Secrets Manager (0) | 2024.12.23 |
[AWS SCS] KMS with Parameter Store (0) | 2024.12.22 |
[AWS SCS] KMS with ABAC (0) | 2024.12.22 |