É possível controlar quem tem acesso aos seus buckets e objetos do Cloud Storage e o nível de acesso que essas pessoas têm.
Escolher entre acesso uniforme e refinado
Ao criar um bucket, decida se você quer aplicar permissões usando o acesso uniforme ou refinado.
Uniforme (recomendado): o acesso uniforme no nível do bucket permite que você use o gerenciamento de identidade e acesso (IAM, na sigla em inglês) sozinho para gerenciar permissões. O IAM aplica permissões a todos os objetos contidos no bucket ou grupos de objetos com prefixos de nome comuns. O IAM também permite usar recursos que não estão disponíveis ao trabalhar com ACLs, como pastas gerenciadas, Condições do IAM, compartilhamento restrito de domínios e federação de identidade de força de trabalho.
Refinado: a opção refinada permite que você use o IAM e as Listas de controle de acesso (ACLs, na sigla em inglês) em conjunto para gerenciar permissões. As ACLs são um sistema de controle de acesso legado do Cloud Storage projetado para interoperabilidade com o Amazon S3. As ACLs também permitem especificar o acesso por objeto.
Como o acesso refinado exige coordenação entre dois sistemas de controle de acesso diferentes, há uma chance maior de exposição não intencional de dados, e a auditoria de quem tem acesso aos recursos é mais complicada. Especialmente se você tiver objetos que contenham dados confidenciais, como informações de identificação pessoal, recomendamos armazenar esses dados em um bucket com acesso uniforme no nível do bucket ativado.
Como usar permissões do IAM com ACLs
O Cloud Storage oferece dois sistemas para conceder aos usuários permissão de acesso aos buckets e objetos: IAM e Listas de controle de acesso (ACLs). Eles atuam em paralelo. Para que um usuário acesse um recurso do Cloud Storage, basta receber a permissão de um dos sistemas. Por exemplo, se a política do IAM do bucket permitir que apenas alguns usuários leiam dados do objeto, mas um dos objetos no bucket tiver uma ACL que o torna legível publicamente, essa política específica objeto é exposto ao público.
Na maioria dos casos, o IAM é o método recomendado para controlar o acesso aos recursos. O IAM controla a permissão em todo o Google Cloud e permite que você conceda permissões nos níveis do bucket e do projeto. Use o IAM para todas as permissões que se aplicam a vários objetos em um bucket para reduzir os riscos da exposição não intencional. Para usar o IAM exclusivamente, ative o acesso uniforme no nível do bucket para proibir ACLs de todos os recursos do Cloud Storage.
As ACLs controlam a permissão apenas para recursos do Cloud Storage e têm opções de permissão limitadas, mas permitem que você conceda permissões por objetos individuais. É provável que você queira usar ACLs para os seguintes casos de uso:
- Personalize o acesso a objetos individuais em um bucket.
- Migrar dados do Amazon S3.
Opções adicionais de controle de acesso
Além do IAM e das ACLs, as ferramentas a seguir estão disponíveis para ajudar a controlar o acesso aos recursos:
URLs assinadas (Autenticação de string de consulta)
Use URLs assinados para conceder acesso de leitura ou gravação por tempo limitado a um objeto por meio de um URL gerado por você. Qualquer pessoa com quem você compartilhar o URL poderá acessar o objeto pelo tempo especificado, independentemente de ter ou não uma conta do usuário.
É possível usar URLs assinados, além de IAM e ACLs. Por exemplo, é possível usar o IAM para conceder acesso a um bucket apenas para algumas pessoas. Depois, crie um URL assinado que permita que outras pessoas acessem um recurso específico no bucket.
Saiba como criar URLs assinados:
- Crie URLs assinados com a Google Cloud CLI ou as bibliotecas de cliente.
- Crie URLs assinados com seu próprio programa.
Documentos de política assinados
Use documentos de política assinados para especificar o que pode ser enviado para um bucket. Documentos de política permitem maior controle sobre o tamanho, tipo de conteúdo e outras características de upload do que URLs assinadas. Eles também podem ser usados por proprietários de sites para permitir que os visitantes façam o upload de arquivos no Cloud Storage.
É possível usar documentos de política assinados além do IAM e das ACLs. Por exemplo, é possível usar o IAM para permitir que as pessoas na sua organização façam upload de qualquer objeto e, em seguida, criar um documento de política assinado que permita aos visitantes do site fazer upload apenas de objetos que atendam a critérios específicos.
Regras de segurança do Firebase
Use as regras de segurança do Firebase para fornecer controle de acesso refinado e baseado em atributos a aplicativos para dispositivos móveis e Web usando os SDKs do Firebase para Cloud Storage. Por exemplo, é possível especificar quem pode fazer o upload ou download de objetos, o tamanho de um objeto ou quando pode ser feito o download de um objeto.
Prevenção de acesso público
Use a prevenção de acesso público para restringir o acesso público a buckets e
objetos. Quando você ativa a prevenção de acesso público, os usuários que têm acesso
por allUsers e allAuthenticatedUsers ficam sem permissão para acessar
dados.
Limites de acesso a credenciais
Use Limites de acesso a credenciais para reduzir as permissões disponíveis para um token de acesso do OAuth 2.0. Primeiro, defina um Limite de acesso a credenciais que especifique quais buckets o token pode acessar, bem como um limite superior nas permissões disponíveis nesse bucket. Em seguida, você pode criar um token de acesso do OAuth 2.0 e trocá-lo por um novo token de acesso que respeite o limite de acesso a credenciais
Filtragem de IP do bucket
Use a filtragem de IP do bucket para restringir o acesso com base no endereço IP de origem da solicitação. A filtragem de IP do bucket adiciona uma camada de segurança ao impedir que redes não autorizadas acessem o bucket e os dados dele. É possível configurar uma lista de intervalos de endereços IP permitidos, incluindo endereços IP públicos, intervalos de endereços IP públicos e endereços IP na sua nuvem privada virtual. Todas as solicitações originadas de um endereço IP que não está na sua lista são bloqueadas. Por isso, somente usuários autorizados podem acessar seu bucket.
Práticas recomendadas para IAM e ACLs
As políticas e as ACLs do IAM exigem gerenciamento ativo para serem eficazes. Antes de criar um bucket, objeto ou pasta gerenciada acessível a outros usuários, saiba com quem você quer compartilhar o recurso e quais papéis serão atribuídos a essas pessoas. Com o tempo, as mudanças no gerenciamento de projetos, nos padrões de uso e na propriedade organizacional podem exigir que você modifique as configurações de IAM ou ACL em buckets e projetos, especialmente se gerenciar o Cloud Storage em uma grande organização ou para um grande grupo de usuários. Ao avaliar e planejar as configurações de controle de acesso, lembre-se destas práticas recomendadas:
Use o princípio de privilégio mínimo ao conceder acesso a buckets, objetos ou pastas gerenciadas.
O princípio de privilégio mínimo é uma diretriz de segurança para conceder acesso a seus recursos. Com base nesse princípio, conceda o privilégio mínimo necessário para que um usuário execute a tarefa atribuída. Por exemplo, se você quiser compartilhar arquivos com alguém, conceda a essa pessoa o papel do IAM de Leitor de objetos do Storage ou a permissão
READERdas ACLs, e não o papel do IAM de Administrador do Storage ou a permissãoOWNERdas ACLs.Evite conceder papéis do IAM com a permissão
setIamPolicyou conceder a permissãoOWNERda ACL a pessoas que você não conhece.Quando você dá a permissão
setIamPolicydo IAM ouOWNERdas ACLs, permite que um usuário altere permissões e assuma o controle dos dados. Use papéis com essas permissões somente quando quiser delegar o controle administrativo sobre objetos, buckets e pastas gerenciadas.Tenha cuidado em como você concede permissões a usuários anônimos.
Os tipos de Principais
allUserseallAuthenticatedUserssó devem ser usados se for admissível que qualquer pessoa na Internet possa ler e analisar seus dados. Embora esses escopos sejam úteis para alguns aplicativos e cenários, em geral, não é uma boa ideia conceder a todos os usuários determinadas permissões, comosetIamPolicy,update,createoudeletedo IAM ou a permissãoOWNERdas ACLs.Delegue o controle administrativo de seus buckets.
Verifique se os recursos ainda podem ser gerenciados por outros membros da equipe caso um indivíduo com acesso administrativo saia do grupo.
Para evitar que os recursos se tornem inacessíveis, você tem as seguintes opções:
Atribua o papel do IAM Administrador do Storage do projeto a um grupo em vez de a um indivíduo.
Atribua o papel do IAM Administrador do Storage do projeto a pelo menos duas pessoas.
Conceda a permissão
OWNERdas ACLs do bucket a pelo menos dois indivíduos.
Esteja ciente do comportamento interoperável do Cloud Storage.
A API XML permite acesso interoperável com outros serviços de armazenamento, como o Amazon S3. Nesse caso, o identificador de assinaturas determina a sintaxe da ACL. Por exemplo, se a ferramenta ou biblioteca que você estiver usando solicitar que o Cloud Storage recupere ACLs e essa solicitação usar o identificador de assinatura de outro provedor de armazenamento, o Cloud Storage retornará um documento XML que usa a sintaxe da ACL do provedor de armazenamento correspondente. Se a ferramenta ou biblioteca que você estiver usando solicitar que o Cloud Storage aplique ACLs e a solicitação usar o identificador de assinatura de outro provedor de armazenamento, o Cloud Storage aguardará o recebimento de um documento XML que usa a sintaxe da ACL do provedor de armazenamento correspondente.
Para mais informações sobre como usar a API XML para interoperabilidade com o Amazon S3, consulte Migração simples do Amazon S3 para o Cloud Storage.
A seguir
- Saiba como usar as permissões do IAM.
- Consulte as permissões e os papéis do IAM específicos do Cloud Storage.
- Veja exemplos de situações de compartilhamento e colaboração que envolvem a definição de ACLs de bloco e de objeto.
- Saiba como tornar seus dados acessíveis a todos na Internet pública.
- Saiba mais sobre quando usar um URL assinado.