arrow_back

Cloud Storage

Get access to 700+ labs and courses

Cloud Storage

Laboratório 1 hora 30 minutos universal_currency_alt 5 créditos show_chart Introdutório
info Este laboratório pode incorporar ferramentas de IA para ajudar no seu aprendizado.
Get access to 700+ labs and courses

Visão geral

O Cloud Storage é um recurso fundamental do Google Cloud com várias funcionalidades avançadas. Neste laboratório, você vai usar algumas funcionalidades do Cloud Storage que podem ser úteis para seus projetos. Você também conhecerá melhor o Cloud Storage pelo console e com a ferramenta gsutil.

Objetivos

O que você fará neste laboratório:

  • Criar e usar buckets

  • Definir listas de controle para restringir o acesso

  • Usar suas próprias chaves de criptografia

  • Implementar controles de versão

  • Usar a sincronização de diretórios

  • Compartilhar um bucket entre projetos usando o IAM

Como configurar o Qwiklabs

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.

  1. Faça login no Qwiklabs em uma janela anônima.

  2. 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.

  3. Quando tudo estiver pronto, clique em Começar o laboratório.

  4. Anote as credenciais (Nome de usuário e Senha). É com elas que você vai fazer login no Console do Google Cloud.

  5. Clique em Abrir Console do Google.

  6. 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.

  7. Aceite os termos e pule a página de recursos de recuperação.

Tarefa 1: preparação

Crie um bucket do Cloud Storage

  1. No Menu de navegação (), clique em Cloud Storage > Navegador.
  1. Selecione Criar bucket.
  2. Especifique os seguintes valores e não mude as configurações restantes:
Propriedade Valor (digite o valor ou selecione a opção conforme especificado)
Nome Insira um nome exclusivo globalmente
Tipo de local Multirregional
Aplicar a prevenção do acesso público neste bucket não marcada
Controle de acesso Fine-grained (object-level permission in addition to your bucket-level permissions)
  1. Anote o nome do bucket. Ele será usado posteriormente neste laboratório e indicado como [BUCKET_NAME_1].
  2. Clique em Criar

Clique em Verificar meu progresso para ver o objetivo. Crie um bucket do Cloud Storage

Faça o download de um arquivo de amostra usando CURL e depois faça duas cópias do arquivo

  1. No Console do Cloud, clique em Ativar o Cloud Shell ().

  2. Se for solicitado, clique em Continuar.

  3. Armazene [BUCKET_NAME_1] em uma variável de ambiente:

export BUCKET_NAME_1=<enter bucket name 1 here>
  1. Verifique usando o comando "echo":

echo $BUCKET_NAME_1
  1. Execute o comando a seguir para fazer o download de um arquivo de amostra (nesse caso, um arquivo HTML público da documentação do Hadoop):

curl \ https://hadoop.apache.org/docs/current/\ hadoop-project-dist/hadoop-common/\ ClusterSetup.html > setup.html
  1. Para fazer as cópias do arquivo, execute os seguintes comandos:

cp setup.html setup2.html cp setup.html setup3.html

Tarefa 2: listas de controle de acesso (ACLs)

Copie o arquivo para o bucket e configure a lista de controle de acesso

  1. Copie o primeiro arquivo para o bucket executando o seguinte comando:

gsutil cp setup.html gs://$BUCKET_NAME_1/
  1. Para conseguir a lista de acesso padrão atribuída ao setup.html, execute o seguinte comando:

gsutil acl get gs://$BUCKET_NAME_1/setup.html > acl.txt cat acl.txt
  1. Para definir a lista de acesso como privada e verificar os resultados, execute os seguintes comandos:

gsutil acl set private gs://$BUCKET_NAME_1/setup.html gsutil acl get gs://$BUCKET_NAME_1/setup.html > acl2.txt cat acl2.txt
  1. Para atualizar a lista de acesso e tornar o arquivo publicamente legível, execute os seguintes comandos:

