| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- DevSecOps
- kubernetes
- cloud
- KISA
- CI/CD
- devops
- ECS
- docekr
- zerotrust
- git
- IAC
- 보안
- cloiud
- fargate
- docker
- CICD
- Network
- cloud trail
- VPC
- saa-c03
- 클라우드 보안
- docker-compose
- VPN
- devop
- eks
- security
- client-vpn
- secretmanager
- Container
- AWS
- Today
- Total
Devsecops로 발전하는 엔지니어
AWS Secrets Manager – 3부: 콘솔 및 CLI 실습 가이드 본문
1. 보안 암호 생성 (Secret 생성)
[AWS Console]
- AWS 콘솔 → Secrets Manager → "보안 암호 생성" 클릭
- 보안 암호 유형 선택 (예: 기타 유형 또는 RDS 선택)
- 사용자 이름 / 암호 / 키-값 쌍 입력
- 암호 이름 입력
- 암호화 키(KMS 키)는 기본값인 aws/secretsmanager 또는 사용자 정의 키 선택
- "보안 암호 생성" 클릭 → 완료

[CLI]

aws secretsmanager create-secret --name my-database-secret --description " IAM pw change test" --secret-string '{"username":"admin","password":"MySecurePass123"}'
2. 보안 암호 값 업데이트
[AWS Console]
- 콘솔에서 Secret 선택
- "보안 암호 값 편집" 클릭
- 수정 후 저장 → 자동으로 AWSCURRENT 버전으로 적용됨


[CLI]

aws secretsmanager put-secret-value --secret-id my-database-secret --secret-string '{"username":"admin","password":"MyNewPass456"}'
3. 자동 교체(Rotation) 설정
[AWS Console]
- Secret 선택 후 "교체 구성" 클릭
- Lambda 함수 선택 (직접 작성하거나 템플릿 사용 가능)
- 교체 주기 선택 (예: 30일, cron 형식도 가능)
- 저장

Lambda의 경우 추가로 생성해줘야합니다.
lambda_function.py
|
import boto3
import json
def lambda_handler(event, context):
arn = event['SecretId']
token = event['ClientRequestToken']
step = event['Step']
print(f"Step: {step}")
if step == 'createSecret':
create_secret(arn, token)
elif step == 'setSecret':
pass # Not used in this rotation template
elif step == 'testSecret':
test_secret(arn, token)
elif step == 'finishSecret':
finish_secret(arn, token)
def create_secret(secret_arn, token):
sm = boto3.client('secretsmanager')
iam = boto3.client('iam')
# ✅ 실제 교체 대상 IAM 사용자명 명시
username = 'UserName'
# 새 Access Key 생성
response = iam.create_access_key(UserName=username)
access_key = response['AccessKey']['AccessKeyId']
secret_key = response['AccessKey']['SecretAccessKey']
# 새 키를 "AWSPENDING" 버전으로 저장
sm.put_secret_value(
SecretId=secret_arn,
ClientRequestToken=token,
SecretString=json.dumps({
'AccessKeyId': access_key,
'SecretAccessKey': secret_key
}),
VersionStages=['AWSPENDING']
)
def test_secret(secret_arn, token):
sm = boto3.client('secretsmanager')
secret = sm.get_secret_value(
SecretId=secret_arn,
VersionId=token,
VersionStage='AWSPENDING'
)
creds = json.loads(secret['SecretString'])
# 여기에 실제 테스트 로직 추가 가능 (예: 특정 서비스 호출 테스트)
print(f"Test AccessKeyId: {creds['AccessKeyId']}")
def finish_secret(secret_arn, token):
sm = boto3.client('secretsmanager')
metadata = sm.describe_secret(SecretId=secret_arn)
current = None
for version, stages in metadata['VersionIdsToStages'].items():
if 'AWSCURRENT' in stages:
current = version
break
# 새 버전을 AWSCURRENT로 승격
sm.update_secret_version_stage(
SecretId=secret_arn,
VersionStage='AWSCURRENT',
MoveToVersionId=token,
RemoveFromVersionId=current
)
|
[CLI]


aws secretsmanager rotate-secret --secret-id my-database-secret
aws secretsmanager update-secret-version-stage --secret-id my-database-secret --version-stage AWSPENDING --move-to-version-id <new-version-id>
4. 보안 암호 복제 (다중 리전)
[AWS Console]
- Secret 상세 화면 → "리전 복제 추가" 클릭
- 대상 리전 선택, 암호화 키(KMS) 선택
- "복제 추가" 클릭
[CLI]
aws secretsmanager replicate-secret-to-regions --secret-id my-database-secret --add-replica-regions Region=us-west-2
※IAM에 부여해야하는 최소 권한
| { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "arn:aws:secretsmanager:ap-northeast-2:123456789012:secret:my-database-secret-123" } ] } |
Secrets Manager 버전 관리 ->새 버전이 생성될 때마다 version stage가 붙음
- AWSCURRENT: 현재 사용 중
- AWSPENDING: 교체 중
- AWSPREVIOUS: 이전 값
마무리 요약
- Secrets Manager는 콘솔과 CLI 모두 강력한 기능 제공
- 민감 정보를 하드코딩하지 않고 안전하게 저장, 검색, 교체 가능
- 교체 자동화, 복제, IAM 정책 설정, 버전 관리까지 포함한 통합 관리 가능
- CodeGuru, AWS Config, CloudTrail, CloudWatch 등과 연계하여 보안 강화 가능
'cloud' 카테고리의 다른 글
| AWS Secrets Manager – 2부: 보안 설계, IAM 정책, 리전 복제 전략 (0) | 2025.06.26 |
|---|---|
| AWS Secrets Manager – 1부: 기본 개념과 주요 기능 (2) | 2025.06.25 |
| 🔐 AWS Client VPN 을 이용한 온프레미스 연결 (0) | 2025.06.23 |
| 🔐 AWS Transit Gateway를 활용한 Site-to-Site VPN 연결 개요 (0) | 2025.06.16 |
| 🔐 클라우드 보안의 첫걸음: AWS Site-to-Site VPN 쉽게 이해하기 (3) | 2025.06.15 |