ID do Amazon Virtual Private Cloud para estágio externo, função externa e volume externo¶
Como parte do compromisso contínuo da Snowflake de aprimorar o controle sobre os dados que saem da Snowflake, estamos migrando nossos pontos de controle de saída para uma nova Amazon Virtual Private Cloud (VPC). Isso resultará em uma alteração no ID de VPC Amazon usado pelo Snowflake ao fazer conexões de saída para funções externas, estágios externos e volumes externos.
Nota
Os clientes que usam armazenamento compatível com Amazon S3 devem confirmar se têm alguma política que possa ser afetada por essa alteração e atualizar suas políticas de acordo.
Os clientes que filtram o tráfego que entra em seus gateways da API ou estágios S3 com base no ID de VPC publicado precisarão atualizar suas políticas para incluir o novo ID de VPC.
Para obter a lista completa de IDs de VPC que precisam ser incluídos na lista de permissões, os clientes devem executar a função SYSTEM$GET_SNOWFLAKE_PLATFORM_INFO.
Mudança de comportamento¶
- Antes da mudança:
A saída de SYSTEM$GET_SNOWFLAKE_PLATFORM_INFO não contém a propriedade
snowflake-egress-vpc-ids
.- Após a mudança:
A saída da função SYSTEM$GET_SNOWFLAKE_PLATFORM_INFO contém uma nova propriedade
snowflake-egress-vpc-ids
que inclui as propriedades filhasid
,expires
epurpose
.
A saída da função é semelhante a:
{
"snowflake-vpc-id": ["<existing VPC ID>"],
"snowflake-egress-vpc-ids": [
{
"id": "<existing VPC ID>",
"expires": "2025-03-01T00:00:00",
"purpose": "generic"
},
{
"id": "<new VPC ID>",
"expires": "2025-03-01T00:00:00",
"purpose": "generic"
}
]
}
Os clientes devem examinar o campo id
dentro da propriedade snowflake-egress-vpc-ids
e observar os valores id
marcados como "purpose":"generic"
. IDs generic
são IDs VPC que precisarão ser listados para dar suporte à funcionalidade principal do Snowflake.
Essa alteração entrará em vigor na semana de 24 de fevereiro de 2025.
Nota
A função retorna uma lista de IDs de VPC: o ID de VPC usado no momento e o(s) novo(s) ID(s) de VPC. IDs de VPC de snowflake-vpc-id
será duplicado em snowflake-egress-vpc-ids
, mas marcado como "purpose":"generic"
. Todos os IDs de VPC com a finalidade genérica devem ser listados como permitidos nas políticas.
A propriedade expires
especifica a data e a hora até as quais o ID de VPC associado tem a garantia de permanecer válido. Os clientes devem atualizar qualquer automação ou processo para consultar a função antes da data de expiração para garantir que tenham as informações mais recentes sobre IDs de VPC atuais.
IDs do VPC de saída são estáveis e suas datas de validade são automaticamente atualizadas e estendidas.
Embora a Snowflake possa precisar mudar IDs de VPC no futuro, não há planos de mudança antes de 31 de março de 2025. Essas informações servem principalmente para referência futura.
As seguintes alterações devem ser feitas para continuar a acessar os seguintes recursos do Snowflake:
- Estágio e volumes externos:
Siga as instruções em Permissão para IDs do Virtual Private Cloud para especificar IDs de VPC para estágios externos ou volumes externos.
- Funções externas:
Siga as instruções em Como proteger seu ponto de extremidade do Amazon API Gateway para especificar IDs de VPC para funções externas.
Linha do tempo¶
- Estágio um:
A partir da semana de 24 de fevereiro de 2025, a função SYSTEM$GET_SNOWFLAKE_PLATFORM_INFO será atualizada em todas as implantações do AWS para incluir os novos IDs de VPC de entrada no elemento
snowflake-egress-vpc-ids
. Os clientes podem começar a atualizar suas políticas do API Gateway e S3 para permitir a inclusão desses novos IDs de VPC.- Estágio dois:
A partir da semana de 9 de junho de 2025 (anteriormente 24 de maio de 2025), o Snowflake iniciará uma transição gradual para usar o novo VPCs para estágios externos, funções externas e volumes externos. Os clientes devem garantir que suas atualizações de política do S3 e do API Gateway sejam concluídas até essa data.
Perguntas frequentes¶
Como posso encontrar buckets S3 para estágios externos que podem ser afetados por essa alteração?¶
Usando a função ACCOUNTADMIN, execute a seguinte consulta para identificar os estágios externos que são afetados pela alteração:
USE ROLE ACCOUNTADMIN;
SELECT stage_url, stage_region, stage_owner, stage_catalog, stage_schema
FROM SNOWFLAKE.ACCOUNT_USAGE.STAGES
WHERE STARTSWITH(stage_url, 's3')
AND stage_url IS NOT NULL
AND deleted IS NULL;
Como posso encontrar API Gateways que podem ser afetados por essa mudança?¶
Usando a função ACCOUNTADMIN, execute a seguinte consulta para identificar os gateways S3 que são afetados pela alteração:
USE ROLE ACCOUNTADMIN;
SELECT function_name, function_definition, function_owner, function_catalog, function_schema
FROM SNOWFLAKE.ACCOUNT_USAGE.FUNCTIONS
WHERE function_language = 'EXTERNAL'
AND function_definition ILIKE '%.execute-api.%.amazonaws.com%'
AND deleted IS NULL;
Como posso encontrar buckets S3 para volumes externos que podem ser afetados por essa alteração?¶
Usando a função ACCOUNTADMIN, execute a seguinte consulta para identificar os buckets S3 que são afetados pela alteração:
use role accountadmin;
DECLARE
res1 RESULTSET;
res2 RESULTSET;
sql_vol VARCHAR;
rpt VARIANT;
rpt_int VARIANT;
BEGIN
rpt := object_construct();
sql_vol := 'SELECT PROPERTY, VALUE:"NAME"::VARCHAR as NAME, VALUE:"STORAGE_ALLOWED_LOCATIONS"::VARCHAR as S3_PATH FROM (
SELECT PARSE_JSON(T."property_value") AS VALUE, T."property" as PROPERTY
FROM TABLE(RESULT_SCAN(last_query_id())) T
WHERE T."property_type" = \'String\'
AND T."property" != \'ACTIVE\'
AND VALUE:"STORAGE_PROVIDER"=\'S3\')
;';
show external volumes;
LET c1 CURSOR FOR SELECT * FROM TABLE(RESULT_SCAN(last_query_id()));
OPEN c1;
FOR record IN c1 DO
res1 := (execute immediate 'describe external volume ' || record."name");
res2 := (execute immediate :sql_vol);
rpt_int := object_construct();
let c2 CURSOR for res2;
open c2;
for inner_record in c2 do
rpt_int := object_insert( rpt_int, inner_record.NAME, inner_record.S3_PATH);
end for;
rpt := object_insert( rpt, record."name", rpt_int );
END FOR;
RETURN rpt;
END;
Como posso encontrar as políticas do AWS que podem conter o ID de VPC Snowflake atual?¶
Para identificar as políticas potencialmente afetadas pela alteração, use o AWS CLI.
Execute o comando SYSTEM$GET_SNOWFLAKE_PLATFORM_INFO e observe o ID de VPC retornado em snowflake-vpc-id.
Execute o script a seguir para listar de ARNs de políticas IAM e os IDs da API de API Gateways que contêm políticas de recursos com o ID VPC Snowflake atual. Observe que a execução do script pode levar algum tempo.
Analise as políticas listadas e determine quais precisam ser atualizadas para incluir ID(s) de VPC adicional(is), conforme as instruções acima.
SNOWFLAKE_VPC_ID="<VPC ID returned in snowflake-vpc-id>"
# List ARNs of IAM policies that contain the current Snowflake VPC ID.
aws iam list-policies --scope Local --query 'Policies[*].Arn' --output text | tr '\t' '\n' | while read -r policy_arn; do
version_id=$(aws iam get-policy --policy-arn "${policy_arn}" --query 'Policy.DefaultVersionId' --output text)
aws iam get-policy-version --policy-arn "${policy_arn}" --version-id "${version_id}" | grep -q "${SNOWFLAKE_VPC_ID}" && echo "${policy_arn}"
done
# List API IDs of API Gateways that contain resource policies with the current Snowflake VPC ID.
aws apigateway get-rest-apis --query 'items[*].id' --output text --profile | tr '\t' '\n' | while read -r api_id; do
aws apigateway get-rest-api --rest-api-id "${api_id}" --query 'policy' --output text | grep -q "${SNOWFLAKE_VPC_ID}" && echo "${api_id}"
done
Ref: 1910