gsutil acl ch -u AllUsers:R gs://$BUCKET_NAME_1/setup.html gsutil acl get gs://$BUCKET_NAME_1/setup.html > acl3.txt cat acl3.txt

Clique em Verificar meu progresso para ver o objetivo. Permita que qualquer usuário leia o arquivo.

Analise o arquivo no Console do Cloud

  1. No Console do Cloud, acesse o Menu de navegação () e clique em Cloud Storage > Navegador.

  2. Selecione [BUCKET_NAME_1].

  3. Na seção Acesso público do arquivo setup.html, verifique se há um Link público disponível.

Exclua o arquivo local e copie o do Cloud Storage

  1. Volte para o Cloud Shell. Se for necessário, clique em Ativar o Cloud Shell ().

  2. Execute este comando para excluir o arquivo de configuração:

rm setup.html
  1. Para verificar se o arquivo foi excluído, execute o seguinte comando:

ls
  1. Para copiar o arquivo do bucket novamente, execute o seguinte comando:

gsutil cp gs://$BUCKET_NAME_1/setup.html setup.html

Tarefa 3: chaves de criptografia fornecidas pelo cliente (CSEK)

Gere uma chave CSEK

Para a próxima etapa, você precisa de uma chave AES-256 codificada em base64.

  1. Execute este comando para criar uma chave:

python3 -c 'import base64; import os; print(base64.encodebytes(os.urandom(32)))'

Resultado (não copie o exemplo abaixo):

b'tmxElCaabWvJqR7uXEWQF39DhWTcDvChzuCmpHe6sb0=\n'
  1. Copie o valor da chave gerada excluindo b' e \n' da resposta ao comando. Key should be in form of tmxElCaabWvJqR7uXEWQF39DhWTcDvChzuCmpHe6sb0=.

Modifique o arquivo boto

Os controles de criptografia estão em um arquivo de configuração gsutil chamado .boto.

  1. Execute estes comandos para ver e abrir o arquivo boto:

ls -al nano .boto
  1. Use "#encryption_key=" para localizar a linha.
Na parte inferior do editor nano, você pode usar atalhos para navegar rapidamente pelos arquivos. Use o atalho Onde está para localizar a linha com #encryption_key=.
  1. Retire o caractere # para remover a marca de comentário da linha e cole a chave que você gerou anteriormente no final.

Exemplo (não copie):

Antes: # encryption_key= Depois: encryption_key=tmxElCaabWvJqR7uXEWQF39DhWTcDvChzuCmpHe6sb0=
  1. Pressione Ctrl+O, ENTER para salvar o arquivo boto e depois pressione Ctrl+X para sair do nano.

Faça upload dos arquivos de configuração restantes (criptografados) e verifique o progresso no Console do Cloud

  1. Para fazer upload dos arquivos setup.html restantes, execute os seguintes comandos:

gsutil cp setup2.html gs://$BUCKET_NAME_1/ gsutil cp setup3.html gs://$BUCKET_NAME_1/
  1. Volte ao Console do Cloud.
  2. Clique em [BUCKET_NAME_1]. Os arquivos setup2.html e setup3.html mostram que eles são criptografados pelo cliente.

Clique em Verificar meu progresso para ver o objetivo. Chaves de criptografia fornecidas pelo cliente (CSEK)

Exclua os arquivos locais, copie os novos arquivos e verifique a criptografia

  1. Para excluir os arquivos locais, execute este comando no Cloud Shell:

rm setup*
  1. Para copiar os arquivos do bucket novamente, execute o seguinte comando:

gsutil cp gs://$BUCKET_NAME_1/setup* ./
  1. Para usar o comando cat nos arquivos criptografados e ver se eles retornaram, execute os seguintes comandos:

cat setup.html cat setup2.html cat setup3.html

Tarefa 4: rotacione as chaves CSEK

Mude a chave de criptografia CSEK atual para a chave de descriptografia

  1. Execute este comando para abrir o arquivo .boto:

