> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-trino-dialect.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Gerenciar funções personalizadas

> Esta página descreve como os administradores podem adicionar, modificar e remover funções personalizadas

export const BetaBadge = ({link, galaxyTrack, galaxyEvent}) => {
  if (link) {
    return <a href={link} target="_blank" rel="noopener noreferrer" className="betaBadge" onClick={galaxyTrack && galaxyEvent ? galaxyOnClick(galaxyEvent) : undefined}>
                <span>Beta</span>
            </a>;
  }
  return <a href="https://clickhouse.com/docs/reference/settings/beta-and-experimental-features#beta-features" className="betaBadge">
            <span>Recurso beta</span>
        </a>;
};

export const Image = ({img, alt, size = "lg"}) => {
  const normalizedSize = ["sm", "md", "lg"].includes(size) ? size : "lg";
  return <div className={`ch-image-${normalizedSize}`}>
      <Frame>
        <img src={img} alt={alt} />
      </Frame>
    </div>;
};

Este guia é destinado a usuários com a Função Admin no ClickHouse Cloud.

Os clientes do ClickHouse Cloud podem selecionar funções de sistema predefinidas ou criar funções personalizadas para atribuir aos usuários. Para mais informações sobre as funções de sistema e as permissões associadas, consulte [Console roles and permissions](/pt-BR/products/cloud/reference/security/console-roles). Este guia fornece detalhes sobre como gerenciar funções personalizadas.

<div id="create-custom-role">
  ## Criar funções personalizadas
</div>

As funções personalizadas podem incluir uma combinação de permissões de organização, serviço e banco de dados. As permissões podem ser aplicadas a todos os serviços e bancos de dados ou a um subconjunto deles.

<Steps>
  <Step title="Acesse as configurações da organização e selecione `Users and roles`" id="users-and-roles-1">
    Na página de serviços, selecione o nome da sua organização. No menu pop-up, selecione o item de menu `Users and roles`.

    <Image img="https://mintcdn.com/private-7c7dfe99-trino-dialect/avthXRFo-wpxxds8/images/cloud/guides/control_plane/1_users_and_roles.webp?fit=max&auto=format&n=avthXRFo-wpxxds8&q=85&s=465bb65edffc806a153c4ca370a49a81" size="lg" width="3418" height="1702" data-path="images/cloud/guides/control_plane/1_users_and_roles.webp" />
  </Step>

  <Step title={<>Selecione a aba <code>Roles</code></>} id="roles-tab">
    Selecione a aba `Roles` na parte superior central da tela.

    <Image img="https://mintcdn.com/private-7c7dfe99-trino-dialect/avthXRFo-wpxxds8/images/cloud/guides/control_plane/manage_custom_roles/2_custom_role.webp?fit=max&auto=format&n=avthXRFo-wpxxds8&q=85&s=e852f599ac4390cd5d39823e1d71f07e" size="lg" width="3414" height="984" data-path="images/cloud/guides/control_plane/manage_custom_roles/2_custom_role.webp" />
  </Step>

  <Step title={<>Selecione <code>Create new role</code> no canto superior direito</>} id="create-new-role">
    Selecione o botão `Create new role` no canto superior direito da tela.

    <Image img="https://mintcdn.com/private-7c7dfe99-trino-dialect/avthXRFo-wpxxds8/images/cloud/guides/control_plane/manage_custom_roles/3_custom_role.webp?fit=max&auto=format&n=avthXRFo-wpxxds8&q=85&s=72a6f738fc7b1143ae02c2d96a51df5c" size="lg" width="3418" height="1706" data-path="images/cloud/guides/control_plane/manage_custom_roles/3_custom_role.webp" />
  </Step>

  <Step title="Dê um nome à função" id="name-the-role">
    Digite um nome descritivo para a função. Esse será o nome exibido ao atribuir funções a usuários e chaves de API.

    <Image img="https://mintcdn.com/private-7c7dfe99-trino-dialect/avthXRFo-wpxxds8/images/cloud/guides/control_plane/manage_custom_roles/4_custom_role.webp?fit=max&auto=format&n=avthXRFo-wpxxds8&q=85&s=6c57d29e02640cc5d285bdd568f3348f" size="md" width="1200" height="1704" data-path="images/cloud/guides/control_plane/manage_custom_roles/4_custom_role.webp" />
  </Step>

  <Step title={<>Clique em <code>Allow</code> e selecione o escopo da permissão</>} id="scope-permissions">
    Clique no botão `Allow` e selecione permissões de organização, serviço e/ou banco de dados. Para ver a descrição de todas as permissões, consulte [Console roles and permissions](/pt-BR/products/cloud/reference/security/console-roles).

    <Tip>
      Certifique-se de que os usuários que farão login no console tenham, no mínimo, a permissão Organization > Access organization.
    </Tip>

    <Info>
      **Acesso à aba Data Sources**

      Para acessar a aba **Data Sources**, no momento a função exige a permissão `Manage selected services`.
    </Info>

    <Image img="https://mintcdn.com/private-7c7dfe99-trino-dialect/avthXRFo-wpxxds8/images/cloud/guides/control_plane/manage_custom_roles/5_custom_role.webp?fit=max&auto=format&n=avthXRFo-wpxxds8&q=85&s=90001bfe74b8ca1f528b7aea343884c3" size="md" width="1192" height="1700" data-path="images/cloud/guides/control_plane/manage_custom_roles/5_custom_role.webp" />
  </Step>

  <Step title="Revise sua nova função" id="review-role">
    Revise as permissões atribuídas à sua nova função antes de concluir. Clique em `Create role` quando terminar.

    <Image img="https://mintcdn.com/private-7c7dfe99-trino-dialect/avthXRFo-wpxxds8/images/cloud/guides/control_plane/manage_custom_roles/6_custom_role.webp?fit=max&auto=format&n=avthXRFo-wpxxds8&q=85&s=95310ec2a3576945f6b9222803cbf934" size="md" width="1190" height="1696" data-path="images/cloud/guides/control_plane/manage_custom_roles/6_custom_role.webp" />
  </Step>
