As contas de serviço são um tipo especial de Conta do Google que concede permissões a máquinas virtuais, não a usuários finais. Elas são usadas principalmente para garantir conexões seguras e gerenciadas com APIs e serviços do Google Cloud. Conceder acesso a conexões confiáveis e rejeitar as mal-intencionadas é um recurso de segurança obrigatório para qualquer projeto do Google Cloud.
Objetivos
Neste laboratório, você vai aprender a:
Criar e gerenciar contas de serviço
Criar uma máquina virtual e associá-la a uma conta de serviço
Usar bibliotecas de cliente para acessar o BigQuery a partir de uma conta de serviço
Executar uma consulta em um conjunto de dados público do BigQuery usando uma instância do Compute Engine
Configuração e requisitos
Para cada laboratório, você recebe um novo projeto do Google Cloud e um conjunto de recursos por um determinado período e sem custos financeiros.
Faça login no Qwiklabs em uma janela anônima.
Confira o tempo de acesso do laboratório (por exemplo, 1:15:00) e finalize todas as atividades nesse prazo.
Não é possível pausar o laboratório. Você pode reiniciar o desafio, mas vai precisar refazer todas as etapas.
Quando tudo estiver pronto, clique em Começar o laboratório.
Anote as credenciais (Nome de usuário e Senha). É com elas que você vai fazer login no Console do Google Cloud.
Clique em Abrir Console do Google.
Clique em Usar outra conta, depois copie e cole as credenciais deste laboratório nos locais indicados.
Se você usar outras credenciais, vai receber mensagens de erro ou cobranças.
Aceite os termos e pule a página de recursos de recuperação.
Ative o Google Cloud Shell
O Google Cloud Shell é uma máquina virtual com ferramentas de desenvolvimento. Ele tem um diretório principal permanente de 5 GB e é executado no Google Cloud.
O Cloud Shell oferece acesso de linha de comando aos recursos do Google Cloud.
No console do Cloud, clique no botão "Abrir o Cloud Shell" na barra de ferramentas superior direita.
Clique em Continuar.
O provisionamento e a conexão do ambiente podem demorar um pouco. Quando você estiver conectado, já estará autenticado, e o projeto estará definido com seu PROJECT_ID. Exemplo:
A gcloud é a ferramenta de linha de comando do Google Cloud. Ela vem pré-instalada no Cloud Shell e aceita preenchimento com tabulação.
Para listar o nome da conta ativa, use este comando:
Uma conta de serviço é uma Conta do Google especial que pertence ao aplicativo ou a uma máquina virtual (VM), e não a um usuário final específico. O aplicativo usa a conta de serviço para chamar a API de um serviço do Google. Assim, os usuários não são diretamente envolvidos.
Por exemplo, uma VM do Compute Engine pode ser executada como uma conta de serviço, e essa conta pode receber permissões para acessar os recursos de que precisa. Assim, essa conta é a identidade do serviço, e as permissões dela controlam quais recursos podem ser acessados por ele.
Uma conta de serviço é identificada pelo endereço de e-mail dela, que é exclusivo.
Tipos de contas de serviço
Contas de serviço gerenciadas pelo usuário
Se você criar um novo projeto do Cloud usando o console do Cloud e a API Compute Engine estiver ativada para esse projeto, uma conta de serviço do Compute Engine será criada para você por padrão. Ela pode ser identificada pelo e-mail:
PROJECT_NUMBER-compute@developer.gserviceaccount.com.
Por padrão, uma conta de serviço do App Engine é criada quando o projeto contém um aplicativo dele. Ela pode ser identificada pelo e-mail:
PROJECT_ID@appspot.gserviceaccount.com.
Contas de serviço gerenciadas pelo Google
Além daquelas gerenciadas por usuários, pode haver mais algumas contas de serviço na política do IAM do projeto ou no console do Cloud. Elas são criadas pelo Google e pertencem a ele. Essas contas representam diferentes serviços do Google. Cada uma delas recebe automaticamente os papéis do IAM para acessar o projeto do Google Cloud.
Contas de serviço de API do Google
Uma conta de serviço de API do Google, por exemplo, é gerenciada. Ela pode ser identificada pelo e-mail:
PROJECT_NUMBER@cloudservices.gserviceaccount.com.
Essa conta de serviço foi projetada especificamente para executar processos internos do Google em nome do usuário e não está listada na seção Contas de serviço do console do Cloud. Por padrão, a conta recebe automaticamente o papel de editor de projeto no projeto e está listada na seção IAM do console do Cloud.
Essa conta de serviço só é excluída quando o projeto é eliminado. Os serviços do Google dependem do acesso ao projeto. Por isso, não remova nem altere o papel da conta.
Tarefa 1. Criar e gerenciar contas de serviço
Nesta tarefa, você cria e gerencia contas de serviço.
Por padrão, é possível criar até 100 contas de serviço gerenciadas pelo usuário em um projeto. Use o console do Cloud para solicitar um aumento da cota se ela não atender às suas necessidades.
Observação: as contas de serviço padrão descritas nesta página não são contabilizadas na cota.
Como criar uma conta de serviço
Criar uma conta de serviço é semelhante a adicionar um membro ao projeto. A diferença é que essa conta pertence aos aplicativos, e não a um usuário final específico.
Para criar uma conta de serviço, execute este comando no Cloud Shell:
gcloud iam service-accounts create my-sa-123 --display-name "my service account"
A resposta a esse comando é a conta de serviço, como no exemplo a seguir.
Resposta:
Created service account [my-sa-123]
Como atribuir papéis a contas de serviço
Ao conceder papéis do IAM, é possível tratar uma conta de serviço como recurso ou identidade.
O aplicativo usa essas contas como identidade para autenticação nos serviços do Google Cloud. Por exemplo, se uma máquina virtual (VM) do Google Compute Engine estiver sendo executada como uma conta de serviço, atribua o papel de editor a essa conta (a identidade) em um projeto (o recurso).
Ao mesmo tempo, controle também quem pode iniciar a VM. Para isso, conceda a um usuário (a identidade) o papel serviceAccountUser na conta de serviço (o recurso).
Atribua papéis a uma conta de serviço para recursos específicos
Atribua papéis a uma conta de serviço para que ela tenha permissão para concluir ações específicas nos recursos no projeto do Google Cloud. Por exemplo, atribua o papel storage.admin a uma conta de serviço para que ela tenha controle sobre objetos e buckets no Cloud Storage.
Execute este comando no Cloud Shell para conceder papéis à conta de serviço que você acabou de criar:
Selecione Verificar meu progresso para conferir o objetivo.
Como criar e gerenciar contas de serviço
Noções básicas sobre papéis
Quando uma identidade chama uma API do Google Cloud, o Cloud Identity and Access Management (Cloud IAM) exige que a identidade tenha as permissões apropriadas para usar o recurso. É possível conceder permissões ao atribuir papéis a um usuário, grupo ou conta de serviço.
Tipos de papéis
Há três tipos de papéis no Cloud IAM:
Papéis básicos: incluem os de Proprietário, Editor e Leitor que existiam antes da introdução do Cloud IAM.
Papéis predefinidos: fornecem acesso granular a um serviço específico e são gerenciados pelo Google Cloud.
Papéis personalizados: oferecem acesso granular de acordo com uma lista de permissões especificada pelo usuário.
Para mais detalhes, consulte a documentação de referência sobre papéis do IAM.
Tarefa 2. Usar bibliotecas de cliente para acessar o BigQuery em uma conta de serviço
Nesta tarefa, você vai consultar os conjuntos de dados públicos do BigQuery em uma instância usando uma conta de serviço com os papéis necessários.
Criar uma conta de serviço
Primeiro, crie uma nova conta de serviço usando o console do Cloud.
No menu de navegação do console do Cloud, clique em IAM e administrador > Contas de serviço.
Clique em Criar conta de serviço.
Especifique o nome da conta de serviço como bigquery-qwiklab.
Clique em Criar e continuar.
Especifique o Papel como BigQuery > Leitor de dados do BigQuery.
Clique em Adicionar outro papel.
Especifique o outro Papel como BigQuery > Usuário do BigQuery.
Clique em Continuar.
O console do Cloud ficará semelhante a este:
Clique em Concluído.
Criar uma instância de VM
No menu de navegação do console do Cloud, clique em Compute Engine > Instâncias de VM e depois em Criar instância.
Crie sua VM com as seguintes informações:
Configuração
Valor
Nome
bigquery-instance
Região
us-central1(Iowa)
Zona
us-central1-a
Série
E2
Tipo de máquina
e2-standard-2 (2 vCPUs)
Disco de inicialização
Debian GNU/Linux 11 (bulleye)
Conta de serviço
bigquery-qwiklab
Escopos de acesso
Permitir o acesso completo a todas as APIs do Cloud
Observação: se a conta de serviço bigquery-qwiklab não aparecer na lista suspensa, tente digitar o nome na seção Filtro.
Em seguida, você terá as opções que foram adicionadas quando selecionou um disco de inicialização com suporte para VMs protegidas.
Na parte de baixo da página, clique no link Rede, discos, segurança, gerenciamento, locatário único.
Clique na guia Segurança. Na parte de cima da guia, as opções de VM protegida são exibidas. Se você não tivesse selecionado um disco de inicialização com recursos de VM protegida, essas opções não teriam aparecido. Algumas dessas opções são selecionadas por padrão.
Clique na caixa de seleção Ativar a inicialização segura.
O Compute Engine não ativa essa opção por padrão, porque drivers não assinados e outros softwares de baixo nível podem não ser compatíveis. Mesmo assim, se possível, o Google recomenda ativar a Inicialização segura.
Clique em Criar.
Coloque o código de exemplo em uma instância do Compute Engine
No console do Cloud, acesse Compute Engine > Instâncias de VM.
Use SSH em bigquery-instance clicando no botão SSH. Clique em Conectar.
Na janela SSH, instale as dependências necessárias executando os seguintes comandos:
Com o comando echo, crie query.py. Você vai usar esse arquivo, escrito em Python, para executar a consulta.
echo "
from google.auth import compute_engine
from google.cloud import bigquery
credentials = compute_engine.Credentials(
service_account_email='YOUR_SERVICE_ACCOUNT')
query = '''
SELECT
year,
COUNT(1) as num_babies
FROM
publicdata.samples.natality
WHERE
year > 2000
GROUP BY
year
'''
client = bigquery.Client(
project='YOUR_PROJECT_ID',
credentials=credentials)
print(client.query(query).to_dataframe())
" > query.py
Adicione o ID do projeto a query.py:
sed -i -e "s/YOUR_PROJECT_ID/$(gcloud config get-value project)/g" query.py
Execute o seguinte para descobrir se o comando sed alterou o ID do projeto no arquivo:
cat query.py
Exemplo de resposta (a sua será diferente):
from google.auth import compute_engine
from google.cloud import bigquery
credentials = compute_engine.Credentials(
service_account_email='YOUR_SERVICE_ACCOUNT')
query = '''
SELECT
year,
COUNT(1) as num_babies
FROM
publicdata.samples.natality
WHERE
year > 2000
GROUP BY
year
'''
client = bigquery.Client(
project='qwiklabs-gcp-186de687ef87f911',
credentials=credentials)
print(client.query(query).to_dataframe())
Adicione o e-mail da conta de serviço a query.py:
sed -i -e "s/YOUR_SERVICE_ACCOUNT/bigquery-qwiklab@$(gcloud config get-value project).iam.gserviceaccount.com/g" query.py
Execute o seguinte para descobrir se o comando sed alterou o e-mail da conta de serviço no arquivo:
cat query.py
Exemplo de resposta (a sua será diferente):
from google.auth import compute_engine
from google.cloud import bigquery
credentials = compute_engine.Credentials(
service_account_email='bigquery-qwiklab@qwiklabs-gcp-186de687ef87f911.iam.gserviceaccount.com')
query = '''
SELECT
year,
COUNT(1) as num_babies
FROM
publicdata.samples.natality
WHERE
year > 2000
GROUP BY
year
'''
client = bigquery.Client(
project='qwiklabs-gcp-186de687ef87f911',
credentials=credentials)
print(client.query(query).to_dataframe())
O aplicativo passará a usar as permissões associadas a essa conta de serviço.
Instale a biblioteca pyarrow usando este comando:
sudo pip3 install pyarrow==16.1.0
Instale a biblioteca db-dtypes usando este comando:
sudo pip3 install db-dtypes
Execute query.py usando este comando:
python3 query.py
Uma resposta semelhante a esta vai retornar.
Resposta:
year num_babies
0 2008 4255156
1 2002 4027376
2 2005 4145619
3 2006 4273225
4 2001 4031531
5 2007 4324008
6 2003 4096092
7 2004 4118907
Observação: talvez os valores das linhas não sejam associados aos anos da resposta acima. O importante é que os números de bebês por ano sejam os mesmos.
Você fez uma solicitação para um conjunto de dados público do BigQuery com uma conta de serviço bigquery-qwiklab.
Selecione Verificar meu progresso para conferir o objetivo.
Use bibliotecas de cliente para acessar o BigQuery em uma conta de serviço
Parabéns!
Neste laboratório, você aprendeu a:
Criar e gerenciar contas de serviço
Criar uma máquina virtual e associá-la a uma conta de serviço
Usar bibliotecas de cliente para acessar o BigQuery a partir de uma conta de serviço
Executar uma consulta em um conjunto de dados público do BigQuery usando uma instância do Compute Engine
Finalize o laboratório
Clique em Terminar o laboratório após a conclusão. O Google Cloud Ensina remove os recursos usados e limpa a conta por você.
Você vai poder avaliar sua experiência no laboratório. Basta selecionar o número de estrelas, digitar um comentário e clicar em Enviar.
O número de estrelas indica o seguinte:
1 estrela = muito insatisfeito
2 estrelas = insatisfeito
3 estrelas = neutro
4 estrelas = satisfeito
5 estrelas = muito satisfeito
Feche a caixa de diálogo se não quiser enviar feedback.
Para enviar seu feedback, fazer sugestões ou correções, use a guia Suporte.
Copyright 2020 Google LLC. Todos os direitos reservados. Google e o logotipo do Google são marcas registradas da Google LLC. Todos os outros nomes de produtos e empresas podem ser marcas registradas das respectivas empresas a que estão associados.
Os laboratórios criam um projeto e recursos do Google Cloud por um período fixo
Os laboratórios têm um limite de tempo e não têm o recurso de pausa. Se você encerrar o laboratório, vai precisar recomeçar do início.
No canto superior esquerdo da tela, clique em Começar o laboratório
Usar a navegação anônima
Copie o nome de usuário e a senha fornecidos para o laboratório
Clique em Abrir console no modo anônimo
Fazer login no console
Faça login usando suas credenciais do laboratório. Usar outras credenciais pode causar erros ou gerar cobranças.
Aceite os termos e pule a página de recursos de recuperação
Não clique em Terminar o laboratório a menos que você tenha concluído ou queira recomeçar, porque isso vai apagar seu trabalho e remover o projeto
Este conteúdo não está disponível no momento
Você vai receber uma notificação por e-mail quando ele estiver disponível
Ótimo!
Vamos entrar em contato por e-mail se ele ficar disponível
Um laboratório por vez
Confirme para encerrar todos os laboratórios atuais e iniciar este
Use a navegação anônima para executar o laboratório
Para executar este laboratório, use o modo de navegação anônima ou uma janela anônima do navegador. Isso evita conflitos entre sua conta pessoal e a conta de estudante, o que poderia causar cobranças extras na sua conta pessoal.
Como configurar, usar e auditar escopos e contas de serviços da VM
Duração:
Configuração: 0 minutos
·
Tempo de acesso: 90 minutos
·
Tempo para conclusão: 90 minutos