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

AGoogle Cloud política da organização oferece controle centralizado e programático sobre 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 chamadas de limites que se aplicam aos recursos do Google Cloud e aos descendentes desses recursos 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 na plataforma CCAI, é necessário configurar as instâncias para acesso privado. Isso restringe o acesso à Internet pública 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 possam acessá-las. 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 Google Cloudapliquem 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 oferecem controle detalhado sobre os caminhos de entrada e saída ao particionar 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 Organization Policy Service, incluindo políticas predefinidas e personalizadas, é oferecido sem custos financeiros.

Limitações

A plataforma CCAI não é integrada ao Inventário de recursos do Cloud. Portanto, o recurso Simulador de política da Política de IA 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 seu projeto Google Cloud para a CCAI Platform.
  2. Para instalar e inicializar a CLI 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. Certifique-se de conhecer o ID da organização.

Funções exigidas

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

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

Você usa 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 plataforma CCAI 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 plataforma de IA de contato faz. 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, na sigla em inglês). 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 mais informações sobre como criar condições em restrições personalizadas usando a CEL, consulte a seção sobre a 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 código da sua 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 pode ter até 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 tem um comprimento máximo de 1000 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 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 eles podem ser expostos em mensagens de erro. Esse campo pode ter 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 (maiúsculas e minúsculas) ou números, por exemplo, custom.requirePrivateAccess. Esse campo pode conter 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.
  6. Na caixa Descrição, insira uma descrição legível da restrição. Essa descrição é usada como uma mensagem de erro quando a política é violada. Inclua detalhes sobre o motivo da violação e como resolver o problema. 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/NodePool. 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 ter 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 sua nova restrição personalizada. Uma restrição personalizada só pode conter letras (maiúsculas e minúsculas) ou números, por exemplo, custom.requirePrivateAccess. Esse campo pode conter 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 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 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 "permitir" 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 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 eles podem ser expostos em mensagens de erro. Esse campo pode ter 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 de restrição personalizada. Por exemplo, /home/user/customconstraint.yaml.

    Após a conclusã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 políticas da organização.

Aplicar uma restrição personalizada

Para aplicar uma restrição booleana, crie uma política da organização que faça referência a ela e aplique essa política 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 aplique uma restrição booleana, crie um arquivo YAML da política que faça 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 sua 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), impõe os seguintes comportamentos:

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

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

  1. Crie, configure e aplique uma restrição personalizada conforme indicado neste documento.

  2. Crie uma instância conforme indicado em Criar uma instância da plataforma CCAI configurada para acesso privado. A criação da instância é concluída.

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

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

      Instâncias da plataforma CCAI

      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 é concluída.

Como você criou uma instância privada 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 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 indicado neste documento.

  2. Tente criar uma instância conforme indicado 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

Conforme 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, depois de aplicar a restrição, as atualizações da instância vão falhar, a menos que incluam a adição de um componente do tipo AGENT. Consulte a observação a seguir.

Recursos e operações com suporte da plataforma CCAI

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

Recurso Ação Atributo Operador Exemplo de condição
ContactCenter Crie ou atualize 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