nano .boto
  1. Adicione o caractere # no começo da linha encryption_key atual para convertê-la em comentário.
Na parte inferior do editor nano, você pode usar atalhos para navegar rapidamente pelos arquivos. Use o atalho Onde está para localizar a linha #encryption_key=.
  1. Remova a marca de comentário # de decryption_key1 e copie a chave atual da linha encryption_key para a linha decryption_key1.

Resultado (não copie o exemplo abaixo):

Antes: encryption_key=2dFWQGnKhjOcz4h0CudPdVHLG2g+OoxP8FQOIKKTzsg= # decryption_key1= Depois: # encryption_key=2dFWQGnKhjOcz4h0CudPdVHLG2g+OoxP8FQOIKKTzsg= decryption_key1=2dFWQGnKhjOcz4h0CudPdVHLG2g+OoxP8FQOIKKTzsg=
  1. Pressione Ctrl+O, ENTER para salvar o arquivo boto e depois pressione Ctrl+X para sair do nano.

Gere outra chave CSEK e a adicione ao arquivo boto

  1. Execute este comando para gerar uma chave nova:

python3 -c 'import base64; import os; print(base64.encodebytes(os.urandom(32)))'
  1. Copie o valor da chave gerada excluindo b' e \n' da resposta ao comando. Key should be in form of tmxElCaabWvJqR7uXEWQF39DhWTcDvChzuCmpHe6sb0=.

  2. Para abrir o arquivo boto, execute o seguinte comando:

nano .boto
  1. Remova a marca de comentário da criptografia e cole o novo valor da chave em encryption_key=.

Resultado (não copie o exemplo abaixo):

Antes: # encryption_key=2dFWQGnKhjOcz4h0CudPdVHLG2g+OoxP8FQOIKKTzsg= Depois: encryption_key=HbFK4I8CaStcvKKIx6aNpdTse0kTsfZNUjFpM+YUEjY=
  1. Pressione Ctrl+O, ENTER para salvar o arquivo boto e depois pressione Ctrl+X para sair do nano.

Reescreva a chave do arquivo 1 e marque como um comentário a antiga chave de descriptografia

Quando um arquivo é criptografado, reescrever o arquivo descriptografa-o usando decryption_key1 que você definiu anteriormente e criptografa o arquivo com a nova encryption_key.

Você está reescrevendo a chave do setup2.html, mas não do setup3.html, para poder ver o que acontece se não alternar as chaves corretamente.

  1. Execute este comando:

gsutil rewrite -k gs://$BUCKET_NAME_1/setup2.html
  1. Para abrir o arquivo boto, execute o seguinte comando:

nano .boto
  1. Adicione novamente o caractere # à linha decryption_key atual para convertê-la em comentário.

Resultado (não copie o exemplo abaixo):

Antes: decryption_key1=2dFWQGnKhjOcz4h0CudPdVHLG2g+OoxP8FQOIKKTzsg= Depois: # decryption_key1=2dFWQGnKhjOcz4h0CudPdVHLG2g+OoxP8FQOIKKTzsg=
  1. Pressione Ctrl+O, ENTER para salvar o arquivo boto e depois pressione Ctrl+X para sair do nano.

Faça o download de setup2 e setup3

  1. Para fazer o download de setup2.html, execute o seguinte comando:

gsutil cp gs://$BUCKET_NAME_1/setup2.html recover2.html
  1. Para fazer o download de setup3.html, execute o seguinte comando:

gsutil cp gs://$BUCKET_NAME_1/setup3.html recover3.html

Tarefa 5: ative o gerenciamento do ciclo de vida

Veja a política atual do ciclo de vida do bucket

  1. Execute este comando para ver a política de ciclo de vida atual:

gsutil lifecycle get gs://$BUCKET_NAME_1

Crie um arquivo JSON de política de ciclo de vida

  1. Para criar um arquivo chamado life.json, execute o seguinte comando:

nano life.json
  1. Cole o seguinte valor no arquivo life.json:

