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)
- GCP 시크릿 수정 — 동적 시크릿으로 GCP 시크릿을 수정하는 방법을 알아봐요.
- 활성 시크릿 수정 — 정적 시크릿을 순환하고 Vault에 저장하는 절차를 알아봐요.
- 시크릿 수정하기 — 수정 권장 사항과 우선순위를 알아봐요.