ECS 태스크에 기밀 정보 환경 변수 설정

개요



Twelve-Factor App에서 언급했듯이 응용 프로그램 설정은 환경 변수로 설정하는 것이 다양하게 처리하기 쉽습니다.
문제는 비밀번호와 같은 민감한 정보를 관리하고 배포하는 방법에 있습니다.
AWS와 ECS에는 민감한 정보를 환경 변수로 관리하는 문제를 해결하는 서비스와 기능이 있습니다.
그 이용 방법을 설명합니다.

아키텍처



환경 변수를 AWS Systems Manager에서 パラメータストア로 관리합니다.
ECS 태스크 정의는 docker-compose를 사용합니다.
ECS와 파라미터 스토어를 연동시켜 환경 변수를 포함합니다.

환경 변수 관리



환경 변수는 Github이나 Gitlab에서 설정할 수 있는 기능도 있지만, AWS를 사용하고 있다면 Systems Manager パラメータストア를 사용하는 것이 편리합니다.

이유는 다음과 같습니다.
  • 기밀 정보 관리 및 ECS 배포가 쉽고 안전합니다
  • S3과 같은 경로로 값을 관리 할 수 ​​있습니다
  • IAM 정책을 사용하여 액세스 제한 적용

  • 기밀 정보 이외의 환경 변수 설정 방법


    AWS Systems Manager > パラメータストア 화면을 열면 パラメータの作成 버튼이 있으므로 실행합니다.



    작성 화면이 열리므로 각 항목을 채웁니다.




    품목
    설명


    이름
    경로 형식으로 환경 변수 이름을 설정합니다. 경로의 시작이나 어딘가에 환경 이름 (dev/stg/prd 등)을 넣어 두는 것이 좋습니다.

    설명
    설명을 작성합니다. 입력 없이도 문제 없습니다.

    이용 프레임
    일반적으로 標準 문제가 없습니다. 자세한 내용을 사용하는 경우 잘 설명을 읽으십시오

    유형
    일반 사용의 경우 文字列를 선택합니다. 기밀 정보를 사용하려면 安全な文字列를 선택합니다.

    데이터 유형
    정상적인 사용의 경우 text로 충분하다고 생각합니다. 자세한 내용은 AWS 설명서를 참조하십시오.


    환경 변수에 설정할 값을 입력합니다.


    각 항목을 입력하고 パラメータを作成를 실행하면 매개 변수가 만들어집니다.

    기밀 정보의 환경 변수



    매개 변수 만들기 화면에서 항목 タイプ에서 安全な文字列를 지정합니다.




    품목
    설명


    KMS 키 소스
    암호화 해독을 위한 KMS 키의 소스 지정

    KMS 키 ID
    사용할 KMS 키 ID 지정


    일반적으로 現在のアカウント의 기본 KMS 키 ID로 문제가 없다고 생각합니다.
    각 항목을 입력하고 パラメータを作成를 실행하면 매개 변수가 만들어집니다.

    기밀 정보를 ECS 작업 정의로 설정



    docker-compose 형식으로 작업을 정의하는 경우,
  • docker-compose.yml
  • ecs_params.yml

  • 두 파일을 준비합니다.
    docker-compose 형식을 사용한 태스크 정의 등에 대해서는 이전에 쓴 기사 등을 참조해 주세요.
    docker-compose.yml은 기밀 정보의 환경 변수를 설정하지 않습니다.
    기밀 정보의 환경 변수를 ecs_params.yml로 설정합니다.

    docker-compose.yml
    version: '3'
    services:
      app:
        image: nginx
        ports:
          - "80:80"
    :
    #機密情報の環境変数は設定しない
    

    ecs_params.yml
    version: 1
    task_definition:
      services:
        app:
    :
          # ここで機密情報の環境変数を設定
          secrets:
            # value_fromにパラメータストアで設定した環境変数名を設定
            - value_from: /dev/DB_USER
              # nameにアプリケーションで参照する環境変数名を設定
              name: DB_USER
            - value_from: /dev/DB_PASSWORD
              name: DB_PASSWORD
    :
    
    secrets에서 기밀 정보의 환경 변수를 설정합니다.value_from에 매개 변수 저장소에서 설정한 환경 변수 이름을 설정합니다.name에서 응용 프로그램에서 참조하는 환경 변수 이름을 설정합니다.

    요약



    비밀번호와 같은 환경 변수로 포함하는 기밀 정보를 관리하는 것은 어려운 문제였지만 AWS를 사용하는 경우 쉽게 해결할 수 있습니다.
    또, PEM 파일등의 인증키도 base64 encode 해 파라미터 스토어에 등록해 두는 것으로, 파일로서 서버나 컨테이너에 둘 필요가 없어집니다.
    이 때 클라우드 서비스는 매우 편리하다고 느낍니다.
    파라미터 스토어를 꼭 활용해 보세요.

    좋은 웹페이지 즐겨찾기