{ "rule": [ { "action": {"type": "Delete"}, "condition": {"age": 31} } ] }
  1. Pressione Ctrl+O, ENTER para salvar o arquivo e depois pressione Ctrl+X para sair do nano.

Defina a política e verifique

  1. Para definir a política, execute o seguinte comando:

gsutil lifecycle set life.json gs://$BUCKET_NAME_1
  1. Para verificar a política, execute o seguinte comando:

gsutil lifecycle get gs://$BUCKET_NAME_1

Clique em Verificar meu progresso para ver o objetivo. Ative o gerenciamento de ciclo de vida

Tarefa 6: ative o controle de versões

Veja o status da versão do bucket e ative o controle de versões

  1. Execute este comando para ver o status atual do controle de versões do bucket:

gsutil versioning get gs://$BUCKET_NAME_1
  1. Para ativar o controle de versões, execute o seguinte comando:

gsutil versioning set on gs://$BUCKET_NAME_1
  1. Para verificar se o controle de versões foi ativado, execute o seguinte comando:

gsutil versioning get gs://$BUCKET_NAME_1

Clique em Verificar meu progresso para ver o objetivo. Ative o controle de versões

Crie várias versões do arquivo de amostra no bucket

  1. Verifique o tamanho do arquivo de amostra:

ls -al setup.html
  1. Abra o arquivo setup.html:

nano setup.html
  1. Exclua 5 linhas do setup.html para alterar o tamanho do arquivo.

  2. Pressione Ctrl+O, ENTER para salvar o arquivo e depois pressione Ctrl+X para sair do nano.

  3. Copie o arquivo para o bucket com a opção -v do controle de versões:

gsutil cp -v setup.html gs://$BUCKET_NAME_1
  1. Abra o arquivo setup.html:

nano setup.html
  1. Exclua outras cinco linhas do setup.html para alterar o tamanho do arquivo.

  2. Pressione Ctrl+O, ENTER para salvar o arquivo e depois pressione Ctrl+X para sair do nano.

  3. Copie o arquivo para o bucket com a opção -v do controle de versões:

gsutil cp -v setup.html gs://$BUCKET_NAME_1

Liste todas as versões do arquivo

  1. Para listar todas as versões do arquivo, execute o seguinte comando:

gsutil ls -a gs://$BUCKET_NAME_1/setup.html
  1. Destaque e copie o nome da versão mais antiga do arquivo (a primeira listada), indicada como [VERSION_NAME] na próxima etapa.
Copie o caminho completo do arquivo, que começa com gs://
  1. Armazene o valor da versão na variável de ambiente [VERSION_NAME].

export VERSION_NAME=<Enter VERSION name here>
  1. Verifique usando o comando "echo":

echo $VERSION_NAME

Resultado (não copie o exemplo abaixo):

gs://BUCKET_NAME_1/setup.html#1584457872853517

Faça o download da versão original mais antiga do arquivo e verifique a recuperação

  1. Faça o download da versão original do arquivo:

gsutil cp $VERSION_NAME recovered.txt
  1. Para verificar a recuperação, execute os seguintes comandos:

ls -al setup.html ls -al recovered.txt

Tarefa 7: sincronize um diretório com um bucket

Crie um diretório aninhado e o sincronize com um bucket

Crie uma estrutura de diretórios aninhada para poder examinar o que acontece quando ela é copiada recursivamente para um intervalo.

  1. Execute os comandos a seguir:

mkdir firstlevel mkdir ./firstlevel/secondlevel cp setup.html firstlevel cp setup.html firstlevel/secondlevel
  1. Para sincronizar o diretório de primeiro nível da VM com o bucket, execute este comando:

gsutil rsync -r ./firstlevel gs://$BUCKET_NAME_1/firstlevel

Veja os resultados

  1. No Console do Cloud, acesse o Menu de navegação () e clique em Cloud Storage > Navegador.

  2. Selecione [BUCKET_NAME_1]. Observe as subpastas no bucket.

  3. Clique em /firstlevel e depois em /secondlevel.

  4. Compare o que você vê no Console do Cloud com os resultados deste comando:

