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 do 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 |
---|---|
|
Descarregue os arquivos no bucket. |
|
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:
Faça login no Console de gerenciamento AWS.
No painel inicial, escolha Identity & Access Management (IAM):
Escolha Account settings no painel de navegação à esquerda.
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.
Escolha Policies no painel de navegação à esquerda.
Clique em Create Policy:
Clique na guia JSON.
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
eprefix
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>/*" ] } } } ] }
Nota
Definir a condição
"s3:prefix":
como["*"]
ou["<caminho>/*"]
concede acesso a todos os prefixos no bucket ou caminho no bucket especificado, respectivamente.Clique em Review policy.
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.
Etapa 2: criar um usuário AWS IAM¶
Escolha Users no painel de navegação à esquerda, depois clique em Add user.
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:Clique em Attach existing policies directly e selecione a política que você criou anteriormente. Depois clique em Next:
Revise os detalhes do usuário, depois clique em Create user.
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
)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');