CloudBuild에서 Secret Manager의 기밀 데이터를 변수로 가져오기

6878 단어 GCPSecretManagertech
며칠 전에 GCP의 CloudBuild+KMS로 기밀 파일 암호화 및 관리라는 기사를 썼어요.
이번에는 KMSSecret Manager(비밀 관리자) 대신 GCP 서비스를 통해 기밀 데이터를 관리하고 Google CloudBuild에서 데이터를 사용하는 방법을 정리할 것입니다.

KMS와 Secret Manager의 차이점(개인 의견)


기호화폐와 비밀번호 등 간단한 문자열을 관리하면 KMS보다 시크릿 매니저를 사용하는 것이 더 어렵지 않고 버전 관리가 가능하며 안전하고 수월하다.
한편, 기밀 데이터가 포함된 파일을 로컬로 암호화한 후 클라우드 빌드에서 복원하려면 KMS를 사용하는 것이 좋다.

Secret Manager 사용 API


프로젝트에서 Secret Manager를 처음 사용할 때는 GCP 콘솔에서 API를 활성화해야 합니다.
Secret Manager 열기 -

비밀 창설


마찬가지로 Secret Manager로부터 비밀을 만들었다.

CloudBuild에서 사용할 비밀의 이름과 값을 입력합니다.

CloudBuild가 비밀에 접근할 수 있도록 IAM 미리 설정


CloudBuild에서 이 비밀 값을 얻기 위해서는 CloudBuild의 서비스 계정에 IAM 정책을 주어야 합니다.

CloudBuild의 서비스 계정 이름 유지


GCP 콘솔의 IAM를 열면 구성원 목록에서 서비스 계정○○@cloudbuild.gserviceaccount.com[1]을 발견할 수 있습니다.이 문자열을 복사합니다.

Secret Manager가 CloudBuild 에서 얻고자 하는 비밀 권한


다시 열기Secret Manager.작업 전에 [정보 패널]을 표시합니다.

사용할 비밀을 선택하고 정보 패널의 [구성원 추가] 단추를 누르면 ○○@cloudbuild.gserviceaccount.com 시크릿 관리자에 비밀 액세스기를 부여합니다.

이렇게 되면 클라우드 빌드에서 방금 만든 비밀에 접근할 수 있다.이렇게 준비하면 완성된다.

CloudBuild 단계에서 값 사용

cloudbuild.yaml 등의 CloudBuild 구성 파일에서 Secret Manager의 비밀을 사용하려면 다음과 같이 쓰십시오.
cloudbuild.yml
steps:
- name: gcr.io/cloud-builders/docker
  entrypoint: 'bash'
  args: ['-c', 'docker run --env example=$$FOO_BAR']
  secretEnv: ['FOO_BAR']
availableSecrets:
  secretManager:
  - versionName: projects/example/secrets/FOO_BAR/versions/1
    env: FOO_BAR
간단히 설명하다.

abilable Secrets에서 사용하고 싶은 비밀을 미리 성명합니다


availableSecrets:
  secretManager:
  - versionName: projects/example/secrets/FOO_BAR/versions/1
    env: FOO_BAR
  • availableSecrets 아래에 사용할 비밀 정보를 보여 주는 필드secretManager를 준비하세요.
  • versionNameprojects/GCPプロジェクト名/secrets/シークレット名/versions/バージョン番号 형식으로 지정됩니다.비밀이 업데이트되면 버전은 2,3로 바뀐다.
  • step에서 변수 사용하기


    steps:
    - name: gcr.io/cloud-builders/docker
      entrypoint: 'bash'
      args: ['-c', 'docker run --env example=$$FOO_BAR']
      secretEnv: ['FOO_BAR']
    

  • 설명서(2021/02/23시)によると、シークレットを参照するためにはentrypointとしてbash를 지정해야 합니다.
  • args부터-c.-c 다음 문자열은 명령을 실행하는 문자열입니다.
  • 기밀명에 $$의 접두사를 붙인다.
  • 이렇게 하면 명령을 집행할 때 비밀이 박혀 있다.
    더 자세한 절차로 문서를 읽는 것이 좋을 것 같습니다. Configuring builds to access the secret from Secret Manager
    각주
    찾을 수 없으면 CloudBuild의 API를 활성화해야 합니다.GCP 콘솔의 검색 창에서 "CloudBuild"를 검색하면 "CloudBuild API"가 성공적으로 실행됩니다. 여기서 활성화하십시오.↩︎

    좋은 웹페이지 즐겨찾기