gsutil ls -r gs://$BUCKET_NAME_1/firstlevel
  1. Saia do Cloud Shell:

exit

Tarefa 8: compartilhamento entre projetos

Mude para o segundo projeto

  1. Abra uma nova guia anônima.

  2. Acesse console.cloud.google.com.

  3. Clique na lista suspensa do seletor de projetos na barra de título.

  4. Clique em Todos e depois no segundo projeto fornecido a você na caixa de diálogo "Detalhes da conexão" do Qwiklabs. O ID do projeto é um nome exclusivo em todos os projetos do Google Cloud. O segundo código do projeto será indicado como [PROJECT_ID_2].

Prepare o bucket

  1. No Console do Cloud, acesse o Menu de navegação () e clique em Cloud Storage > Navegador.
  2. Selecione Criar bucket.
  3. Especifique os seguintes valores e não mude as configurações restantes:
Propriedade Valor (digite o valor ou selecione a opção conforme especificado)
Nome Insira um nome exclusivo globalmente
Tipo de local Multirregional
Controle de acesso Fine-grained (object-level permission in addition to your bucket-level permissions)
  1. Anote o nome do bucket Ele será indicado como [BUCKET_NAME_2] nas próximas etapas.

  2. Clique em Criar

Faça upload de um arquivo de texto para o bucket

  1. Envie um arquivo para [BUCKET_NAME_2]. Qualquer arquivo de exemplo pequeno ou arquivo de texto serve.

  2. Anote o nome do arquivo (indicado como [FILE_NAME]); você vai usá-lo mais tarde.

Crie uma conta de serviço do IAM

  1. No Console do Cloud, acesse o Menu de navegação ( ) e clique em IAM e administrador > Contas de serviço.
  2. Clique em Criar conta de serviço.
  3. Na página "Detalhes da conta de serviço", especifique o Nome da conta de serviço como cross-project-storage.
  4. Clique em Criar e continuar.
  5. Na página "Permissões da conta de serviço", especifique o papel como Cloud Storage > Leitor de objetos do Storage.
  6. Clique em Continuar e depois em Concluído.
  7. Clique na conta de serviço cross-project-storage para adicionar a chave JSON.
  8. Na guia Chaves, clique no menu suspenso Adicionar chave e selecione Criar nova chave.
  9. Selecione JSON como o tipo de chave e clique em Criar. O arquivo de chave JSON será transferido por download. Você precisará encontrar esse arquivo de chave e enviá-lo para a VM em uma etapa posterior.
  10. Clique em Fechar.
  11. Altere o nome do arquivo de chave JSON no seu disco rígido para credentials.json.
  12. No painel superior, volte para [PROJECT_ID_1].

Clique em Verificar meu progresso para ver o objetivo. Crie os recursos no segundo projeto

Crie uma VM

  1. No Menu de navegação (), clique em Compute Engine > Instâncias de VM.
  2. Selecione Criar instância.
  3. Especifique os seguintes valores e não altere as outras configurações:
Propriedade Valor (digite o valor ou selecione a opção conforme especificado)
Nome crossproject
Região europe-west1
Zona europe-west1-d
Série N1
Tipo de máquina n1-standard-1
Disco de inicialização Debian GNU/Linux 11 (bullseye)
  1. Clique em Criar.

Conecte-se por SSH à VM

  1. Em crossproject, clique em SSH para iniciar um terminal e conectar.
  1. Armazene [BUCKET_NAME_2] em uma variável de ambiente:

export BUCKET_NAME_2=<enter bucket name 2 here>
  1. Verifique usando o comando "echo":

echo $BUCKET_NAME_2
  1. Armazene [FILE_NAME] em uma variável de ambiente:

export FILE_NAME=<enter FILE_NAME here>
  1. Verifique usando o comando "echo":

