Esta página descreve como rotear registros criando destinos configurados com contas de serviço gerenciadas pelo usuário. Por padrão, o Logging usa Conta de serviço do Logging para todos os coletores em um recurso. No entanto, se os destinos de registro estiverem em projetos diferentes, você poderá criar e gerenciar sua própria conta de serviço gerenciada pelo usuário, que permite gerenciar centralmente as permissões de Identity and Access Management do projeto que contém a conta de serviço gerenciada pelo usuário.
Só é possível criar um coletor que use uma conta de serviço gerenciado pelo usuário o destino do coletor é um bucket de registros ou um projeto do Google Cloud. O exemplo neste documento ilustra como configurar um sink que usa uma conta de serviço gerenciada pelo usuário, em que o destino é um bucket de registro.
Antes de começar
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Verifique se você tem uma conta serviço gerenciado pelo usuário variáveis a seguir aos valores apropriados para sua conta de serviço gerenciado pelo usuário:
CUSTOM_SA_PROJECT_ID: O ID do projeto que contém o serviço gerenciado pelo usuário do Compute Engine.
CUSTOM_SA: o e-mail da conta de serviço gerenciado pelo usuário.
Para saber como criar uma conta de serviço, consulte Criar contas de serviço.
Verifique se você tem um bucket de registros que possa servir como destino um coletor de registros e, em seguida, defina as variáveis a seguir como valores adequados para seu bucket de registros. Se necessário, crie um bucket de registros:
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 registro.
Identifique o nome da conta de serviço do Logging que existe no projeto em que você planeja criar o coletor de registros e depois defina as seguintes variáveis com seus valores apropriados:
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 de registro padrão. Para conseguir esse endereço, execute o seguinte comando:
gcloud logging settings describe --project=SINK_PROJECT_ID
Na resposta, a linha que começa com
loggingServiceAccountId
lista o endereço de e-mail da sua conta de serviço.
No projeto que contém a conta de serviço gerenciada pelo usuário, verifique se a restrição booleana da política da organização
iam.disableCrossProjectServiceAccountUsage
não foi aplicada. Por padrão, essa restrição é aplicada. Para desativar essa restrição anexar uma conta de serviço recurso em outro projeto, execute o seguinte comando:gcloud resource-manager org-policies disable-enforce \ iam.disableCrossProjectServiceAccountUsage \ --project=CUSTOM_SA_PROJECT_ID
Para mais informações sobre como ativar contas de serviço em projetos, consulte Ative as contas de serviço que serão anexadas aos projetos.
Conceder papéis do IAM
Esta seção descreve os pré-requisitos para criar um sink que usa uma conta de serviço gerenciada pelo usuário.
Permitir que a conta de serviço gerenciada pelo usuário grave entradas de registro no destino do coletor
Conceder à conta de serviço gerenciado pelo usuário as permissões necessárias para gravar entradas de registro no destino do coletor que será criado uma etapa subsequente. O destino do coletor será um bucket de registros no projeto chamado LOG_BUCKET_PROJECT_ID.
Para conceder as permissões necessárias à conta de serviço gerenciado pelo usuário, conceda
o papel de Gravador do bucket de registros (roles/logging.bucketWriter
) no projeto
que contém o bucket de registros:
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 representação da conta de serviço
Configure a conta de serviço padrão do Cloud Logging, LOGGING_SA, para representar a conta de serviço gerenciado pelo usuário, CUSTOM_SA. A conta de serviço padrão do Cloud Logging existe no projeto do Google Cloud em que você quer criar sinks de registro que usam a conta de serviço gerenciada pelo usuário.
Para configurar a representação de uma conta de serviço, conceda
Papel Criador de token da conta de serviço
(roles/iam.serviceAccountTokenCreator
) para o 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 representação de uma 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. Neste Nesse caso, a conta serviço gerenciado pelo usuário é a conta com privilégios porque consegue 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 o para rotear os registros.
Para mais informações sobre o papel de criador de token da conta de serviço, consulte Papéis para gerenciar e falsificar contas de serviço: papel de criador de token da conta de serviço.
Para saber mais sobre a representação de uma conta de serviço, consulte Sobre a conta de serviço falsificação de identidade.
Permitir que o principal execute operações como a conta serviço gerenciado pelo usuário
Dê ao principal que vai criar o coletor as permissões necessárias para e executar operações como a conta de 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 projeto do Google Cloud que armazena
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 do principal que você quer
atribuir 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 quePRINCIPAL
pode ter, consulte Identificadores 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 vai precisar da
permissão iam.serviceAccounts.actAs
.
Para mais informações sobre o papel de usuário da conta de serviço, consulte Papéis para gerenciar e representar contas de serviço: conta de serviço Função do usuário.
Criar um sink de registro que usa uma conta de serviço gerenciada pelo usuário
Para criar um coletor com uma conta de serviço gerenciado pelo usuário, execute o
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
comando
gcloud logging sinks create
:
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 sink está roteando registros
Nesta seção, você vai usar a CLI gcloud para gravar e ler um registro entrada para verificar se o coletor está roteando os registros corretamente.
Para verificar se o coletor está roteando os registros 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, é possível
definir esse campo como
mylog
.
Execute o comando
gcloud logging write
:gcloud logging write LOG_NAME "Test log entry" --project=SINK_PROJECT_ID
O comando anterior retorna a seguinte mensagem:
Created log entry.
- LOG_NAME: o nome do registro. Por exemplo, é possível
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 mais sobre como rotear seus registros para destinos compatíveis, consulte Rotear registros para destinos compatíveis.
Para uma visão geral de como o Logging roteia e armazena seus registros, consulte Visão geral de roteamento e armazenamento.
Se você encontrar problemas ao usar coletores para rotear registros, consulte Resolver problemas de registros de roteamento.
Para saber como visualizar os registros roteados nos destinos deles e como os registros são formatados e organizados, consulte Ver os registros nos destinos do coletor.