sops를 사용하여 Google App Engine 환경 변수 값을 안전하게 설정하는 방법
3883 단어 GCPGitHub ActionsGAEsopstech
API Key 등 창고에 직접 제출하지 않으려는 것과 같은 환경 변수도 기재돼 있는데 당연히 명문으로 직접 쓰고 싶지 않다.
왜냐하면 우리 팀은 sops를 이용해서 그 부근의 소개를 해결하고 있기 때문이다.
이른바 sops
sops는 AWS KMS와 GCP KMS가 관리하는 암호 키로 임의의 파일을 암호화하고 복호화할 수 있는 명령행 소프트웨어다.
우리 팀은 주로 GCP를 사용하기 때문에 아래의 예도 기본적으로 GCP KMS를 사용하는 것을 전제로 쓴 것이다.(단, AWS를 사용하더라도 프로그램 자체는 거의 변하지 않는다.)
절차.
app.yaml에서 암호화하고 싶은 환경 변수의 설정 파일 잘라내기
app.yaml은
includes
의 지시성을 사용하여 다른 파일에 쓴 내용을 읽을 수 있습니다.includes
에 관해서는 구 버전의 문서에만 기재되지만 GAE Standard의 go1.11〜go1.14. nodejs12도 사용할 수 있는지 확인할 수 있습니다.이것
includes
을 사용하여 다음과 같이 설정합니다.app.yaml(은닉할 필요가 없는 값은 더 잘 쓴다)
runtime: go114
env_variables:
DB_HOST: /cloudsql/PROJECT_ID:asia-northeast1:INSATNCE_NAME
DB_NAME: dbname
includes:
- secret.yaml
secret.yaml(숨기고 싶은 값 여기 있음)env_variables:
DB_USER: root
DB_PASSWORD: password
secret.sops로 암호화
그리고 sops secret으로yaml을 암호화하면 됩니다.
sops에 대한 설정 방법과 사용 방법은 아래 README에 상세하게 기재되어 있으니 참조하십시오.
2.2 Encrypting using GCP KMS
암호화할 때 KMS ResourceID를 명령줄 옵션으로 하나씩 지정하는 것은 번거롭기 때문에
.sops.yaml
만들어 제출하는 것을 권장합니다..sops.yaml
creation_rules:
- gcp_kms: projects/my-project/locations/global/keyRings/sops/cryptoKeys/sops-key # KMS ResourceID を記載
설정할 수 있다면 다음과 같은 방식으로 암호화하여 저장한다.(당연히 원래의 시크릿.yaml을 삭제해야 한다.gitignore에 넣어도 잊지 마라)다 됐습니다.enc.yaml은 GCP KMS에서 생성한 암호화 키로 암호화됩니다.
즉, 내용을 보려면 권한을 부여받은 계정과 서비스 계정이 필요하며, 이 암호 키로 복호화할 수 있습니다.
GiitHub Action으로 설계
GiitHub Actions의 yaml 중에서 필요한 부분만 선택한다면 다음과 같습니다.
다만 일반 다운로드 sops의 2진법은 gcloud app deploy 앞에서 디코딩되고 있다.간단하네.
GOOGLE_APPLICATION_CREDENTIALS
에서 지정한 서비스 계정에 해당하는 암호 키를 사용하는 복호화 권한을 부여하는 것을 잊지 마십시오.$ sops -e secret.yaml > secret.enc.yaml
지금 찾아봤는데 sops가 설치된 Actionhttps://github.com/mdgreenwald/mozilla-sops-action이 이걸 쓸 수 있을 것 같아요.
Reference
이 문제에 관하여(sops를 사용하여 Google App Engine 환경 변수 값을 안전하게 설정하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/satococoa/articles/8afb154f1aae64텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)