echo $FILE_NAME
  1. Liste os arquivos em [PROJECT_ID_2]:

gsutil ls gs://$BUCKET_NAME_2/

Resultado (não copie o exemplo abaixo):

AccessDeniedException: 403 404513585876-compute@developer.gserviceaccount.com does not have storage.objects.list access to the Google Cloud Storage bucket.

Autorize a VM

  1. Para fazer upload de credentials.json pelo terminal de SSH da VM, clique no ícone de engrenagem () no canto superior direito. Depois clique em Fazer upload do arquivo.

  2. Selecione credentials.json e faça o upload.

  3. Clique em Fechar na janela "Transferência de arquivo".

  4. Verifique se o arquivo JSON foi enviado para a VM:

ls

Resultado (não copie o exemplo abaixo):

credentials.json
  1. Digite o seguinte comando no terminal para autorizar a VM a usar a API Google Cloud:

gcloud auth activate-service-account --key-file credentials.json

Verifique o acesso

  1. Repita este comando:

gsutil ls gs://$BUCKET_NAME_2/
  1. Repita este comando:

gsutil cat gs://$BUCKET_NAME_2/$FILE_NAME
  1. Tente copiar o arquivo de credenciais para o bucket:

gsutil cp credentials.json gs://$BUCKET_NAME_2/

Resultado (não copie o exemplo abaixo):

Copying file://credentials.json [Content-Type=application/json]... AccessDeniedException: 403 cross-project-storage@qwiklabs-gcp-02-c638e3daa975.iam.gserviceaccount.com does not have storage.objects.create access to the Google Cloud Storage object.

Modifique o papel

  1. No painel superior, volte para [PROJECT_ID_2].
  2. No Console do Cloud, acesse o Menu de navegação ( ) e clique em IAM e administrador > IAM.
  3. Clique no ícone de lápis referente à conta de serviço cross-project-storage. Talvez seja necessário rolar a tela para a direita até ver o ícone.
  4. Clique no papel Leitor de objetos do Storage e depois em Cloud Storage > Administrador de objeto do Storage.
  5. Clique em Salvar. Se você não clicar em Salvar, a alteração não será feita.

Clique em Verificar meu progresso para ver o objetivo. Crie e confirme os recursos no primeiro projeto

Confirme se o acesso foi alterado

  1. Retorne ao terminal SSH de crossproject.

  2. Copie o arquivo de credenciais para o bucket:

gsutil cp credentials.json gs://$BUCKET_NAME_2/

Resultado (não copie o exemplo abaixo):

Copying file://credentials.json [Content-Type=application/json]... - [1 files][ 2.3 KiB/ 2.3 KiB] Operation completed over 1 objects/2.3 KiB.

Tarefa 9: revisão

Neste laboratório, você aprendeu a criar e trabalhar com buckets e objetos e aprendeu sobre os seguintes recursos do Cloud Storage:

  • Chave de criptografia fornecida pelo cliente (CSEK, na silga em inglês)
  • Usar suas próprias chaves de criptografia
  • Alternar chaves
  • Lista de controle de acesso (ACL, na silga em inglês)
  • Definir uma ACL como particular e torná-la pública
  • Gerenciamento do ciclo de vida
  • Definir uma política para excluir objetos após 31 dias
  • Controle de versões
  • Criar uma versão e restaurar uma versão anterior
  • Sincronização de diretórios
  • Sincronizar repetidamente um diretório de VM com um bucket
  • Compartilhamento de recursos entre projetos usando o IAM
  • Usar o IAM para permitir o acesso a recursos entre projetos

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.

Before you begin

  1. Labs create a Google Cloud project and resources for a fixed time
  2. Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
  3. On the top left of your screen, click Start lab to begin

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

One lab at a time

Confirm to end all existing labs and start this one

Use private browsing to run the lab

Use an Incognito or private browser window to run this lab. This prevents any conflicts between your personal account and the Student account, which may cause extra charges incurred to your personal account.