AWS Secrets Manager로 애플리케이션 비밀 관리하기
AWS Secrets Manager로 애플리케이션 비밀 관리하기
AWS Secrets Manager는 자격 증명, API 키, 기타 비밀을 수명 주기 전반에 걸쳐 관리, 액세스, 교체하는 데 도움을 줘요. Secrets Manager를 사용하면 AWS, 타사 서비스, 온프레미스의 리소스에 액세스하는 데 사용되는 비밀을 안전하게 보호하고 관리할 수 있습니다. 자세한 내용은 AWS Secrets Manager 사용 설명서를 참고하세요.
출처: 문서
본문
EKS Argo CD 기능을 사용할 때 Secrets Manager는 민감한 데이터를 Argo CD 구성과 리소스에 하드코딩하지 않고도 Git 리포지토리 자격 증명을 안전하게 저장하고 검색할 수 있는 방법을 제공해요. 이 통합은 Argo CD가 Git 리포지토리에서 애플리케이션을 동기화하는 데 사용하는 프라이빗 리포지토리 액세스 토큰과 SSH 키를 관리할 때 특히 유용합니다.
Argo CD와 함께 AWS Secrets Manager 사용하기
EKS Argo CD 기능을 사용할 때 Git 리포지토리 자격 증명을 Secrets Manager에 저장하고 Argo CD가 이를 검색하도록 구성할 수 있어요. 이 방법은 자격 증명을 Argo CD 구성에 직접 저장하거나 장기 개인 액세스 토큰을 사용하는 것보다 더 안전합니다.
사전 조건
- Argo CD 기능이 활성화된 Amazon EKS 클러스터
- AWS Secrets Manager에 저장된 Git 리포지토리 자격 증명
- Argo CD가 Secrets Manager에 액세스할 수 있도록 구성된 IAM 권한
리포지토리 자격 증명에 Secrets Manager를 사용하도록 Argo CD 구성
Git 자격 증명을 Secrets Manager에 저장합니다. 예를 들어 GitHub 개인 액세스 토큰을 저장하는 경우:
aws secretsmanager create-secret \
--name argocd/github-token \
--secret-string '{"username":"git","password":"«redacted:ghp_…»"}'
Argo CD 기능 역할이 비밀을 검색할 권한이 있는지 확인합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"secretsmanager:GetSecretValue",
"secretsmanager:DescribeSecret"
],
"Resource": "arn:aws:secretsmanager:region:account-id:secret:argocd/github-token*"
},
{
"Effect": "Allow",
"Action": [
"kms:Decrypt"
],
"Resource": "arn:aws:kms:region:account-id:key/*",
"Condition": {
"StringLike": {
"kms:EncryptionContext:SecretARN": "arn:aws:secretsmanager:region:account-id:secret:argocd/*",
"kms:ViaService": "secretsmanager.*.amazonaws.com"
}
}
}
]
}
참고: KMS 복호화 권한은 Secrets Manager가 AWS KMS를 사용해 모든 비밀을 암호화하므로 필요합니다. 이 조건은
argocd/접두사가 있는 비밀에 대해서만 복호화를 제한해요. Secrets Manager의 기본 AWS 관리형 키를 사용한다면 이 권한으로 충분합니다. 고객 관리형 KMS 키를 사용한다면Resource필드를 특정 키 ARN으로 업데이트하세요.
Argo CD가 Secrets Manager의 자격 증명을 사용하도록 구성합니다. Secrets Manager의 비밀을 Argo CD가 참조할 수 있는 Kubernetes 시크릿으로 동기화하는 방법에 대한 자세한 내용은 Argo CD 설명서의 Secret Management를 참고하세요.
비밀 ARN을 참조하는 Argo CD 리포지토리 구성을 생성합니다.
apiVersion: v1
kind: Secret
metadata:
name: private-repo
namespace: argocd
labels:
argocd.argoproj.io/secret-type: repository
stringData:
type: git
url: https://github.com/org/repo
secretArn: arn:aws:secretsmanager:region:account-id:secret:argocd/github-token
Argo CD로 리포지토리 액세스를 구성하는 방법에 대한 자세한 내용은 리포지토리 액세스 구성을 참고하세요.