Habilitação do fornecimento de credenciais para um catálogo externo¶
Com o fornecimento de credenciais, você pode usar o Snowflake Open Catalog para configurar e gerenciar o controle de acesso a um catálogo e seu armazenamento em nuvem subjacente em um único local. Para catálogos internos, o fornecimento de credenciais é ativado por padrão. Para catálogos externos, você pode habilitar o fornecimento de credenciais usando uma das seguintes opções:
Importante
Antes de habilitar o fornecimento de credenciais para um catálogo externo, certifique-se de que suas tabelas no catálogo não tenham locais de diretório de armazenamento sobrepostos. Caso contrário, um usuário pode obter acesso a tabelas que não tem permissão para acessar. Para obter mais informações, consulte Fornecimento de credenciais para catálogos externos.
Utilização do Open Catalog¶
Entre no Open Catalog.
No menu à esquerda, selecione Catálogos.
Na lista de catálogos, selecione o catálogo para o qual deseja habilitar o fornecimento de credenciais.
Na guia Detalhes do catálogo, em Detalhes de armazenamento, em Fornecimento de credenciais, selecione o ícone Editar.
Na janela pop-up que aparece, selecione Habilitar.
Apache Polaris™ (Incubating) CLI¶
Esta seção descreve como habilitar o fornecimento de credenciais para um catálogo externo usando o Polaris CLI. O Apache Polaris (Incubating) CLI é uma interface de linha de comando para que os clientes atualizem as configurações de forma programática. Para obter mais informações, consulte Apache Polaris (Incubating) CLI.
Para habilitar o fornecimento de credenciais para um catálogo externo, use uma conexão de serviço com o Polaris CLI.
Etapa 1: preparar uma conexão de serviço com os privilégios necessários¶
Crie uma função principal para atribuir à nova conexão de serviço. Ignore essa etapa se você já tiver uma função principal para atribuir à conexão de serviço.
Configure uma conexão de serviço e salve o ID do cliente e o Segredo do cliente para usá-los posteriormente com o Polaris CLI. Pule essa etapa se você já tiver uma conexão de serviço para usar o Polaris CLI.
Crie uma função de catálogo no(s) catálogo(s) de destino para conceder a ela os privilégios necessários para habilitar o fornecimento de credenciais. Pule essa etapa se você já tiver uma função de catálogo a ser usada para habilitar o fornecimento de credenciais.
Proteja o catálogo de destino. Ao protegê-lo, certifique-se de que a função de catálogo tenha pelo menos um dos seguintes privilégios concedidos a ela:
CATALOG_MANAGE_CONTENT
CATALOG_MANAGE_METADATA
CATALOG_WRITE_PROPERTIES
Para habilitar o fornecimento de credenciais, a entidade de serviço usada para realizar essa operação deve ter um desses privilégios concedidos a ela.
Etapa 2: execute o comando CLI¶
Para executar o comando CLI, consulte as etapas aplicáveis ao seu ambiente:
[Executar o comando CLI como um usuário do Windows] (#run-the-cli-command-as-a-windows-user)
Executar o comando CLI como um usuário Linux ou Mac¶
Pré-requisitos¶
Antes de executar o comando CLI, você deve atender aos seguintes pré-requisitos para o seu ambiente:
Para executar o comando CLI no Linux ou Mac, siga estas etapas:
Clone o repositório GitHub do Apache Polaris™ executando o seguinte comando:
git clone https://github.com/apache/polaris.git
Para obter instruções sobre como clonar um repositório GitHub, consulte Clonagem de um repositório.
Defina as seguintes variáveis de ambiente para o comando CLI:
export CLIENT_ID=<client-id> export CLIENT_SECRET=<client-secret> export sfAccountUrl=https://<open_catalog_account_identifier>.snowflakecomputing.com export catalogName=<my-catalog>
Onde:
sfAccountUrl
é a seguinte URL:https://<open_catalog_account_identifier>.snowflakecomputing.com
. Para<open_catalog_account_identifier>
, especifique o identificador de conta da sua conta do Open Catalog. Dependendo da região e da plataforma de nuvem da conta, esse identificador pode ser o localizador da conta por si só (por exemplo,xy12345
) ou incluir segmentos adicionais. Para obter mais informações, consulte Como usar um localizador de conta como um identificador.CLIENT_ID
é o client_id da conexão de serviço que você salvou.CLIENT_SECRET
é o client_secret da conexão de serviço que você salvou.catalogName
é o nome do catálogo externo para o qual você deseja habilitar o fornecimento de credenciais.
No diretório em que você clonou o repositório do Apache Polaris, execute o Polaris CLI:
./polaris \ --base-url "${sfAccountUrl}/polaris" \ --client-id ${CLIENT_ID} \ --client-secret ${CLIENT_SECRET} \ catalogs \ update "${catalogName}" \ --set-property "enable.credential.vending"="true"
Executar o comando CLI como um usuário do Windows¶
Pré-requisitos¶
Para executar o código a seguir, você precisa do Docker instalado na máquina Windows.
Crie um Dockerfile usando o exemplo de código a seguir:
FROM python:3.11 # install git RUN apt-get update && apt-get install -y git # get polaris RUN git clone https://github.com/apache/polaris.git WORKDIR /polaris RUN pip install --upgrade pip # install polaris cli RUN ./polaris --help
Na pasta em que o Dockerfile está localizado, crie a imagem do Docker para o Polaris CLI com o seguinte comando:
% docker build -t polaris-cli . 0.0s
Execute o contêiner do Docker e o terminal bash com o seguinte comando:
% docker run --rm -it polaris-cli /bin/bash root@ae4c8353b45f:/polaris#
Execute o código a seguir para atualizar o catálogo e definir a propriedade
enable.credential.vending
comotrue
:% docker run --rm -it polaris-cli /bin/bash root@ae4c8353b45f:/polaris# export CLIENT_ID=<client-id> export CLIENT_SECRET=<client-secret> export sfAccountUrl=https://<open_catalog_account_identifier>.snowflakecomputing.com export catalogName=<my-catalog> root@ae4c8353b45f:/polaris# ./polaris \ --base-url "${sfAccountUrl}/polaris" \ --client-id ${CLIENT_ID} \ --client-secret ${CLIENT_SECRET} \ catalogs \ update "${catalogName}" \ --set-property "enable.credential.vending"="true"
Execute o código a seguir para validar se o parâmetro
enable.credential.vending
foi configurado corretamente:root@ae4c8353b45f:/polaris# ./polaris \ --base-url "${sfAccountUrl}/polaris" \ --client-id ${CLIENT_ID} \ --client-secret ${CLIENT_SECRET} \ catalogs \ get "${catalogName}" {"type": "EXTERNAL", "name": "<my-catalog>", "properties": {"default-base-location": "s3://<bucket-name>/polaris/my-catalog-v2-storage/", "enable.credential.vending": "true"}, "createTimestamp": 1722547448827, "lastUpdateTimestamp": 1730906335286, "entityVersion": 3, "storageConfigInfo": {"storageType": "S3", "allowedLocations": ["s3://<bucket-name>/polaris/my-catalog-v2-storage/"], "roleArn": "arn:aws:iam::<aws-account-id>:role/<polaris-aws-role>"}}