Esta página descreve como encaminhar entradas de registo criando destinos que são configurados com contas de serviço geridas pelo utilizador. Por predefinição, o Logging usa uma conta de serviço do Logging para todos os destinos num recurso. No entanto, se os seus destinos de registo estiverem em projetos diferentes, pode criar e gerir a sua própria conta de serviço gerida pelo utilizador, o que lhe permite gerir centralmente as autorizações de gestão de identidades e acessos a partir do projeto que contém a sua conta de serviço gerida pelo utilizador.
Só pode criar um destino que use uma conta de serviço gerida pelo utilizador quando o destino do destino for um contentor de registos ou um Google Cloud projeto. O exemplo neste documento ilustra como configurar um destino que usa uma conta de serviço gerida pelo utilizador em que o destino é um contentor de registos.
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.
Certifique-se de que tem uma conta de serviço gerida pelo utilizador e, em seguida, defina as seguintes variáveis com os valores adequados para a sua conta de serviço gerida pelo utilizador:
CUSTOM_SA_PROJECT_ID: O ID do projeto que contém a sua conta de serviço gerida pelo utilizador.
CUSTOM_SA: o endereço de email da sua conta de serviço gerida pelo utilizador.
Para ver informações sobre como criar uma conta de serviço, consulte o artigo Crie contas de serviço.
Certifique-se de que tem um contentor de registos que possa servir como destino de um coletor de registos e, em seguida, defina as seguintes variáveis para valores adequados para o seu contentor de registos. Se necessário, crie um contentor de registos:
LOG_BUCKET_PROJECT_ID: O ID do projeto que contém o seu contentor de registos.
LOCATION: a localização do contentor de registos.
BUCKET_NAME: o nome do contentor de registos.
Identifique o nome da conta de serviço de registo que existe no projeto no qual planeia criar o destino do registo e, em seguida, defina as seguintes variáveis com os respetivos valores:
SINK_PROJECT_ID: O ID do projeto onde planeia criar o coletor de registos.
LOGGING_SA: o endereço de email da conta de serviço de registo predefinida. Para obter este endereço, execute o seguinte comando:
gcloud logging settings describe --project=SINK_PROJECT_ID
Na resposta, a linha que começa com
loggingServiceAccountId
apresenta o endereço de email da sua conta de serviço.
No projeto que contém a sua conta de serviço gerida pelo utilizador, certifique-se de que a restrição booleana da política da organização
iam.disableCrossProjectServiceAccountUsage
não é aplicada. Por predefinição, esta restrição é aplicada. Para desativar esta restrição para que possa anexar uma conta de serviço a um recurso noutro 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 vários projetos, consulte o artigo Ative a associação de contas de serviço em vários projetos.
- PRINCIPAL: um identificador do principal ao qual quer conceder a função. Normalmente, os identificadores principais têm o seguinte formato:
PRINCIPAL-TYPE:ID
. Por exemplo,user:my-user@example.com
. Para ver uma lista completa dos formatos quePRINCIPAL
pode ter, consulte Identificadores principais. - SINK_NAME: o nome do sink de registo.
Execute o comando
gcloud logging write
:Antes de executar o seguinte comando, faça as seguintes substituições:
- LOG_NAME: o nome do registo. Por exemplo, pode
definir este campo como
mylog
.
Execute o comando
gcloud logging write
:gcloud logging write LOG_NAME "Test log entry" --project=SINK_PROJECT_ID
O comando anterior devolve a seguinte mensagem:
Created log entry.
- LOG_NAME: o nome do registo. Por exemplo, pode
definir este campo como
Para ler a entrada de registo que acabou de escrever, execute o seguinte comando:
gcloud logging read 'textPayload="Test log entry"' \ --bucket=BUCKET_NAME --location=LOCATION \ --view=_AllLogs --project=SINK_PROJECT_ID
Para saber como encaminhar entradas de registo para destinos suportados, consulte o artigo Encaminhe registos para destinos suportados.
Para uma vista geral sobre como o registo encaminha e armazena as suas entradas de registo, consulte a Vista geral do encaminhamento e armazenamento.
Se tiver problemas ao usar destinos para encaminhar entradas de registo, consulte o artigo Resolva problemas de encaminhamento de registos.
Para saber como ver as entradas de registo nos respetivos destinos, bem como a forma como as entradas de registo são formatadas e organizadas, consulte Ver registos nos destinos de sincronização.
Conceda funções de IAM
Esta secção descreve os pré-requisitos para criar um destino que use uma conta de serviço gerida pelo utilizador.
Permitir que a conta de serviço gerida pelo utilizador escreva entradas de registo no destino do contentor
Conceda à conta de serviço gerida pelo utilizador as autorizações necessárias para escrever entradas de registo no destino do coletor que vai criar num passo subsequente. O destino do coletor vai ser um contentor de registos armazenado no projeto com o nome LOG_BUCKET_PROJECT_ID.
Para conceder as autorizações necessárias à conta de serviço gerida pelo utilizador, conceda-lhe a função de escritor do contentor de registos (roles/logging.bucketWriter
) no projeto que contém o contentor de registos:
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
.
Configure a simulação de contas de serviço
Configure a conta de serviço do Cloud Logging predefinida, LOGGING_SA, para que possa roubar a identidade da conta de serviço gerida pelo utilizador, CUSTOM_SA. A conta de serviço do Cloud Logging predefinida existe no projeto no qual quer criar destinos de registo que usam a conta de serviço gerida pelo utilizador. Google Cloud
Para configurar a personificação da conta de serviço, conceda a função
Criador de tokens de contas de serviço
(roles/iam.serviceAccountTokenCreator
) à conta de serviço do Cloud Logging
na conta de serviço gerida pelo utilizador:
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 da conta de serviço envolve dois principais: a conta de serviço que não tem autorizações para aceder a um recurso e a conta de serviço com privilégios que tem as autorizações para aceder a um recurso. Neste caso, a conta de serviço gerida pelo utilizador é a conta com privilégios, porque tem a capacidade de escrever entradas de registo no destino do coletor, que é um contentor de registos no projeto denominado LOG_BUCKET_PROJECT_ID. A conta de serviço do Logging tem os privilégios para encaminhar entradas de registo.
Para mais informações sobre a função criador de tokens de contas de serviço, consulte o artigo Função criador de tokens de contas de serviço.
Para mais informações sobre a simulação da conta de serviço, consulte o artigo Acerca da simulação da conta de serviço.
Permitir que o principal execute operações como a conta de serviço gerida pelo utilizador
Conceda ao principal que vai criar o coletor as autorizações de que precisa para executar operações como a conta de serviço gerida pelo utilizador.
Para conceder as autorizações necessárias, atribua ao principal a função de utilizador da conta de serviço (roles/iam.serviceAccountUser
) no projeto Google Cloud que armazena a conta de serviço gerida pelo utilizador CUSTOM_SA_PROJECT_ID.
Antes de executar o seguinte comando, faça as seguintes substituições:
Execute o comando
gcloud iam service-accounts add-iam-policy-binding
:
gcloud iam service-accounts add-iam-policy-binding CUSTOM_SA \
--project=CUSTOM_SA_PROJECT_ID \
--member='PRINCIPAL' \
--role='roles/iam.serviceAccountUser'
Se usar funções personalizadas, o principal precisa da autorização iam.serviceAccounts.actAs
.
Para mais informações acerca da função Utilizador da conta de serviço, consulte o artigo Função Utilizador da conta de serviço.
Crie um destino de registo que use uma conta de serviço gerida pelo utilizador
Para criar um destino com uma conta de serviço gerida pelo utilizador, execute o comando
gcloud logging sinks create
e inclua a opção --custom-writer-identity
.
Antes de executar o seguinte comando, faça as seguintes substituições:
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
Verifique se o coletor está a encaminhar entradas de registo
Nesta secção, usa a CLI gcloud para escrever e ler uma entrada de registo para verificar se o seu destino está a encaminhar as entradas de registo corretamente.
Para verificar se o coletor está a encaminhar as entradas do registo corretamente, faça o seguinte: