Noções básicas sobre restrições

Um constraint é um tipo de restrição contra um serviço do Google Cloud ou uma lista de serviços do Google Cloud. Pense na restrição como um esquema que define quais comportamentos são controlados. Esse esquema é então aplicado a um nó da hierarquia de recursos como uma política da organização, que implementa as regras definidas na restrição. O serviço do Google Cloud mapeado para essa restrição e associado ao nó da hierarquia de recursos aplicará as restrições configuradas na política da organização.

Uma restrição tem um tipo, que determina os valores da política da organização que podem ser inseridos e usados para verificar a aplicação. O serviço aplicador do Google Cloud avaliará o tipo e o valor da restrição para determinar a restrição.

Durante a avaliação da hierarquia, a política da organização definida no node da hierarquia de recursos entra em vigor. Se inheritFromParent for definido como TRUE, a mesclagem de herança entrará em vigor.

Atributos da restrição

Toda restrição é definida por estes atributos:

  • Nome: o nome exclusivo da restrição.
    • Por exemplo, constraints/compute.disableSerialPortAccess.
  • Nome de exibição: o nome legível da restrição
  • Descrição: detalhes sobre quais implementações são aplicadas e por meio das quais o Google Cloud presta serviços.
  • Comportamento padrão: comportamento na ausência de configuração definida pelo usuário na política


Tipos de restrições

Restrição de lista

Uma restrição de lista permite ou não uma lista de valores definidos em uma política da organização. Essa lista de valores é expressa como uma string de subárvore de hierarquia. Com a string de subárvore, é feita a especificação do tipo de recurso a que se aplica. Por exemplo, uma lista de IDs de projeto na forma de projects/PROJECT_ID para constraints/compute.trustedImageProjects.

Veja na tabela a seguir algumas configurações de restrição comuns para aplicação da política:

Política Configuração da restrição
Permitir um conjunto específico de valores Define o campo de valores permitidos (ListPolicy.allowed_values) para uma lista de strings
Define ListPolicy.all_values para ALL_VALUES_UNSPECIFIED
Negar um conjunto específico de valores Define o campo de valores negados (ListPolicy.denied_values) para uma lista de strings
Define ListPolicy.all_values para ALL_VALUES_UNSPECIFIED
Negar um valor e todos os seus valores filhos Define o campo de valores negados (ListPolicy.denied_values) como uma string de subtree, como organizations/1234
Define ListPolicy.all_values como ALL_VALUES_UNSPECIFIED
Permitir todos os valores válidos Define ListPolicy.all_values como ALLOW
Não define ListPolicy.allowed_values ou ListPolicy.denied_values
Negar todos os valores Define ListPolicy.all_values como DENY
Não define ListPolicy.allowed_values ou ListPolicy.denied_values

Os valores também podem receber um prefixo no formato “prefixo:valor”, que fornece o significado extra de valor:

  • is:: aplica uma comparação com o valor exato. Esse é o mesmo comportamento de quando não há um prefixo e é obrigatório quando o valor inclui o sinal de dois pontos.
  • under:: aplica uma comparação ao valor e todos os valores derivados. Se um recurso for permitido ou negado com este prefixo, seus recursos filhos também serão negados. O valor fornecido precisa ser uma string de subárvore de hierarquia, como nos exemplos a seguir:
    • organizations/ORGANIZATION_ID
    • folders/FOLDER_ID
    • projects/PROJECT_ID

Algumas restrições não são compatíveis com o uso de strings de subárvores de hierarquia como valores. Para informações sobre as restrições compatíveis com o uso de prefixos de valor da subárvore de hierarquia, veja Restrições da política da organização.

Os prefixos de valor da subárvore de hierarquia são um recurso beta, podem ser alterados tornando-se incompatíveis com versões anteriores e não estão sujeitos a SLAs ou políticas de suspensão de uso. Para mais informações sobre o uso de valores prefixados em restrições, consulte Configurar a aplicação em uma subárvore de hierarquia.

Se nenhuma lista de valores for fornecida, o padrão que entra em vigor, dependendo da restrição específica, poderá ser:

  • ALLOW: qualquer valor válido é permitido.
  • DENY: nenhum valor é permitido.

Restrição booleana

Uma restrição booleana está em aplicação ou não. A política é aplicada ao configurar Policy.enforced como True.

Por exemplo, constraints/compute.disableSerialPortAccess terá dois estados possíveis:

  • TRUE: a restrição disableSerialPortAccess é aplicada e o acesso à porta serial não é permitido.
  • FALSE: a restrição disableSerialPortAccess não é aplicada nem verificada, portanto, o acesso à porta serial é permitido.

Se nenhuma política for definida ou a política estiver definida como RestoreDefault, o acesso à porta serial será permitido, porque a restrição padrão será permitida.