AWS 시크릿 수정하기

AWS 시크릿 수정하기

HCP Vault Radar는 동적 시크릿을 사용해 유출된 Amazon Web Services (AWS) 시크릿을 스캔할 수 있어요. 정적 시크릿 사용에 대한 튜토리얼은 active secrets documentation을 참고하세요.

출처: 문서

본문

인시던트 만들기

유출된 시크릿은 서비스에 대한 무단 접근으로 이어질 수 있어요. 악의적인 활동을 막기 위해 HashiCorp는 사용자가 시크릿을 순환(rotate)하고 Vault에 저장할 것을 권장해요.

  • 조직의 응급 시크릿 순환 지침을 따르세요.
  • AWS 계정 소유자에게 연락하세요.
  • 회사가 이미 HashiCorp Vault를 사용하는지 확인하세요.

Vault의 AWS 시크릿 엔진 구성

이 예시는 AWS 시크릿 엔진과 IAM 인증 방법을 사용해요. 애플리케이션이 이미 Vault의 시크릿에 접근하도록 구성되어 있다면 기존 시크릿 엔진과 인증 방법을 사용하세요. AWS 시크릿 엔진에 대한 자세한 내용은 여기를 클릭하세요.

  • 앱이 AWS 서비스를 사용하는 데 필요한 권한이 있는 AWS 정책을 만드세요. AWS 정책에 대한 자세한 내용은 이 문서를 참고하세요.
  • 로컬 환경에 다음 환경 변수를 설정하세요.
VAULT_TOKEN
VAULT_ADDR
VAULT_NAMESPACE
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
  • Vault에서 AWS 시크릿 엔진을 활성화하세요.참고: 이 명령은 경로를 기본적으로 aws/로 설정해요. 다른 경로를 지정할 수 있지만, 예시 명령의 경로도 함께 변경해야 해요.
$ vault secrets enable aws
  • 루트 자격 증명을 구성하세요.참고: Vault가 동적 AWS IAM 사용자를 만들기 위해 필요한 권한은 여기에서 확인하세요.루트 자격 증명 구성에 대한 자세한 내용은 Vault docs를 참고하세요.
$ vault write aws/config/root access_key=${AWS_ACCESS_KEY} secret_key=${AWS_SECRET_KEY}
  • 정책이 있는 IAM 역할을 만드세요. 이 IAM 역할은 AWS에서 요구하는 권한과 일치해야 해요. 예를 들어 AWS EC2 서비스에 대한 전체 접근을 부여하는 Vault 역할을 만들려면 명령이 다음과 같아야 해요.
$ vault write aws/roles/my-role \
   credential_type=iam_user \
      policy_document=-<<EOF
         {
            "Version": "2012-10-17",
            "Statement": [
               {
                  "Effect": "Allow",
                  "Action": "ec2:*",
                  "Resource": "*"
               }
            ]
         }
      EOF
  • 시크릿을 읽어 접근을 검증하세요.
$ vault read aws/creds/my-role

코드에서 시크릿 제거하기

이제 AWS 시크릿이 Vault에서 사용할 수 있으므로 하드코딩된 시크릿을 소스 코드에서 제거하세요. 이 예시는 환경 변수를 사용해 Vault의 시크릿을 저장해요.

  • Vault의 시크릿으로 환경 변수를 만드세요.
$ export MY_SECRET=$(curl \
 --header "X-Vault-Token: ..." \
 http://127.0.0.1:8200/v1/aws/static-creds/{my-role})
  • 소스에서 시크릿을 제거하고 환경 변수 MY_SECRET에 저장된 시크릿에 대한 참조를 추가하세요.
mySecret = getenv(“MY_SECRET”)
  • 로컬 서버를 시작하고 테스트하세요.

시크릿 폐기

수정 프로세스를 완료하려면 시크릿을 폐기하세요.

  • 환경 변수 값이 Vault에서 온 것인지 검증하세요.
  • 애플리케이션을 배포하고 테스트하세요.
  • AWS 서비스 소유자와 협력해 이전 시크릿 값을 폐기하세요.

더 알아보기 (Learn more)