728x90
Systems Manager(SSM) Parameter Store
Parameter Store란?
- 구성 데이터(config)와 민감한 정보를 저장하는 계층형(hierarchical) 스토리지 서비스.
- EC2, RDS 등의 리소스와 통합해 민감한 정보를 안전하게 관리.
- 보안, 확장성, 내구성을 제공하며, 구성 데이터와 민감한 정보를 중앙에서 관리.
주요 특징
- 데이터 유형
- 일반 텍스트: 암호화되지 않은 데이터
- 암호화 텍스트: AWS KMS를 사용해 암호화
- 계층형 구조
- 데이터를 체계적으로 저장 가능
- 예:
/application/stage/parameter-name
- 통합성
- EC2, Lambda, RDS 등 다양한 AWS 리소스와 통합 가능
- 애플리케이션 코드에서 매개 변수 이름으로 데이터 호출
- 보안
- 선택적으로 KMS로 암호화
- IAM 정책을 통한 접근 제어
- 데이터 수명 주기
- 자동 키 회전 기능은 제공하지 않음
- 키를 갱신하려면 수동 또는 Lambda와 같은 외부 서비스를 사용해야 함
작동 방식
- 데이터 저장:
- 매개 변수 이름과 값을 지정해 데이터를 저장.
- 데이터는 일반 텍스트나 암호화 텍스트로 저장 가능.
- 데이터 참조:
- 응용 프로그램에서 매개 변수 이름을 사용해 데이터 호출.
- EC2 인스턴스, Lambda 함수, 애플리케이션 코드에서 호출 가능.
- 사용 예시:
- EC2 인스턴스에서 애플리케이션 코드가 Parameter Store에 저장된 RDS 데이터베이스 연결 문자열 및 암호를 참조.
- 데이터를 참조해 RDS 데이터베이스에 연결.
실제 비즈니스 시나리오
요구사항:
- 애플리케이션이 Amazon RDS DB 인스턴스에 액세스하는 데 사용하는 사용자 이름과 비밀번호를 안전하게 저장해야 함.
- 애플리케이션은 Amazon EC2 인스턴스에서 실행됨.
- AWS Systems Manager Parameter Store를 사용하여 안전한 매개변수를 생성하려고 함.
솔루션:
- Parameter Store에 데이터베이스 사용자 이름과 비밀번호를 KMS를 사용해 암호화하여 안전하게 저장한다ㅇ
- 다음 IAM 역할을 생성하여 EC2 인스턴스에 할당한다.
- Parameter Store 매개변수에 대한 읽기 액세스 권한을 갖도록 설정한다.
- 매개변수를 암호화하는 데 사용된 KMS 키에 대한 Decrypt 액세스를 허용한다.
- EC2 인스턴스가 안전하게 매개변수를 호출할 수 있게 된다.
IAM 역할의 정책 예시
정책 1: Parameter Store에서 매개변수를 읽기
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [ # 파라미터 읽기 권한 제공
"ssm:GetParameter",
"ssm:GetParameters",
"ssm:GetParametersByPath"
],
"Resource": "arn:aws:ssm:region:account-id:parameter/db-credentials/*"
# db-credentials 경로 아래의 모든 매개변수(/db-credentials/username, /db-credentials/password 등).
}
]
}
정책 2: KMS 키에 대한 해독(Decrypt) 권한
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:Decrypt" # KMS 키를 사용한 암호화 해제 권한 제공
],
"Resource": "arn:aws:kms:region:account-id:key/key-id"
# 매개변수를 암호화한 특정 KMS 키 ARN
}
]
}
AWS Secrets Manager
AWS Secrets Manager란?
- 비밀번호, 데이터베이스 연결 정보, API 키와 같은 민감한 비밀(Secrets)을 안전하게 저장, 관리하는 서비스
- 사용자 지정 코드를 작성할 필요 없이 자동 키 회전을 제공.
주요 기능
AWS Secrets Manager는 비밀번호, 데이터베이스 연결 정보, API 키와 같은 민감한 비밀을 안전하게 관리하며, 다음과 같은 기능을 제공한다:
- 자동 비밀 회전
- Amazon RDS, Redshift, DocumnetDB 등 일부 서비스에 대해 기본 지원
- 사용자 정의 Lambda 함수로 다른 서비스도 자동 회전 가능
- KMS 암호화
- 모든 비밀은 AWS KMS를 사용해 암호화
- 비밀 버전 관리
- 새 버전 생성 및 이전 버전으로 롤백 가능
- IAM 통합
- IAM 정책을 사용해 비밀에 대한 세분화된 접근 제어 제공
- 비밀 모니터링 및 감사:
- CloudTrail과 통합해 비밀 접근 로그 추적 가능
사용 예시
- 데이터베이스 비밀번호 관리
- RDS 또는 Redshift 연결 문자열을 저장하고 자동 회전 설정
- API 키 관리
- API 키를 안전하게 저장하고, 주기적으로 자동 갱신
실제 비즈니스 시나리오
요구사항:
- Amazon Aurora MySQL DB 클러스터를 사용하는 다중 계층 웹 애플리케이션의 데이터베이스 자격 증명을 암호화해야 함.
- 자격 증명은 14일마다 순환(로테이션)되어야 함.
- 최소한의 운영 노력으로 구현해야 함.
솔루션:
- 새로운 KMS로 암호화 키를 생성한다.
- Secrets Manager를 사용하여 자격 증명을 저장하고 KMS키로 암호화한다.
- 비밀을 Aurora DB 클러스터와 연결한다.
- 자동 회전(14일 주기 로테이션)을 설정한다.
Parameter Store vs Secrets Manager
기능 | Parameter Store | Secrets Manager |
자동 회전 지원 | 없음 (사용자 정의 Lambda 필요) | 지원 (RDS, Redshift 등 기본 제공) |
저장 데이터 유형 | 문자열, 문자열 목록, 보안 문자열 | 문자열, 바이너리 |
암호화 | 선택적으로 KMS 암호화 가능 | 항상 KMS로 암호화 |
키 계층 구조 | 계층형 키 구조 지원 | 지원하지 않음 |
저장 용량 | 기본값: 4KB, 고급: 8KB | 64KB |
비용 | 무료(특정 범위 내), 고급 기능 유료 | 비밀당 월별 비용 부과 |
주요 사용 사례 | 구성 데이터, 민감하지 않은 비밀 관리 | 암호, API 키, 민감 데이터 관리 |
통합성 | EC2, Lambda, RDS와 쉽게 통합 | EC2, Lambda, RDS와 쉽게 통합 |
- Parameter Store는 구성 데이터와 간단한 비밀 관리를 위한 비용 효율적인 옵션이다.
- Secrets Manager는 민감한 데이터 관리와 자동 회전 기능이 필요한 경우에 적합하다.
언제 사용해야할까?
Parameter Store를 사용할 때
- 애플리케이션 구성 데이터를 관리해야 할 때: 예) 환경 변수, 서비스 URL
- 민감하지 않은 데이터를 저장하고 관리할 때: 예) 애플리케이션 모드, 기본 설정 값
- 비용 절감이 중요한 경우: 무료로 제공되는 기본 기능을 활용 가능
Secrets Manager를 사용할 때
- 민감한 데이터를 저장하고 자동 회전이 필요할 때: 예) 데이터베이스 비밀번호, API 키
- 비밀 버전 관리 및 롤백이 필요한 경우
- 보안 감사 및 추적이 중요한 경우: CloudTrail과 통합 가능
728x90
'AWS' 카테고리의 다른 글
Flowise로 챗봇 만들기 (feat. AWS EC2 배포) (1) | 2025.06.07 |
---|---|
AWS 데이터베이스: RDS, Aurora, DynamoDB, ElastiCache (1) | 2024.12.23 |
AWS 암호화 키 관리: KMS(Key Management Service) (1) | 2024.12.21 |
AWS 네트워크 최적화: Route53, CloudFront, Global Accelerator (3) | 2024.12.20 |
AWS 스토리지: S3, EBS, EFS, FSx, Storage Gateway, Outposts (1) | 2024.12.19 |