Gerenciar recursos da plataforma Contact Center AI (CCAI Platform) usando restrições personalizadas

Com a política da organização doGoogle Cloud , você controla de forma centralizada e programática os recursos da sua organização. Como administrador de políticas da organização, você pode definir uma política da organização, que é um conjunto de restrições que se aplicam aos recursos do Google Cloud e aos elementos que descendem dele na hierarquia de recursos doGoogle Cloud . É possível aplicar políticas da organização no nível da organização, da pasta ou do projeto.

A política da organização fornece restrições predefinidas para diversos serviços doGoogle Cloud . No entanto, se você quiser um controle mais granular e personalizável sobre os campos específicos restritos nas suas políticas da organização, crie também restrições personalizadas. Para implementar uma restrição personalizada para a plataforma CCAI, é necessário configurar as instâncias para acesso particular. Isso restringe o acesso público à Internet a essas instâncias, o que significa que você precisa configurar o Private Service Connect para que seus agentes, gerentes e administradores da plataforma CCAI as acessem. Para mais informações, consulte Configurar o Private Service Connect.

Vantagens

As políticas da organização para a plataforma CCAI permitem que os administradores do Google Cloud apliquem restrições em toda a organização em caminhos de rede que não são cobertos pelo VPC Service Controls. Além disso, essas políticas da organização oferecem controle detalhado sobre os caminhos de entrada e saída, particionando o tráfego de rede em componentes. Para mais informações, consulte Componentes.

Herança de políticas

Por padrão, as políticas da organização são herdadas pelos elementos que descendem dos recursos em que elas são aplicadas. Por exemplo, se você aplicar uma política a uma pasta, o Google Cloud vai aplicá-la a todos os projetos dessa pasta. Para saber mais sobre esse comportamento e como alterá-lo, consulte Regras de avaliação de hierarquia.

Preços

O serviço de políticas da organização, incluindo as políticas da organização predefinidas e personalizadas, é oferecido sem custos financeiros.

Limitações

A plataforma CCAI não está integrada ao Inventário de recursos do Cloud. Portanto, o recurso Simulador de política do Policy Intelligence não está disponível para a política da organização da plataforma CCAI.

Antes de começar

Antes de começar, faça o seguinte:

  1. Siga as etapas em Configurar o projeto do Google Cloud para a plataforma CCAI.
  2. Para instalar e inicializar a CLI da Google Cloud , faça o seguinte:
    1. Instale a CLI do Google Cloud.

    2. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.

    3. Para inicializar a CLI gcloud, execute o seguinte comando:

      gcloud init
  3. Verifique qual é o ID da sua organização.

Funções exigidas

Para conseguir as permissões necessárias para gerenciar as políticas da organização, peça ao administrador para conceder a você os papéis do IAM a seguir:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Esses papéis predefinidos contêm as permissões necessárias para gerenciar políticas da organizações. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

As permissões a seguir são necessárias para gerenciar as políticas da organização:

  • orgpolicy.customConstraints.get
  • orgpolicy.customConstraints.list
  • orgpolicy.customConstraints.create
  • orgpolicy.customConstraints.update
  • orgpolicy.customConstraints.delete

Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.

Componentes

Use componentes ao criar restrições personalizadas em instâncias da plataforma CCAI. Os componentes são abstrações de caminhos de rede associados a funcionalidades específicas da plataforma CCAI. Por exemplo, o componente agente representa o grupo de todos os caminhos de rede de entrada relacionados às tarefas que um agente, gerente ou administrador da CCAI Platform realiza.

A tabela a seguir mostra os componentes usados nas restrições personalizadas da plataforma CCAI:

Componente Descrição Direção do tráfego Valor de exemplo
AGENT O grupo de todos os caminhos de rede de entrada relacionados às tarefas que um agente, gerente ou administrador da CCAI Platform realiza. Entrada AGENT
CRM Tráfego de saída para um app de gestão de relacionamento com o cliente (CRM). Saída CRM
MEDIA Tráfego de saída de mídia. Saída MEDIA
DIRECT_ACCESS_POINT Tráfego de saída para um endpoint de acesso direto (DAP). Saída DIRECT_ACCESS_POINT
EMAIL Tráfego de saída de e-mail. Saída EMAIL
COBROWSE Tráfego de saída do compartilhamento de tela. Saída COBROWSE

Criar uma restrição personalizada

Uma restrição personalizada é definida em um arquivo YAML pelos recursos, métodos, condições e ações compatíveis com o serviço em que você está aplicando a política da organização. As condições das restrições personalizadas são definidas usando a Common Expression Language (CEL). Para saber como criar condições em restrições personalizadas usando a CEL, consulte a seção CEL em Como criar e gerenciar restrições personalizadas.

