CloudFormation
1 CloudFormation과 Secrets Manager의 통합: 안전한 Secret 관리
- AWS CloudFormation은 인프라를 코드로 관리할 수 있게 해주는 강력한 도구입니다.
- AWS Secrets Manager는 데이터베이스 Secret번호, API 키 등의 민감한 정보를 안전하게 관리하는 서비스입니다.
- 이 두 서비스를 통합하면 보안을 강화하면서도 인프라 배포를 자동화할 수 있습니다.
2 Secrets Manager를 사용해야 하는 이유
- 중앙화된 Secret 관리: 모든 Secret을 한 곳에서 관리할 수 있습니다.
- 자동 로테이션: 정기적으로 Secret을 자동으로 변경할 수 있습니다.
- 세분화된 액세스 제어: IAM을 통해 Secret에 대한 접근을 세밀하게 제어할 수 있습니다.
- 암호화: 저장 및 전송 중인 데이터가 항상 암호화됩니다.
3 CloudFormation에서 Secrets Manager 사용하기
3.1 Secret 생성하기
Secret 생성 예시
AWSTemplateFormatVersion: '2010-09-09'
Description: 'A sample template'
Resources:
MySecret:
Type: 'AWS::SecretsManager::Secret'
Properties:
Name: 'MyDatabaseSecret'
Description: 'Secret for my RDS database'
GenerateSecretString:
SecretStringTemplate: '{"username": "admin"}'
GenerateStringKey: 'password'
PasswordLength: 16
ExcludeCharacters: '"@/\'
- CloudFormation 템플릿에서
AWS::SecretsManager::Secret리소스를 사용하여 Secret을 생성할 수 있습니다. - 이 예시에서는 "admin"이라는 사용자 이름과 16자리의 무작위 Secret번호를 생성합니다.
GenerateSecretString속성을 사용하여 안전한 Secret번호를 자동으로 생성합니다.
3.2 Secret 참조하기
- 생성된 Secret은 동적 참조를 사용하여 다른 리소스에서 참조할 수 있습니다.
RDS 인스턴스 생성 예시
MyRDSInstance:
Type: 'AWS::RDS::DBInstance'
Properties:
DBName: 'MyDatabase'
Engine: 'mysql'
MasterUsername: '{{resolve:secretsmanager:MyDatabaseSecret:SecretString:username}}'
MasterUserPassword: '{{resolve:secretsmanager:MyDatabaseSecret:SecretString:password}}'
DBInstanceClass: 'db.t3.micro'
AllocatedStorage: '20'