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

  1. Entre no Open Catalog.

  2. No menu à esquerda, selecione Catálogos.

  3. Na lista de catálogos, selecione o catálogo para o qual deseja habilitar o fornecimento de credenciais.

  4. Na guia Detalhes do catálogo, em Detalhes de armazenamento, em Fornecimento de credenciais, selecione o ícone Editar.

    Captura de tela que mostra o ícone Editar para habilitar ou desabilitar o fornecimento de credenciais.

  5. 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

  1. 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.

  2. 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.

  3. 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.

  4. 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 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:

  1. Clone o repositório GitHub do Apache Polaris™ executando o seguinte comando:

    git clone https://github.com/apache/polaris.git
    
    Copy

    Para obter instruções sobre como clonar um repositório GitHub, consulte Clonagem de um repositório.

  2. 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>
    
    Copy

    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.

  3. 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"
    
    Copy

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.

  1. 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
    
    Copy
  2. 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
    
    Copy
  3. 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# 
    
    Copy
  4. Execute o código a seguir para atualizar o catálogo e definir a propriedade enable.credential.vending como true:

    % 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"
    
    Copy
  5. 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>"}}
    
    Copy