Opção 3: Configuração de credenciais de usuário AWS IAM para acessar o Amazon S3

Esta seção descreve como configurar uma política de segurança de um bucket S3 e credenciais de acesso de um usuário IAM específico para acessar um estágio externo de forma segura.

Neste tópico:

Etapa 1: Configurar uma política de acesso ao bucket S3

Requisitos de controle de acesso da AWS

O Snowflake requer as seguintes permissões em uma pasta e bucket S3 para poder acessar os arquivos na pasta (e em qualquer subpasta):

  • s3:GetBucketLocation

  • s3:GetObject

  • s3:GetObjectVersion

  • s3:ListBucket

Nota

As seguintes permissões adicionais são necessárias para realizar ações SQL adicionais:

Permissão

Ação SQL

s3:PutObject

Descarregue os arquivos no bucket.

s3:DeleteObject

Ou purgue automaticamente os arquivos do estágio após um carregamento bem-sucedido ou execute instruções REMOVE para remover os arquivos manualmente.

Como prática recomendada, a Snowflake sugere a criação de um usuário e política IAM para o acesso do Snowflake ao bucket S3. Você pode então anexar a política ao usuário e usar as credenciais de segurança geradas pela AWS para que o usuário acesse os arquivos no bucket.

Criação de uma política IAM

As seguintes instruções passo a passo descrevem como configurar as permissões de acesso ao Snowflake em seu Console de gerenciamento AWS para que você possa usar um bucket S3 para carregar e descarregar dados:

  1. Faça login no Console de gerenciamento AWS.

  2. No painel inicial, escolha Identity & Access Management (IAM):

    Identity & Access Management in AWS Management Console
  3. Escolha Account settings no painel de navegação à esquerda.

  4. Expanda a lista Security Token Service Regions, encontre a região AWS correspondente à região onde sua conta está localizada e escolha Activate se o status for Inactive.

  5. Escolha Policies no painel de navegação à esquerda.

  6. Clique em Create Policy:

    Create Policy button on Policies page
  7. Clique na guia JSON.

  8. Adicione o documento de política que permitirá ao Snowflake acessar o bucket S3 e a pasta.

    A seguinte política (em formato JSON) fornece ao Snowflake as permissões de acesso necessárias para o caminho especificado do bucket e da pasta. Você pode copiar e colar o texto no editor de políticas:

    Nota

    • Certifique-se de substituir bucket e prefix pelo nome real do bucket e prefixo do caminho da pasta.

    • Os Nomes de recurso da Amazon (ARN) para buckets em regiões governamentais têm um prefixo arn:aws-us-gov:s3:::.

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                  "s3:PutObject",
                  "s3:GetObject",
                  "s3:GetObjectVersion",
                  "s3:DeleteObject",
                  "s3:DeleteObjectVersion"
                ],
                "Resource": "arn:aws:s3:::<bucket_name>/<prefix>/*"
            },
            {
                "Effect": "Allow",
                "Action": [
                    "s3:ListBucket",
                    "s3:GetBucketLocation"
                ],
                "Resource": "arn:aws:s3:::<bucket_name>",
                "Condition": {
                    "StringLike": {
                        "s3:prefix": [
                            "<prefix>/*"
                        ]
                    }
                }
            }
        ]
    }
    
    Copy

    Nota

    Definir a condição "s3:prefix": como ["*"] ou ["<caminho>/*"] concede acesso a todos os prefixos no bucket ou caminho no bucket especificado, respectivamente.

  9. Clique em Review policy.

  10. Digite o nome da política (por exemplo, snowflake_access) e uma descrição opcional. Em seguida, clique em Create policy para criar a política.

    Create Policy button in Review Policy page

Etapa 2: Criar um usuário AWS IAM

  1. Escolha Users no painel de navegação à esquerda, depois clique em Add user.

  2. Na página Add user, digite um novo nome de usuário (por exemplo, snowflake1). Selecione Programmatic access como o tipo de acesso, depois clique em Next:

    Add user page
  3. Clique em Attach existing policies directly e selecione a política que você criou anteriormente. Depois clique em Next:

    Set permissions page
  4. Revise os detalhes do usuário, depois clique em Create user.

    Review user details page
  5. Registre as credenciais de acesso. A maneira mais fácil de registrá-las é clicar em Download Credentials para gravá-las em um arquivo (por exemplo, credentials.csv)

    Attach policy on the user details page

    Atenção

    Ao sair dessa página, a chave de acesso secreta não estará mais disponível em nenhum lugar do console AWS. Se você perder a chave, deve gerar um novo conjunto de credenciais do usuário.

Agora você:

  • Criou uma política IAM para um bucket.

  • Criou um usuário IAM e gerou credenciais de acesso para o usuário.

  • Anexou a política ao usuário.

Com a chave AWS e a chave secreta do bucket S3, você tem as credenciais necessárias para acessar seu bucket S3 no Snowflake usando um estágio externo.

Nota

O Snowflake armazena em cache as credenciais temporárias por um período que não pode exceder o tempo de expiração de 60 minutos. Se você revogar o acesso do Snowflake, os usuários podem ser capazes de listar arquivos e carregar dados a partir do local de armazenamento em nuvem até que o cache expire.

Etapa 3: Criar um estágio externo (ou seja, S3)

Crie um estágio externo que faça referência às credenciais AWS que você criou.

Crie o estágio usando o comando CREATE STAGE ou você pode optar por alterar um estágio externo existente e definir a opção CREDENTIALS.

Nota

As credenciais são tratadas separadamente de outros parâmetros de estágio, tais como ENCRYPTION e FILE_FORMAT. O suporte para esses outros parâmetros é o mesmo independentemente das credenciais utilizadas para acessar seu bucket S3 externo:

Por exemplo, defina mydb.public como o esquema e banco de dados atual para a sessão do usuário e depois crie um estágio chamado my_S3_stage. Neste exemplo, o estágio faz referência ao bucket S3 e ao caminho mybucket/load/files. Os arquivos no bucket S3 são criptografados com criptografia do lado do servidor (AWS_SSE_KMS):

USE SCHEMA mydb.public;

CREATE OR REPLACE STAGE my_S3_stage
  URL='s3://mybucket/load/files/'
  CREDENTIALS=(AWS_KEY_ID='1a2b3c' AWS_SECRET_KEY='4x5y6z')
  ENCRYPTION=(TYPE='AWS_SSE_KMS' KMS_KEY_ID = 'aws/key');
Copy

Próximo: Criptografia de arquivo de dados da AWS