Seu pool de trabalhadores pode exigir chaves de API, senhas, certificados ou outras informações sensíveis para as dependências. Para o Cloud Run, o Google recomenda armazenar essas informações sensíveis em um secret criado no Secret Manager.
Disponibilize um secret para seus contêineres de uma das seguintes maneiras:
- Quando você monta cada secret como um volume, o Cloud Run disponibiliza o secret para o contêiner como arquivos. Ao ler um volume, o Cloud Run sempre busca o valor do secret no Secret Manager para usar o valor com a versão mais recente. Esse método também funciona bem com a rotação de secrets.
- Transmita um secret usando variáveis de ambiente.
As variáveis de ambiente são resolvidas no momento da inicialização da instância. Portanto, se você usar esse método, o Google recomenda que você fixe o secret em uma versão específica em vez de usar
latest
como a versão.
Para mais informações, consulte as práticas recomendadas do Secret Manager.
Como os secrets são verificados na implantação e no ambiente de execução
Durante a implantação do pool de workers, o Cloud Run verifica todos os secrets que você usa. A verificação garante que a conta de serviço que executa o contêiner tenha permissão para acessar esses secrets.
Durante o tempo de execução, quando as instâncias são iniciadas:
- Se o secret for uma variável de ambiente, o Cloud Run vai recuperar o valor dele antes de iniciar a instância. Se o processo de recuperação de secrets falhar, a instância não será iniciada.
- Se você ativar o secret como um volume, o Cloud Run não vai realizar nenhuma verificação durante a inicialização da instância. No entanto, durante o tempo de execução, se um secret estiver inacessível, as tentativas de ler o volume montado vão falhar.
Propriedade do volume
A propriedade de um volume secreto do Cloud Run varia de acordo com o ambiente de execução e o tipo de implantação.
Quando você monta um volume de secret usando o ambiente de execução de segunda geração, que é sempre o caso do pool de workers, a raiz é proprietária do volume.
Antes de começar
-
Enable the Secret Manager API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. - Use um secret atual ou crie um no Secret Manager, conforme descrito em Criar secret.
Funções exigidas
Para receber as permissões necessárias para configurar secrets, peça ao administrador para conceder a você os papéis do IAM a seguir:
-
Administrador do Cloud Run (
roles/run.admin
) no pool de worker do Cloud Run -
Usuário da conta de serviço (
roles/iam.serviceAccountUser
) na identidade do serviço
Para permitir que o Cloud Run acesse o secret, a identidade do serviço precisa ter o seguinte papel:
- Acessador de secrets do Secret Manager (
roles/secretmanager.secretAccessor
)
Para instruções sobre como adicionar o principal de identidade de serviço ao papel Acessador de Secrets do Secret Manager, consulte Gerenciar o acesso aos secrets.
Para uma lista de papéis e permissões do IAM associados ao Cloud Run, consulte Papéis do IAM do Cloud Run e Permissões do IAM do Cloud Run. Se o pool de trabalhadores do Cloud Run interagir com APIs doGoogle Cloud , como as bibliotecas de cliente do Cloud, consulte o guia de configuração de identidade de serviço. Para mais informações sobre como conceder papéis, consulte permissões de implantação e gerenciar acesso.
Tornar um secret acessível ao Cloud Run
Qualquer mudança na configuração leva à criação de uma nova revisão. As próximas revisões também recebem automaticamente essa configuração, a menos que você faça atualizações explícitas para alterá-la.
É possível tornar um secret acessível ao pool de trabalhadores usando o console Google Cloud ou a Google Cloud CLI ao implantar um novo pool de trabalhadores ou atualizar um pool de trabalhadores e implantar uma revisão. Clique na guia escolhida:
Console
No Google Cloud console, acesse o Cloud Run:
Selecione Pools de workers no menu e clique em Implantar contêiner para configurar um novo pool de workers. Preencha a página inicial de configurações do pool de workers e clique em Contêineres, volumes, Rede e segurança para expandir a página de configuração.
Se você estiver configurando um pool de workers atual, clique nele e em Editar e implantar nova revisão.
Siga as etapas para expor o secret como uma variável de ambiente ou ativá-lo como um volume.
Para expor o secret como uma variável de ambiente:
- Clique na guia Contêineres.
- Na guia Variáveis e secrets, clique em Referenciar um secret.
- No campo Nome 1, insira o nome da variável de ambiente.
- Na lista Secret, selecione o secret que você quer usar.
- Na lista Versão 1, selecione a versão do secret a ser referenciada.
- Clique em Concluído.
- Clique em Criar ou Implantar.
Para ativar o secret como um volume:
- Clique na guia Volumes e selecione Adicionar volume.
- Na lista Tipo de volume, selecione Secret.
- No campo Nome do volume, digite um nome ou aceite o nome padrão.
- Na lista Secret, selecione o secret que você quer usar.
- No campo Caminho 1, digite o nome do arquivo a ser ativado.
- Na lista Versão 1, selecione a versão do secret a ser referenciada. Por padrão, a versão mais recente é selecionada. É possível selecionar uma versão específica.
- Clique em Concluído.
- Acesse a guia Contêiner(es) para ativar o secret no contêiner.
- Na guia Ativações de volume, clique em Ativar volume.
- Na lista Nome 1, selecione o nome do volume.
- No campo Caminho de ativação 1, insira o caminho de ativação do secret. Esse é o diretório em que todas as versões do secret são colocadas.
- Clique em Concluído.
- Clique em Criar ou Implantar.
gcloud
Para expor o secret como uma variável de ambiente ao implantar um pool de trabalhadores, execute o seguinte comando:
gcloud beta run worker-pools deploy WORKER_POOL \ --image IMAGE_URL \ --update-secrets=ENV_VAR_NAME=SECRET_NAME:VERSION
Substitua:
WORKER_POOL
: o nome do pool de workers.- IMAGE_URL: uma referência à imagem de contêiner que
contém o pool de workers, como
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
. ENV_VAR_NAME
: o nome da variável de ambiente que você quer usar com o secret.SECRET_NAME
: o nome do secret no mesmo projeto. Por exemplo,mysecret
.VERSION
: a versão do secret. Uselatest
para a versão mais recente ou um número, por exemplo,2
.
Para atualizar vários secrets ao mesmo tempo, separe as opções de configuração de cada secret com uma vírgula. O comando a seguir atualiza um secret ativado como um volume e outro secret exposto como uma variável de ambiente. Para atualizar os secrets atuais, execute o seguinte comando:
gcloud beta run worker-pools deploy WORKER_POOL \ --image IMAGE_URL \ --update-secrets=PATH=SECRET_NAME:VERSION,ENV_VAR_NAME=SECRET_NAME:VERSION
Para limpar os secrets atuais e tornar um novo secret acessível ao pool de worker, use a flag
--set-secrets
:gcloud beta run worker-pools update WORKER_POOL \ --set-secrets="ENV_VAR_NAME=SECRET_NAME:VERSION"
Fazer referência a secrets de outros projetos
Para fazer referência a um secret de outro projeto, verifique se a conta do pool de workers do projeto tem acesso ao secret.
Console
No Google Cloud console, acesse o Cloud Run:
Selecione Pools de workers no menu e clique em Implantar contêiner para configurar um novo pool de workers. Preencha a página inicial de configurações do pool de workers e clique em Contêineres, volumes, Rede e segurança para expandir a página de configuração.
Se você estiver configurando um pool de workers atual, clique nele e em Editar e implantar nova revisão.
Siga as etapas para expor o secret como uma variável de ambiente ou ativá-lo como um volume.
Para expor o secret como uma variável de ambiente:
- Clique na guia Contêineres.
- Na guia Variáveis e secrets, clique em Referenciar um secret.
- No campo Nome 1, insira o nome da variável de ambiente.
- Na lista Secret, clique em Inserir secret manualmente.
Insira o ID do recurso do secret no seguinte formato:
projects/PROJECT_NUMBER/secrets/SECRET_NAME
Substitua:
PROJECT_NUMBER pelo número do projeto Google Cloud . Para instruções detalhadas sobre como encontrar o número do projeto, consulte Criar e gerenciar projetos.
SECRET_NAME: o nome do secret no Secret Manager.
Na lista Versão 1, selecione a versão do secret a ser referenciada.
Clique em Concluído.
Clique em Criar ou Implantar.
Para ativar o secret como um volume:
- Clique na guia Volumes e selecione Adicionar volume.
- Na lista Tipo de volume, selecione Secret.
- No campo Nome do volume, digite um nome ou aceite o nome padrão.
- Na lista Secret, clique em Inserir secret manualmente.
Insira o ID do recurso do secret no seguinte formato:
projects/PROJECT_NUMBER/secrets/SECRET_NAME
Substitua:
PROJECT_NUMBER pelo número do projeto Google Cloud . Para instruções detalhadas sobre como encontrar o número do projeto, consulte Criar e gerenciar projetos.
SECRET_NAME: o nome do secret no Secret Manager.
No campo Caminho 1, digite o nome do arquivo a ser ativado.
Na lista Versão 1, selecione a versão do secret a ser referenciada. Por padrão, a versão mais recente é selecionada. É possível selecionar uma versão específica.
Clique em Concluído.
Acesse a guia Contêiner(es) para ativar o secret no contêiner.
Na guia Ativações de volume, clique em Ativar volume.
Na lista Nome 1, selecione o nome do volume.
No campo Caminho de ativação 1, insira o caminho de ativação do secret. Esse é o diretório em que todas as versões do secret são colocadas.
Clique em Concluído.
Clique em Criar ou Implantar.
gcloud
Para referenciar um secret como uma variável de ambiente, execute o seguinte comando:
gcloud beta run worker-pools deploy WORKER_POOL \ --image IMAGE_URL \ --update-secrets=ENV_VAR_NAME=projects/PROJECT_NUMBER/secrets/SECRET_NAME:VERSION
Substitua:
WORKER_POOL
: o nome do pool de workers.- IMAGE_URL: uma referência à imagem de contêiner que
contém o pool de workers, como
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
. PROJECT_NUMBER
pelo número do projeto em que o secret foi criado.SECRET_NAME
: o nome do secret, por exemplo,mysecret
.VERSION
pela versão do secret Uselatest
para a versão mais recente ou um número, por exemplo,2
.
Ver configurações de secrets
Para ver as configurações de secrets atuais do pool de trabalhadores do Cloud Run:
Console
No console do Google Cloud , acesse a página de pools de trabalhadores do Cloud Run:
Clique no pool de workers em que você tem interesse para abrir a página Detalhes do pool de workers.
Clique em Editar e implantar nova revisão.
Localize a definição dos secrets nos detalhes da configuração.
gcloud
Use o comando a seguir:
gcloud beta run worker-pools describe WORKER_POOL
Localize a configuração de secret na configuração retornada.
Remover secrets de um pool de workers
É possível remover secrets de um pool de workers usando o console Google Cloud ou a CLI gcloud:
Console
No Google Cloud console, acesse o Cloud Run:
Selecione o pool de workers na lista e clique em Editar e implantar nova revisão.
Clique na guia Contêineres.
Para excluir secrets montados como um volume, selecione a guia Montagens de volume, passe o cursor sobre o secret que você quer remover e clique em
Excluir.Para excluir secrets expostos como uma variável de ambiente, selecione a guia Variáveis e secrets, passe o cursor sobre o secret que você quer remover e clique em
Excluir.Clique em Implantar.
gcloud
É possível remover todos os secrets de um pool de workers ou especificar um ou mais secrets a serem removidos:
- Para remover todos os segredos, execute o seguinte comando:
gcloud beta run worker-pools deploy WORKER_POOL --image IMAGE_URL \ --clear-secrets
Substitua:
- WORKER_POOL: o nome do pool de workers.
IMAGE_URL: uma referência à imagem de contêiner que contém o pool de workers, como
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
.Para especificar uma lista de secrets a serem removidos, use a sinalização
--remove-secrets
. O comando a seguir remove um secret ativado como um volume e outro secret exposto como uma variável de ambiente.
gcloud beta run worker-pools deploy WORKER_POOL --image IMAGE_URL \ --remove-secrets=ENV_VAR_NAME,SECRET_FILE_PATH
Substitua:
- WORKER_POOL: o nome do pool de workers.
- IMAGE_URL: uma referência à imagem de contêiner que
contém o pool de workers, como
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
. - ENV_VAR_NAME: o nome da variável de ambiente.
SECRET_FILE_PATH: o caminho completo do secret. Por exemplo,
/mnt/secrets/primary/latest
, em que/mnt/secrets/primary/
é o caminho de ativação elatest
é o caminho secreto. Também é possível especificar os caminhos de montagem e secret separadamente:--set-secrets MOUNT_PATH:SECRET_PATH=SECRET:VERSION
Usar secrets no código
Para exemplos de como acessar secrets no código como variáveis de ambiente, consulte o tutorial sobre autenticação de usuários finais, especialmente a seção Como lidar com configurações sensíveis com o Secret Manager.
Caminhos e limitações não permitidos
As seguintes limitações se aplicam à montagem de secrets:
- O Cloud Run não permite ativar secrets em
/dev
,/proc
e/sys
, ou nos subdiretórios. - O Cloud Run não permite ativar vários secrets no mesmo caminho porque duas ativações de volume não podem ser montadas no mesmo local.
Substituição de um diretório
Se o secret for montado como um volume no Cloud Run e o último diretório no caminho de montagem do volume já existir, todos os arquivos ou pastas no diretório atual ficarão inacessíveis.
Por exemplo, se um secret chamado my-secret
for ativado no caminho
/etc/app_data
, todo o conteúdo dentro do diretório app_data
será
substituído, e o único arquivo visível será /etc/app_data/my-secret
.
Para evitar a substituição de arquivos em um diretório atual, crie um novo diretório para
ativar o secret, por exemplo, /etc/app_data/secrets
, de modo que o caminho
de ativação do secret seja /etc/app_data/secrets/my-secret
.