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로 리포지토리 액세스를 구성하는 방법에 대한 자세한 내용은 리포지토리 액세스 구성을 참고하세요.

더 알아보기 (Learn more)