GCP kms加密env var并通过cloudbuild.yaml将加密密钥传递给谷歌应用引擎
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GCP kms加密env var并通过cloudbuild.yaml将加密密钥传递给谷歌应用引擎相关的知识,希望对你有一定的参考价值。
我正在尝试在部署到Google App Engine的RoR应用程序中加密Cloud SQL中的数据库env vars。遵循这个文档https://cloud.google.com/cloud-build/docs/securing-builds/use-encrypted-secrets-credentials
但是,运行gcloud builds submit
和gcloud app deploy
时出错。两者都出错了:
失败状态:UNKNOWN:错误响应:[4] DEADLINE_EXCEEDED / build步骤0“gcr.io/cloud-builders/gcloud”失败:退出状态1。
然后我检查gcloud builds described
显示应用程序未能部署,但是,DATABASE_PASS
显示工作/排队。我已将gcloud
sdk中的Cloud Build组件增加到1000并测试超时:在cloudbuild.yaml;
中,这两个选项都没有改进。
在使用Cloud Build之前,我的应用程序正在运行,但我正在删除凭据和使用加密凭据进行CI / CD管道的需要。另外,想在我的app.yaml
中加密多个env var。
<cloudbuild.yaml>
steps:
- name: 'gcr.io/cloud-builders/gcloud'
args: ['app','deploy','app-beta.yaml']
- name: 'us.gcr.io/project_ID/image_name'
#args: [ 'app', 'deploy', 'app-beta.yaml' ]
secretEnv: [ "DATABASE_PASS" ]
secrets:
- kmsKeyName: projects/Project_id/locations/global/keyRings/Misc/cryptoKeys/Random
secretEnv:
DATABASE_PASS:< base64 encoded encryption>
<app.yaml>
runtime: custom
env: flex
service: authentication
resources:
cpu: 2
memory_gb: 2.5
disk_size_gb: 10
beta_settings:
cloud_sql_instances: '/cloudsql/project_id:us-central1:sqlname'
network:
name: default
skip_files:
- .ruby-gemset
- .env
- .bundle
- .byebug_history
- .vscode/
- .idea/
- storage/
- vendor/
- log/
- tmp/
#liveness_check:
#path: '/liveness-check'
# initial_delay_sec: 300
# check_interval_sec: 30
# timeout_sec: 4
# failure_threshold: 2
# success_threshold: 2
#
# readiness_check:
# path: '/readiness-check'
# check_interval_sec: 5
# timeout_sec: 4
# failure_threshold: 2
# success_threshold: 2
# app_start_timeout_sec: 300
env_variables:
SECRET_KEY_BASE: 'SECRET_KEY'
RAILS_ENV: 'redacted'
RACK_ENV: 'redacted'
SERVICE_NAME: 'redacted'
REDIS_HOST: '10.0.0.3'
REDIS_PORT: 6379
TOTP_SECRET: 'TOTP_SECRET'
DATABASE_USER: 'postgres'
DATABASE_PASS: 'DATABASE_PASS'
DATABASE_NAME: 'postgres'
DATABASE_HOST: '/cloudsql/project_id:us-central1:sqlname'
RAILS_LOG_TO_STDOUT: enabled
RAILS_SERVE_STATIC_FILES: enabled
LANG: en_US.UTF-8
我发现了问题,一个是当我使用gcloud kms加密时。我没有加密任何东西。所以传递一个空值。我会把我的解决方案放在博客上并加上它的超链接。
以上是关于GCP kms加密env var并通过cloudbuild.yaml将加密密钥传递给谷歌应用引擎的主要内容,如果未能解决你的问题,请参考以下文章
将内容上传到 GCP 存储桶的 KMS 权限出现 403 错误