</Steps>

<div id="manage-database-roles">
  ## Gerenciar funções de banco de dados (beta)
</div>

<BetaBadge />

Além das permissões do console, as funções personalizadas podem incluir permissões de dados que controlam o acesso aos bancos de dados dos serviços selecionados. Isso permite gerenciar o acesso ao console e aos bancos de dados em um só lugar, em vez de manter funções separadas em cada banco de dados.

<Note>
  Este recurso está em beta e está disponível para serviços que executam o ClickHouse versão 26.4 ou superior.
</Note>

Quando você adiciona permissões de dados a uma função personalizada, o ClickHouse Cloud cria uma função correspondente em cada serviço selecionado, com o prefixo `cloud:`. Por exemplo, uma função personalizada chamada `readonly` aparece no banco de dados como `cloud:readonly`. Os membros da função personalizada recebem essas permissões de banco de dados ao se conectarem ao serviço por meio da autenticação sem senha do SQL Console.

<Info>
  As funções atribuídas manualmente no banco de dados usando a [convenção de nomenclatura `sql-console-role:<email>`](/pt-BR/products/cloud/guides/security/cloud-access-management/manage-database-users#sql-console-users-and-roles) têm precedência sobre as funções atribuídas pelo console.
</Info>

<Steps>
  <Step title="Adicionar permissões de dados a uma função" id="add-data-permissions">
    [Crie uma função personalizada](#create-custom-role) ou edite uma existente. Na caixa de diálogo da função, clique no botão `Allow permissions` e selecione `Data`.
  </Step>

  <Step title="Selecionar o serviço" id="select-data-permissions-service">
    Selecione o serviço ao qual as permissões se aplicam. Adicione outros serviços para aplicar permissões a vários serviços.
  </Step>

  <Step title="Escolher o nível de acesso" id="choose-data-access-level">
    Selecione o acesso `Read-only`, `Admin` ou `Custom`. Com o acesso `Custom`, defina permissões específicas de acesso a dados usando instruções [`GRANT`](/pt-BR/reference/statements/grant) do ClickHouse.

    <Image img="https://mintcdn.com/private-7c7dfe99-trino-dialect/avthXRFo-wpxxds8/images/cloud/guides/control_plane/manage_custom_roles/create_role_data_permissions.webp?fit=max&auto=format&n=avthXRFo-wpxxds8&q=85&s=0e3d1544276432eb02a1298aabd3f0cd" alt="Caixa de diálogo de criação de nova função com permissões de dados definidas por instruções GRANT personalizadas" size="md" width="1174" height="1230" data-path="images/cloud/guides/control_plane/manage_custom_roles/create_role_data_permissions.webp" />
  </Step>

  <Step title="Criar a função" id="create-role-with-data-permissions">
    Clique em `Create role`. As funções de banco de dados são criadas nos serviços selecionados.
  </Step>
</Steps>

<div id="verify-database-roles">
  ### Verificar funções de banco de dados
</div>

As funções gerenciadas pelo console são criadas no banco de dados com o prefixo `cloud:` e o tipo de armazenamento `cloud`. Para listá-las, consulte a tabela `system.roles` no service:

```sql theme={null}
SELECT * FROM system.roles;
```

```response theme={null}
┌─name───────────┬─id───────────────────────────────────┬─storage─┐
│ cloud:readonly │ 9a4910f4-abcf-4904-466a-717c8c75ac42 │ cloud   │
└────────────────┴──────────────────────────────────────┴─────────┘
```

<div id="update-custom-role">
  ## Atualizar funções personalizadas
</div>

As funções personalizadas podem ser atualizadas após serem criadas. Os usuários perderão todas as permissões removidas da função e receberão todas as permissões adicionadas.

<Tip>
  As permissões do usuário são aditivas. Se um usuário tiver permissão para executar uma operação por meio de várias funções, talvez não perca o acesso imediatamente se a permissão for removida de apenas uma função.
</Tip>

1. Acesse as configurações da organização e selecione `Users and roles`
2. Selecione a aba `Roles`
3. Selecione os três pontos ao lado da função que você quer atualizar
4. Selecione `Edit`
5. Modifique as permissões
6. Selecione `Edit role`

<div id="delete-custom-role">
  ## Excluir funções personalizadas
</div>

As funções personalizadas podem ser excluídas a qualquer momento.

<Warning>
  É necessário ter pelo menos um usuário na organização com permissões administrativas. Se a exclusão da função remover as permissões administrativas do último usuário, você não poderá excluí-la. Para resolver isso, atribua a pelo menos um usuário a função de sistema Admin antes de excluir a função personalizada.
</Warning>

1. Acesse as configurações da organização e selecione `Users and roles`
2. Selecione a guia `Roles`
3. Selecione os três pontos ao lado da função que você deseja excluir
4. Revise os usuários e as chaves de API que perderão acesso quando a função for removida. Ajuste as atribuições conforme necessário.
5. Selecione `Delete role` para concluir o processo
