EC2 매개 변수 저장소를 사용하여 CloudFormation에서 지원되는 보안 키/값 쌍을 만들고 ECS 환경과 통합 할 수 있습니다.
AWS Systems Manager Parameter Store
AWS 시스템 관리자 매개 변수 스토어는 구성 데이터 관리 및 비밀 관리를위한 보안, 계층 스토리지를 제공합니다. 은 암호, 데이터베이스 문자열 및 라이센스 코드 과 같은 데이터를 매개 변수 값으로 저장할 수 있습니다. 값을 일반 텍스트 또는 암호화 된 데이터로 저장할 수 있습니다. 그런 다음 매개 변수를 만들 때 이라는 고유 한 이름을 사용하여 값을 참조 할 수 있습니다. 확장 성이 뛰어나고 사용 가능한 및 내구성이 뛰어난 매개 변수 저장소는 AWS Cloud에 의해 백업됩니다. 매개 변수 스토어는 추가 비용없이 제공됩니다.
매개 변수 스토어 응용 프로그램의 비밀을 저장하기위한 훌륭한 보안 기능을 가지고 있지만, 또한 등 공개 키, 환경 설정, 라이센스 코드,
그리고 직접 지원으로 민감하지 응용 프로그램의 문자열을 저장하는 데 사용할 수 있습니다
CloudFormation을 사용하면 ECS에서 액세스 할 수있는 응용 프로그램 구성 문자열을 쉽게 캡처, 저장 및 관리 할 수 있습니다.
Description: Simple SSM parameter example
Parameters:
pSMTPServer:
Description: SMTP Server URL eg [email-smtp.us-east-1.amazonaws.com]:587
Type: String
NoEcho: false
SMTPServer:
Type: AWS::SSM::Parameter
Properties:
Name: my-smtp-server
Type: String
Value: !Ref pSMTPServer
모든 AWS 런타임 환경 (EC2, ECS, 람다)는 쉽게 안전하게 값을 검색 할 수 있습니다 이 템플릿은 콘솔 또는 CLI를 통해 스택 생성시 매개 변수 저장소 키 값을 제공 할 수 있습니다. 콘솔 측면에서 매개 변수 버전 기록을 유지하는 훌륭한 매개 변수 관리자 인터페이스가 있습니다. 권한이 표준 IAM 정책 구문으로 제어되도록 그것의, IAM과 intergated :
{
"Action": [
"ssm:GetParameterHistory",
"ssm:GetParameter",
"ssm:GetParameters",
"ssm:GetParametersByPath"
],
"Resource": [
"arn:aws:ssm:us-west-2:555513456471:parameter/smtp-server"
],
"Effect": "Allow"
},
{
"Action": [
"kms:Decrypt"
],
"Resource": [
"arn:aws:kms:us-west-2:555513456471:key/36235f94-19b5-4649-84e0-978f52242aa0a"
],
"Effect": "Allow"
}
마지막으로,이
blog article 런타임에 Dockerfile에 권한을 읽을 수있는 방법을 보여줍니다. AWS Parameter Store를 사용하여 Docker에서 환경 변수를 안전하게 처리 할 수있는 방법을 제안합니다. 참고로 여기에 Dockerfile을 포함합니다 :
FROM grafana/grafana:master
RUN curl -L -o /bin/aws-env https://github.com/Droplr/aws-env/raw/master/bin/aws-env-linux-amd64 && \
chmod +x /bin/aws-env
ENTRYPOINT ["/bin/bash", "-c", "eval $(/bin/aws-env) && /run.sh"]
해당 매개 변수를 사용하여 각 매개 변수를 컨테이너의 환경 변수로 사용할 수 있습니다. 응용 프로그램은 환경 변수에서 매개 변수를 읽는 래퍼가 필요할 수도 있고 없을 수도 있습니다.
환경에서 키 쌍을 소비하는 클라이언트/서비스는 무엇입니까? 얼마나 많은 키 쌍이 매개 변수로 주입되어야합니까? –
@RodrigoM, 키 - 값 쌍의 양은 동적이지만이 경우에는 최대 20 개의 환경 변수입니다. 이러한 환경 변수가 요구되는 경우 Docker 컨테이너에 전달됩니다. – Ivan
나는 그 과정에서 그들이 참조 된 곳이 궁금했다. Docker 파일 또는 런타임 응용 프로그램에서 참조되는 값입니까? 양자 모두? –