Nesta página, descrevemos como rotear entradas de registro criando coletores configurados com contas de serviço gerenciado pelo usuário. Por padrão, o Logging usa uma conta de serviço do Logging para todos os coletores em um recurso. No entanto, se os coletores de registro estiverem em projetos diferentes, você poderá criar e gerenciar sua própria conta de serviço gerenciado pelo usuário, o que permite gerenciar centralmente as permissões do Identity and Access Management no projeto que contém a conta de serviço gerenciada pelo usuário.
Só é possível criar um coletor que usa uma conta de serviço gerenciado pelo usuário quando o destino do coletor é um bucket de registros ou um Google Cloud projeto. O exemplo neste documento ilustra como configurar um coletor que usa uma conta de serviço gerenciado pelo usuário em que o destino é um bucket de registros.
Recomendamos que você revise a configuração do coletor de registros ao fazer alterações no armazenamento de registros. Por exemplo, se você excluir o destino de um coletor de registros, exclua o coletor de registros correspondente.
Antes de começar
-
No Google Cloud console, ative o Cloud Shell.
Na parte de baixo do Google Cloud console, uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a Google Cloud CLI já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.
Verifique se você tem uma conta de serviço gerenciado pelo usuário e defina as seguintes variáveis com valores adequados para sua conta de serviço gerenciado pelo usuário:
CUSTOM_SA_PROJECT_ID:o ID do projeto que contém a conta de serviço gerenciado pelo usuário.
CUSTOM_SA: o endereço de e-mail da conta serviço gerenciado pelo usuário.
Para informações sobre como criar uma conta de serviço, consulte Criar contas de serviço.
Verifique se você tem um bucket de registros que pode servir como destino de um coletor de registros e defina as seguintes variáveis com valores adequados para o bucket de registros. Se necessário, crie um bucket de registro:
LOG_BUCKET_PROJECT_ID: o ID do projeto que contém o bucket de registros.
LOCATION: o local do bucket de registros.
BUCKET_NAME: o nome do bucket de registros.
Identifique o nome da conta de serviço do Logging que existe no projeto em que você planeja criar o coletor de registros e defina as seguintes variáveis com os valores adequados:
SINK_PROJECT_ID: O ID do projeto em que você planeja criar o coletor de registros.
LOGGING_SA: o endereço de e-mail da conta de serviço padrão do Logging. Para receber esse endereço, execute o seguinte comando:
gcloud logging settings describe --project=SINK_PROJECT_IDNa resposta, a linha que começa com
loggingServiceAccountIdlista o endereço de e-mail da sua conta de serviço.
No projeto que contém a conta de serviço gerenciado pelo usuário, verifique se a restrição booleana da política da organização
iam.disableCrossProjectServiceAccountUsagenão está aplicada. Por padrão, essa restrição é aplicada. Para desativar essa restrição e anexar uma conta de serviço a um recurso em outro projeto, execute o seguinte comando:gcloud resource-manager org-policies disable-enforce \ iam.disableCrossProjectServiceAccountUsage \ --project=CUSTOM_SA_PROJECT_IDPara mais informações sobre como ativar contas de serviço em projetos, consulte Ativar a vinculação de contas de serviço entre projetos.
Conceder papéis do IAM
Esta seção descreve os pré-requisitos para criar um coletor que usa uma conta serviço gerenciado pelo usuário.
Permitir que a conta de serviço gerenciado pelo usuário grave entradas de registro no destino do coletor
Conceda à conta de serviço gerenciado pelo usuário as permissões necessárias para gravar entradas de registro no destino do coletor que você vai criar em uma etapa subsequente. O destino do coletor será um bucket de registros armazenado no projeto chamado LOG_BUCKET_PROJECT_ID.
Para conceder as permissões necessárias à conta serviço gerenciado pelo usuário, conceda a ela o papel de gravador de bucket de registros (roles/logging.bucketWriter) no projeto que contém o bucket de registro:
gcloud projects add-iam-policy-binding LOG_BUCKET_PROJECT_ID \
--member='serviceAccount:CUSTOM_SA' \
--role='roles/logging.bucketWriter'
Para mais informações sobre o comando anterior, consulte
gcloud projects add-iam-policy-binding.
Configurar a identidade temporária de conta de serviço
Configure a conta de serviço padrão do Cloud Logging, LOGGING_SA, para que ela possa representar a conta de serviço gerenciado pelo usuário, CUSTOM_SA. A conta de serviço padrão do Cloud Logging existe no Google Cloud projeto em que você quer criar coletores de registro que usam a conta de serviço gerenciado pelo usuário.
Para configurar a identidade temporária de conta de serviço, conceda o papel de criador de token da conta de serviço (roles/iam.serviceAccountTokenCreator) à conta de serviço do Cloud Logging na conta de serviço gerenciado pelo usuário:
gcloud iam service-accounts add-iam-policy-binding CUSTOM_SA \
--project=CUSTOM_SA_PROJECT_ID \
--member='serviceAccount:LOGGING_SA' \
--role='roles/iam.serviceAccountTokenCreator'
A identidade temporária de conta de serviço envolve dois principais: a conta de serviço que não tem permissões para acessar um recurso e a conta de serviço com privilégios que tem as permissões para acessar um recurso. Nesse caso, a conta de serviço gerenciado pelo usuário é a conta com privilégios porque ela tem a capacidade de gravar entradas de registro no destino do coletor, que é um bucket de registros no projeto chamado LOG_BUCKET_PROJECT_ID. A conta de serviço do Logging tem os privilégios para rotear entradas de registro.
Para mais informações sobre o papel de criador de token da conta de serviço, consulte Papel de criador de token da conta de serviço.
Para mais informações sobre a identidade temporária de conta de serviço, consulte Sobre a identidade temporária de conta de serviço.
Permitir que o principal execute operações como a conta serviço gerenciado pelo usuário
Conceda ao principal que vai criar o coletor as permissões necessárias para executar operações como a conta serviço gerenciado pelo usuário.
Para conceder as permissões necessárias, conceda ao principal o papel de usuário da conta de serviço (roles/iam.serviceAccountUser) no Google Cloud projeto que armazena a conta de serviço gerenciado pelo usuário, CUSTOM_SA_PROJECT_ID.
Antes de executar o comando a seguir, faça as seguintes substituições:
- PRINCIPAL: um identificador para o principal a que você quer
conceder o papel. Os identificadores principais geralmente têm o seguinte formato:
PRINCIPAL-TYPE:ID. Por exemplo,user:my-user@example.com. Para uma lista completa dos formatos quePRINCIPALpode ter, consulte Identificadores de principais.
Execute o
gcloud iam service-accounts add-iam-policy-binding
comando:
gcloud iam service-accounts add-iam-policy-binding CUSTOM_SA \
--project=CUSTOM_SA_PROJECT_ID \
--member='PRINCIPAL' \
--role='roles/iam.serviceAccountUser'
Se você usar papéis personalizados, o principal precisará da permissão iam.serviceAccounts.actAs.
Para mais informações sobre o papel de usuário da conta de serviço, consulte Papel de usuário da conta de serviço.
Criar um coletor de registros que usa uma conta serviço gerenciado pelo usuário
Para criar um coletor com uma conta serviço gerenciado pelo usuário, execute o comando gcloud logging sinks create e inclua a opção --custom-writer-identity.
Antes de executar o comando a seguir, faça as seguintes substituições:
- SINK_NAME: o nome do coletor de registros.
Execute o
gcloud logging sinks create
comando:
gcloud logging sinks create SINK_NAME \
logging.googleapis.com/projects/LOG_BUCKET_PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME \
--custom-writer-identity=serviceAccount:CUSTOM_SA \
--project=SINK_PROJECT_ID
Verificar se o coletor está roteando entradas de registro
Nesta seção, você usa a CLI gcloud para gravar e ler uma entrada de registro para verificar se o coletor está roteando entradas de registro corretamente.
Para verificar se o coletor está roteando entradas de registro corretamente, faça o seguinte:
Execute o comando
gcloud logging write:Antes de executar o comando a seguir, faça as seguintes substituições:
- LOG_NAME: o nome do registro. Por exemplo, você pode definir esse campo como
mylog.
Execute o
gcloud logging writecomando:gcloud logging write LOG_NAME "Test log entry" --project=SINK_PROJECT_IDO comando anterior retorna a seguinte mensagem:
Created log entry.- LOG_NAME: o nome do registro. Por exemplo, você pode definir esse campo como
Para ler a entrada de registro que você acabou de gravar, execute o seguinte comando:
gcloud logging read 'textPayload="Test log entry"' \ --bucket=BUCKET_NAME --location=LOCATION \ --view=_AllLogs --project=SINK_PROJECT_ID
A seguir
Para saber como rotear entradas de registro para destinos compatíveis, consulte Roteamento de registros para destinos compatíveis.
Para uma visão geral de como o Logging roteia e armazena suas entradas de registro, consulte Visão geral de roteamento e armazenamento.
Se você encontrar problemas ao usar coletores para rotear entradas de registro, consulte Resolver problemas de roteamento de registros.
Para saber como visualizar as entradas de registro nos destinos delas e como as entradas de registro são formatadas e organizadas, consulte Ver os registros nos destinos do coletor.