Para definir uma restrição personalizada em um arquivo YAML para a plataforma CCAI, siga estas etapas:

  1. Crie um arquivo de texto com as seguintes linhas:

    name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
    resourceTypes:
    - contactcenteraiplatform.googleapis.com/ContactCenter
    methodTypes:
    - CREATE
    - UPDATE
    condition: "CONDITION"
    actionType: ACTION_TYPE
    displayName: "DISPLAY_NAME"
    description: "DESCRIPTION"
    

    Substitua:

    • ORGANIZATION_ID: o ID da organização.

    • CONSTRAINT_NAME: o nome da sua restrição personalizada. Uma restrição personalizada precisa começar com um prefixo custom. e só pode incluir letras maiúsculas, minúsculas ou números, por exemplo, custom.requirePrivateAccess. Esse campo tem um comprimento máximo de 70 caracteres, sem contar o prefixo.

    • CONDITION: uma condição de CEL gravada em uma representação de um recurso de serviço compatível, por exemplo, resource.privateAccess.ingressSettings.exists(private_component, private_component.name == 'AGENT'). Esse campo pode ter no máximo 1.000 caracteres. Para mais informações sobre os recursos disponíveis para gravar condições, consulte Recursos e operações compatíveis com a plataforma CCAI. Para mais informações sobre componentes, consulte Componentes.

    • ACTION_TYPE: a ação a ser realizada se o condition for atendido. Especifique ALLOW.

    • DISPLAY_NAME: um nome legível para a restrição. Esse campo pode ter no máximo 200 caracteres.

    • DESCRIPTION: uma descrição legível da restrição a ser exibida como uma mensagem de erro quando a política for violada. Esse campo tem um comprimento máximo de 2000 caracteres.

  2. Salve a restrição personalizada como um arquivo YAML, por exemplo, customconstraint.yaml. Use o caminho para esse arquivo como o valor da variável CONSTRAINT_PATH em Configurar uma restrição personalizada.

Para mais informações sobre políticas personalizadas da organização e sintaxe de restrição, consulte Exemplos de políticas personalizadas da organização para casos de uso comuns.

Configurar uma restrição personalizada

Console

Para criar uma restrição personalizada, faça o seguinte:

  1. No console do Google Cloud , acesse a página Políticas da organização.

    Acessar a página Políticas da organização

  2. No seletor de projetos, selecione o projeto em que você quer definir a política da organização.
  3. Clique em Restrição personalizada.
  4. Na caixa Nome de exibição, insira um nome legível por humanos para a restrição. Esse nome é usado em mensagens de erro e pode ser usado para identificação e depuração. Não use informações de identificação pessoal (PII) ou dados sensíveis em nomes de exibição, porque esse nome pode ser exposto em mensagens de erro. Esse campo pode conter até 200 caracteres.
  5. Na caixa ID da restrição, insira o ID que você quer para a nova restrição personalizada. Uma restrição personalizada só pode conter letras (incluindo maiúsculas e minúsculas) ou números, por exemplo, custom.requirePrivateAccess. Esse campo pode ter até 70 caracteres, sem contar o prefixo (custom.), por exemplo, organizations/123456789/customConstraints/custom. Não inclua PII ou dados sensíveis no ID da restrição. Eles podem ser expostos em mensagens de erro.
  6. Na caixa Descrição, insira uma descrição legível por humanos da restrição. Essa descrição é usada como uma mensagem de erro quando a política é violada. Inclua detalhes sobre por que a violação da política ocorreu e como resolvê-la. Não inclua PII ou dados sensíveis na descrição, porque eles podem ser expostos em mensagens de erro. Esse campo pode conter até 2.000 caracteres.
  7. Na caixa Tipo de recurso, selecione o nome do recurso REST do Google Cloud que contém o objeto e o campo que você quer restringir. Por exemplo, container.googleapis.com/Cluster. A maioria dos tipos de recursos aceita até 20 restrições personalizadas. Se você tentar criar mais restrições personalizadas, a operação vai falhar.
  8. Essa restrição só pode ser aplicada no método REST CREATE.
  9. Para ver os métodos compatíveis para cada serviço, encontre o serviço em Serviços que aceitam restrições personalizadas.

  10. Para definir uma condição, clique em Editar condição.
    1. No painel Adicionar condição, crie uma condição de CEL que se refira a um recurso de serviço compatível, por exemplo, resource.management.autoUpgrade == false. Esse campo pode conter até 1.000 caracteres. Para detalhes sobre o uso da CEL, consulte Common Expression Language. Para mais informações sobre os recursos de serviço que você pode usar nas restrições personalizadas, consulte Serviços compatíveis com restrição personalizada.
    2. Clique em Salvar.
  11. Em Ação, selecione se você quer permitir ou negar o método avaliado quando a condição é atendida.
  12. A ação de negação significa que a operação para criar ou atualizar o recurso será bloqueada se a condição for avaliada como verdadeira.

    A ação de permissão significa que a operação para criar ou atualizar o recurso só é permitida se a condição for avaliada como verdadeira. Todos os outros casos, exceto os listados explicitamente na condição, estão bloqueados.

  13. Clique em Criar restrição.
  14. Quando você digita um valor em cada campo, a configuração YAML equivalente à restrição personalizada é exibida à direita.

