A nossa documentação é frequentemente escrita para ajudar a pôr um produto ou uma funcionalidade em funcionamento, mas alguma documentação pode não funcionar corretamente se a sua organização aplicar restrições de segurança. Por exemplo, a sua empresa pode implementar algumas das restrições de segurança do Cloud Foundation Toolkit, dos Google Cloud projetos de segurança ou criar as suas próprias restrições.
Este artigo ajuda a resolver problemas de erros de implementação de aplicações que pode ver numa organização que usa restrições de segurança.
Resolva problemas de restrições de segurança
A sua equipa de segurança ou operações de TI pode ativar restrições de segurança através da política da organização. Estas restrições limitam a forma como os recursos da sua organização podem ser usados.
Quando faz um pedido API que devolve um erro, a resposta API deve indicar se o erro se deve a violações de políticas. A resposta deve explicar a restrição que é violada. Os seguintes passos de resolução de problemas ajudam a determinar e compreender se ocorre uma violação:
Reveja a mensagem de erro da resposta da API. Consegue identificar que restrição de segurança a sua implementação viola?
O exemplo seguinte indica que a restrição
sql.restrictPublicIp
é o problema:Organization Policy check failure The external IP of this instance violates the constraints/sql.restrictPublicIp enforced
Se compreender a violação de política, atualize a configuração da implementação de recursos para funcionar dentro das restrições.
No exemplo anterior de restrição de endereços IP públicos externos, configure a sua instância do Cloud SQL para usar um endereço IP privado interno.
Se não tiver a certeza do motivo pelo qual a restrição é aplicada ou do que fazer, trabalhe com a sua equipa de segurança para compreender onde a política é aplicada na hierarquia da sua organização e as soluções alternativas sugeridas.
Verifique se existem modelos de implementação, como modelos do Terraform, partilhados na sua organização. Estes modelos devem detalhar como a Google Cloud infraestrutura foi configurada e limitar a implementação da sua aplicação.
Problemas comuns de restrições de segurança
Quando implementa as suas aplicações no Google Cloud, pode deparar-se com um erro como o do exemplo seguinte:
ERROR: (gcloud.alpha.sql.instances.create) HTTPError 400: Invalid request: Organization Policy check failure: the external IP of this instance violates the constraints/sql.restrictPublicIp enforced at the 123456789 project.
Neste exemplo, não pode configurar uma instância do Cloud SQL para usar um endereço IP público externo. Está a ser aplicada uma restrição de segurança a partir de uma política aplicada ao seu ambiente.
As seguintes restrições de segurança comuns podem ser ativadas e detalhadas numa resposta de erro da API à medida que desenvolve as suas aplicações.
Compute Engine
Nome da restrição | Por que motivo é implementada | Solução alternativa sugerida |
---|---|---|
constraints/compute.disableNestedVirtualization | Impedir a instalação de um hipervisor compatível com KVM na VM. Este comportamento pode introduzir riscos de segurança sem a aplicação de patches e a gestão adequadas. | Configure a VM para desativar a virtualização aninhada acelerada por hardware. Por predefinição, está ativado para todas as VMs do Compute Engine executadas em plataformas de CPU Intel Haswell ou mais recentes. |
constraints/compute.requireShieldedVm | Requer que as novas instâncias de VM usem imagens de disco protegidas com as opções de arranque seguro, vTPM e monitorização da integridade ativadas. Estas opções impedem a VM de ser adulterada e os dados de serem acedidos ou modificados. | Não ative as VMs protegidas quando criar uma VM. Para criar um cluster do GKE, tem de ativar nós do GKE protegidos. Atualmente, o Dataflow não suporta trabalhadores de VMs protegidas. |
constraints/compute.disableSerialPortAccess | Remova vetores de segurança para interagir com uma VM ou ver a saída de diagnóstico que pode ser usada para formar um ataque. | Não ative o acesso à porta de série quando criar uma VM. |
constraints/compute.disableGuestAttributesAccess | Minimizar a quantidade de informações sobre o anfitrião e a plataforma subjacentes que podem ser usadas indevidamente por uma app maliciosa. | Não use a API Compute Engine para ler atributos de convidados das suas VMs do Compute Engine. |
constraints/compute.vmExternalIpAccess | Impedir que as aplicações sejam executadas com um endereço IP externo e acessível a partir da Internet. | Desative o acesso por IP externo para as suas VMs. Só pode usar um endereço IP privado interno. O GKE pode usar clusters privados sem endereços IP públicos. Atualmente, o Dataprep e o Dataflow não suportam endereços IP privados. |
Rede virtual e endereços IP
Nome da restrição | Por que motivo é implementada | Solução alternativa sugerida |
---|---|---|
constraints/compute.skipDefaultNetworkCreation | Certifique-se de que só é possível criar nuvens privadas virtuais (VPCs) geridas pela empresa e que as regras de filtragem ou tráfego de rede são aplicadas. | Associe as suas aplicações a VPCs existentes na sua organização. As VPCs criadas automaticamente predefinidas não são implementadas para novos projetos. |
constraints/compute.restrictXpnProjectLienRemoval | Impedir que uma VPC partilhada seja eliminada acidentalmente quando os recursos noutros projetos dependem dos serviços de rede que fornece. | Não tente eliminar uma VPC partilhada. Certifique-se de que está a segmentar o recurso correto para eliminação. |
constraints/sql.restrictPublicIp | Impedir que as instâncias do Cloud SQL sejam executadas com um endereço IP externo e sejam acessíveis a partir da Internet. | Não configure a sua instância do Cloud SQL para usar um endereço IP público externo. Em alternativa, configure a sua instância do Cloud SQL para usar um endereço IP privado interno. |
Identidade e autenticação
Nome da restrição | Por que motivo é implementada | Solução alternativa sugerida |
---|---|---|
constraints/iam.disableServiceAccountKeyCreation | As chaves de contas de serviço podem representar um risco de segurança se forem expostas, por isso, impeça a respetiva exportação. | Autentique-se através de uma alternativa mais segura às chaves de contas de serviço. |
constraints/storage.uniformBucketLevelAccess | Minimize o risco de aplicação de autorizações incorretas ou inconsistentes aos contentores de armazenamento permitindo apenas a utilização da gestão de identidade e de acesso (IAM). | Ative o acesso de nível de contentor uniforme para proteger o seu contentor do Cloud Storage. |
constraints/iam.allowedPolicyMemberDomains | Restringir Google Cloud o acesso aos recursos apenas a domínios aprovados. | Use uma conta num dos domínios aprovados. Existem problemas conhecidos adicionais para esta restrição. |
Exemplos de erros de resposta da API
No exemplo anterior de restrição de endereços IP públicos externos com o Cloud SQL, uma violação de política faz com que a API devolva um erro. Os exemplos mais detalhados seguintes mostram a resposta da API que indica qual a restrição que faz com que o pedido falhe. Analise as suas próprias respostas da API para compreender por que motivo as implementações de aplicações falham.
Falha do Cloud SQL com a CLI do Google Cloud:
$ gcloud alpha sql instances create mysql-node --project my-sql-project ERROR: (gcloud.alpha.sql.instances.create) HTTPError 400: Invalid request: Organization Policy check failure: the external IP of this instance violates the constraints/sql.restrictPublicIp enforced at the 123456789 project.
Falha do Cloud SQL com o Terraform:
$ terraform apply plan.out [...] module.mysql-db.google_sql_database_instance.default: Creating... Error: Error, failed to create instance backend01-db-1c81e0e3: googleapi: Error 400: Invalid request: Organization Policy check failure: the external IP of this instance violates the constraints/sql.restrictPublicIp enforced at the 123456789 project., invalid
Liste as políticas da organização aplicadas ao seu projeto
O seu projeto pode herdar políticas ao nível da pasta ou da organização. Consoante as suas funções de acesso, pode não ter visibilidade das políticas aplicadas a níveis superiores na sua hierarquia para ver onde a restrição violada é aplicada.
Para ver as políticas ou as exceções aplicadas ao seu projeto, use o comando gcloud org-policies list:
gcloud org-policies list --project=PROJECT_ID
Substitua PROJECT_ID pelo projeto para o qual quer ver as políticas aplicadas.
Para mais informações sobre uma política aplicada, use o comando
gcloud org-policies describe. Indique o nome da política a descrever e o ID do projeto com o parâmetro --project
:
gcloud org-policies describe POLICY_NAME \ --project=PROJECT_ID
Substitua o seguinte:
POLICY_NAME: o nome da política da organização
PROJECT_ID: o projeto para o qual quer ver a política aplicada
O que se segue?
Se não conseguir determinar onde uma política é aplicada e como contornar uma restrição de segurança, contacte as suas operações de TI ou a equipa de segurança. Cada organização aplica políticas e planos personalizados para o respetivo ambiente.
Para mais informações sobre todos os controlos que podem ser aplicados na sua organização, consulte a lista de restrições da política da organização.