Tipos de credenciais compatíveis com vários casos de uso
Visão geral
Atualmente, o gsutil é compatível com vários tipos de credenciais/autenticação, além de a capacidade de acessar dados públicos de forma anônima. Cada um desses tipos de credenciais é discutido em mais detalhes abaixo, além de informações sobre como configurar e usar credenciais por meio do SDK do Cloud.
Como configurar/usar credenciais via Cloud Sdk Distribution do Gsutil
Quando a gsutil é instalada/usada por meio do SDK do Cloud ("gcloud"), as credenciais são armazenadas pelo SDK do Cloud em um arquivo não editável pelo usuário localizado em ~/.config/gcloud (qualquer manipulação de credenciais deve ser feita por meio do gcloud auth ). Se você precisar configurar várias credenciais (por exemplo, uma para uma conta de usuário individual e uma segunda para uma conta de serviço), o comando gcloud auth gerenciará as credenciais para você, e você também alternará entre credenciais usando o comando gcloud auth. Veja mais detalhes em https://cloud.google.com/sdk/gcloud/reference/auth.
Após a configuração das credenciais via gcloud auth, essas credenciais serão usadas mesmo que o usuário tenha arquivos de configuração boto (que estão localizados em ~/.boto, a menos que um caminho diferente seja especificado em BOTO_CONFIG{101 }variável do ambiente). No entanto, o gsutil procurará as credenciais no arquivo de configuração boto se for necessário usar um tipo de credencial que não seja do Cloud Storage e não estiver armazenado no armazenamento de credenciais da gcloud (por exemplo, uma credencial HMAC para uma conta S3).
Tipos de credenciais compatíveis
A gsutil é compatível com vários tipos de credenciais (o subconjunto específico depende da distribuição da gsutil que você está usando. Consulte a discussão acima.
- Conta de usuário do OAuth2:
Esse é o tipo de credenciais preferencial para autenticar solicitações em nome de um usuário específico (provavelmente o uso mais comum da gsutil). Esse é o tipo de credencial padrão que será criado quando você executar "gsutil config" (ou "gcloud init" para instalações do SDK do Cloud). Para mais detalhes sobre a autenticação do OAuth2, consulte: https://developers.google.com/accounts/docs/OAuth2#scenarios
- HMAC:
Esse tipo de credencial pode ser usado por programas implementados com a autenticação HMAC, que é um mecanismo de autenticação compatível com outros provedores de serviços de armazenamento em nuvem. Esse tipo de credencial também pode ser usado para uso interativo ao mover dados de/para provedores de serviços compatíveis com credenciais HMAC. Esse é o tipo de credencial que será criada quando você executar "gsutil config -a".
É possível configurar credenciais do HMAC para o Cloud Storage e outro provedor de serviços. ou configurar as credenciais da conta de usuário do OAuth2 para credenciais do Cloud Storage e HMAC para outro provedor de serviços. Para fazer isso, depois de executar o comando "gsutil config" (ou "gcloud init" para instalações do SDK do Cloud), edite o arquivo de configuração ~/.boto gerado e procure comentários sobre onde outras credenciais podem ser adicionadas.
Para mais detalhes sobre a autenticação HMAC, consulte https://developers.google.com/storage/docs/reference/v1/getting-startedv1#key.
- Conta de serviço do OAuth2:
Esse é o tipo preferencial de credencial a ser usado ao autenticar um serviço ou aplicativo (e não um usuário). Por exemplo, se você executar a gsutil a partir de um cron job noturno para fazer upload/download de dados, o uso de uma conta de serviço não dependerá das credenciais de um funcionário individual na sua empresa. Esse é o tipo de credencial que será configurado quando você executar "gsutil config -e". Para configurar as credenciais da conta de serviço quando instaladas pelo Cloud SDK, execute "gcloud auth activate-service-account".
É importante observar que uma conta de serviço é considerada um editor por padrão para fins de acesso à API, e não a um Proprietário. Em particular, o fato de que os editores têm acesso de PROPRIET inRIO no objeto padrão e nas ACLs de bucket, mas as opções de ACL prontas removem o acesso de PROPRIET fromRIO dos editores, podendo gerar resultados inesperados. A solução para esse problema é usar "gsutil acl ch" em vez de "gsutil acl set {canances-ACL}" para alterar permissões em um intervalo.
Para configurar uma conta de serviço para uso com "gsutil config -e" ou "gcloud auth activate-service-account", consulte https://cloud.google.com/storage/docs/authentication#generation-a-private-key
Para mais detalhes sobre as contas de serviço do OAuth2, consulte https://developers.google.com/accounts/docs/OAuth2ServiceAccount
Para mais informações sobre papéis de conta, consulte https://developers.google.com/console/help/#DifferentRoles.
- Conta de serviço interna do Compute Engine:
Esse é o tipo de conta de serviço usado para contas hospedadas pelo App Engine ou pelo Compute Engine. Essas credenciais são criadas automaticamente para você no Compute Engine ao executar o comando
gcloud compute instances create
. As credenciais podem ser controladas com a flag--scopes
.Para mais detalhes sobre como usar as credenciais da conta de serviço para autenticar cargas de trabalho no Compute Engine, consulte https://cloud.google.com/compute/docs/access/create-enable-service-accounts-for-instances.
Para mais detalhes sobre contas de serviço do App Engine, consulte https://developers.google.com/appengine/docs/python/appidentity/overview
- Falsificação da conta de serviço:
Representar uma conta de serviço é útil em cenários em que você precisa conceder acesso de curto prazo a recursos específicos. Por exemplo, se você tiver um bucket de dados confidenciais que normalmente é somente leitura e quer conceder acesso de gravação temporariamente por meio de uma conta de serviço confiável.
Para especificar qual conta de serviço usar para personificação, execute "gsutil -i", "gsutil config" e edite o arquivo de configuração boto ou "gcloud config set auth/impersonate_service_account [service_account_email_address]".
Para representar a identidade, suas credenciais originais precisam receber papéis/iam.serviceAccountTokenCreator na conta de serviço de destino. Para mais informações, acesse https://cloud.google.com/iam/docs/creating-short-Lifetime-service-account-credentials
- Credenciais de conta externa (Federação de identidade da carga de trabalho):
Usando a federação de identidade da carga de trabalho, é possível acessar os recursos do Google Cloud na Amazon Web Services (AWS), no Microsoft Azure ou em qualquer provedor de identidade compatível com o OpenID Connect (OIDC) ou SAML 2.0.
Para mais informações, consulte https://cloud.google.com/iam/docs/using-workload-identity-federation (em inglês).