gcloud

  1. Para criar uma restrição personalizada, crie um arquivo YAML com o seguinte formato:
  2. name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
    resourceTypes: RESOURCE_NAME
    methodTypes:
      - CREATE
    condition: "CONDITION"
    actionType: ACTION
    displayName: DISPLAY_NAME
    description: DESCRIPTION

    Substitua:

    • ORGANIZATION_ID: o ID da organização, como 123456789.
    • CONSTRAINT_NAME: o nome da nova restrição personalizada. Uma restrição personalizada só pode conter letras (incluindo maiúsculas e minúsculas) ou números, por exemplo, custom.requirePrivateAccess. Esse campo pode ter até 70 caracteres, sem contar o prefixo (custom.), por exemplo, organizations/123456789/customConstraints/custom. Não inclua PII ou dados sensíveis no ID da restrição, porque eles podem ser expostos em mensagens de erro.
    • RESOURCE_NAME: o nome totalmente qualificado do recurso do Google Cloud que contém o objeto e o campo que você quer restringir. Por exemplo, contactcenteraiplatform.googleapis.com/ContactCenter. A maioria dos tipos de recursos aceita até 20 restrições personalizadas. Se você tentar criar mais restrições personalizadas, a operação vai falhar.
    • methodTypes: os métodos REST em que a restrição é aplicada. Só pode ser CREATE.
    • Para ver os métodos compatíveis com cada serviço, encontre o serviço em Serviços que aceitam restrições personalizadas.

    • CONDITION: uma condição de CEL gravada em uma representação de um recurso de serviço compatível. Esse campo pode conter até 1.000 caracteres. Por exemplo, resource.privateAccess.ingressSettings.exists(private_component, private_component.name == 'AGENT').
    • Para mais informações sobre os recursos disponíveis para a gravação de condições, consulte Recursos compatíveis.

    • ACTION: a ação a ser realizada se o condition for atendido. Só pode ser ALLOW.
    • A ação de permissão significa que, se a condição for avaliada como verdadeira, a operação para criar ou atualizar o recurso será permitida. Isso também significa que todos os outros casos, exceto o listado explicitamente na condição, estão bloqueados.

    • DISPLAY_NAME: um nome legível por humanos para a restrição. Esse nome é usado em mensagens de erro e pode ser usado para identificação e depuração. Não use PII ou dados sensíveis em nomes de exibição, porque esse nome pode ser exposto em mensagens de erro. Esse campo pode conter até 200 caracteres.
    • DESCRIPTION: uma descrição legível da restrição a ser exibida como uma mensagem de erro quando a política for violada. Esse campo pode conter até 2.000 caracteres.
  3. Depois de criar o arquivo YAML para uma nova restrição personalizada, faça a configuração necessária para disponibilizá-la para as políticas da organização. Para configurar uma restrição personalizada, use o comando gcloud org-policies set-custom-constraint:
  4. gcloud org-policies set-custom-constraint CONSTRAINT_PATH

    Substitua CONSTRAINT_PATH pelo caminho completo do arquivo da restrição personalizada. Por exemplo, /home/user/customconstraint.yaml.

    Após a conclusão dessa operação, as restrições personalizadas vão estar disponíveis como políticas da organização na lista de políticas da organização do Google Cloud .

  5. Para verificar se a restrição personalizada existe, use o comando gcloud org-policies list-custom-constraints:
  6. gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID

    Substitua ORGANIZATION_ID pelo ID do recurso da organização.

    Para mais informações, consulte Como visualizar as políticas da organização.

Aplicar uma restrição personalizada

Para aplicar uma restrição booleana, crie uma política da organização com referência a ela e aplique essa política da organização a um recurso do Google Cloud .

Para aplicar uma restrição personalizada, siga estas etapas:

  1. Para criar uma política da organização que aplica uma restrição booleana, crie um arquivo YAML da política com referência à seguinte restrição:

    name: projects/PROJECT_ID/policies/CONSTRAINT_NAME
    spec:
      rules:
      - enforce: true
    

    Substitua:

    • PROJECT_ID: o projeto em que você quer aplicar a restrição.
    • CONSTRAINT_NAME: o nome definido para a restrição personalizada, por exemplo, custom.requirePrivateAccess.
  2. Para aplicar a política da organização que contém a restrição, execute o seguinte comando:

    gcloud org-policies set-policy POLICY_PATH
    

    Substitua POLICY_PATH pelo caminho completo para o arquivo YAML da política da organização. A política levará até 15 minutos para entrar em vigor.

Testar a restrição personalizada

Uma restrição personalizada, conforme definido em Criar uma restrição personalizada (com um componente do tipo AGENT, como no exemplo na descrição de CONDITION), aplica os seguintes comportamentos:

Criar e atualizar uma instância da plataforma CCAI com um componente do tipo AGENT

Para testar a criação e a atualização de uma instância da plataforma CCAI com um componente do tipo AGENT, siga estas etapas:

  1. Crie, configure e aplique uma restrição personalizada conforme as instruções neste documento.

  2. Crie uma instância conforme as instruções em Criar uma instância da plataforma CCAI configurada para acesso particular. A instância é criada.

  3. Para atualizar a instância, faça o seguinte:

    1. No console do Google Cloud , no menu de navegação, clique em Plataforma CCAI.

      Instâncias da CCAI Platform

      A página Instâncias da plataforma CCAI é exibida.

    2. Clique no nome da instância que você criou anteriormente neste procedimento.

    3. Clique em Editar e em Configurar implantações.

    4. Mude a programação de implantação e clique em Salvar. A atualização é bem-sucedida.

Como você criou uma instância particular da plataforma CCAI, é necessário configurar uma conexão do Private Service Connect para acessá-la.

Criar uma instância da plataforma CCAI sem um componente do tipo AGENT

Para testar a criação e a atualização de uma instância da plataforma CCAI sem um componente do tipo AGENT, siga estas etapas:

  1. Crie, configure e aplique uma restrição personalizada conforme as instruções neste documento.

  2. Tente criar uma instância conforme as instruções em Criar uma instância da plataforma CCAI, sem configurar o acesso privado. A criação da instância falha.

Atualizar uma instância da plataforma CCAI sem um componente do tipo AGENT

Como demonstrado em Criar uma instância da plataforma CCAI sem um componente do tipo AGENT, não é possível criar uma instância sem um componente do tipo AGENT depois de aplicar a restrição personalizada. Se você já tinha uma instância desse tipo antes de aplicar a restrição personalizada, as atualizações na instância vão falhar após a aplicação da restrição, a menos que as atualizações incluam a adição de um componente do tipo AGENT (consulte a observação a seguir).

Recursos e operações compatíveis com a plataforma CCAI

A tabela a seguir mostra os recursos e as operações compatíveis com as restrições personalizadas da política da organização.

Recurso Ação Atributo Operador Exemplo de condição
ContactCenter Criar ou atualizar uma instância. Para mais informações, consulte Criar uma instância da plataforma CCAI. nome contém resource.name.contains("us-central1/contactCenters/myContactCenter")
correspondências resource.name.matches("projects/my-project/locations/us-central1/contactCenters/myContactCenter")
startsWith resource.name.startsWith("projects/my-project")
endsWith resource.name.endsWith("myContactCenter")
privateAccess existe resource.privateAccess.ingressSettings.exists(private_component, private_component.name == 'AGENT')

Verifica se o componente AGENT está ativado.

Exemplos de políticas personalizadas da organização para casos de uso comuns

A tabela a seguir mostra a sintaxe de algumas políticas da organização personalizadas que podem ser úteis:

Descrição Sintaxe da restrição
Todos os componentes especificados são particulares, ou seja, AGENT).
    name: organizations/ORGANIZATION_ID/customConstraints/custom.requirePrivateAccess
    resourceTypes:
    - contactcenteraiplatform.googleapis.com/ContactCenter
    methodTypes:
    - CREATE
    - UPDATE
    condition: "resource.privateAccess.ingressSettings.exists(private_component, private_component.name == 'AGENT')"
    actionType: ALLOW
    displayName: Agents cannot connect over the internet.
    description: Internet access is disallowed for agents.
Todas as instâncias, exceto a única especificada, precisam usar o AGENT particular especificado.
    name: organizations/ORGANIZATION_ID/customConstraints/custom.requirePrivateAccess
    resourceTypes:
    - contactcenteraiplatform.googleapis.com/ContactCenter
    methodTypes:
    - CREATE
    - UPDATE
    condition: "resource.privateAccess.ingressSettings.exists(private_component, private_component.name == 'AGENT' ||
    resource.name.contains('myContactCenterId')"
    actionType: ALLOW
    displayName: Restrict Internet access to AGENT for all instances except a
    single instance.
    description: Internet access for agents is restricted except for myContactcenterId CCAI Platform instances.

A seguir