ID Amazon Virtual Private Cloud pour la zone de préparation externe, la fonction externe et le volume externe¶
Dans le cadre de l’engagement continu de Snowflake à améliorer le contrôle des données quittant Snowflake, nous migrons nos points de contrôle de sortie vers un nouveau Virtual Private Cloud Amazon (VPC). Cela entraînera une modification de l’ID Amazon VPC utilisé par Snowflake lors de l’établissement de connexions sortantes pour les fonctions externes, les zones de préparation externes et les volumes externes.
Note
Les clients qui utilisent le stockage compatible Amazon S3 doivent vérifier s’ils ont des politiques susceptibles d’être affectées par ce changement, et mettre à jour leurs politiques en conséquence.
Les clients qui filtrent le trafic entrant dans leurs API Gateways ou leurs zones de préparation S3 sur la base de l’ID VPC publié, devront mettre à jour leurs politiques pour inclure la nouvelle version de l’ID VPC.
Pour obtenir la liste complète des IDs VPC qui doivent être mis sur liste d’autorisation, les clients doivent exécuter la fonction SYSTEM$GET_SNOWFLAKE_PLATFORM_INFO.
Modification de comportement¶
- Avant la modification:
La sortie de SYSTEM$GET_SNOWFLAKE_PLATFORM_INFO ne contient pas la propriété
snowflake-egress-vpc-ids
.- Après la modification:
La sortie de la fonction SYSTEM$GET_SNOWFLAKE_PLATFORM_INFO contient une nouvelle propriété
snowflake-egress-vpc-ids
qui comprend les propriétés enfantsid
,expires
etpurpose
.
La sortie de la fonction ressemble à :
{
"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"
}
]
}
Les clients doivent examiner le champ id
dans la propriété snowflake-egress-vpc-ids
et noter que les valeurs id
marquées comme IDs "purpose":"generic"
. generic
sont des IDs VPC qui devront être autorisés pour prendre en charge la fonctionnalité principale de Snowflake.
Cette modification entrera en vigueur au cours de la semaine du 24 février 2025.
Note
La fonction renvoie une liste d’IDs VPC : l’ID VPC actuellement utilisés et les nouveaux ID(s) VPC. Les IDs VPC de snowflake-vpc-id
seront dupliqués dans snowflake-egress-vpc-ids
mais marqués comme "purpose":"generic"
. Tous les IDs VPC ayant un objectif générique doivent être autorisés dans les politiques.
La propriété expires
spécifie la date et l’heure jusqu’à laquelle la validité de l’ID VPC associé est garantie. Les clients doivent mettre à jour toute automatisation ou tout processus de requête de la fonction avant la date d’expiration afin de s’assurer qu’ils disposent des dernières informations sur les IDs VPC.
Les IDs VPC de sortie sont stables et leurs dates d’expiration sont automatiquement mises à jour et prolongées.
Il est possible que Snowflake change les IDs VPC à l’avenir, mais pas avant le 31 mars 2025. Cette information est principalement fournie à titre de référence ultérieure.
Les modifications suivantes doivent être apportées pour continuer à accéder aux fonctions suivantes de Snowflake :
- Zone de préparation externe et volumes:
Suivez les instructions de Autoriser les IDs Virtual Private Cloud pour spécifier des IDs VPC pour les zones de préparation externe ou les volumes externes.
- Fonctions externes:
Suivez les instructions de Sécurisez votre point de terminaison de l’API Gateway Amazon pour spécifier des IDs VPC pour les fonctions externes.
Chronologie¶
- Première zone de préparation:
À partir de la semaine du 24 février 2025, la fonction SYSTEM$GET_SNOWFLAKE_PLATFORM_INFO sera mise à jour dans tous les déploiements AWS pour inclure les nouveaux IDs VPC de sortie sous l’élément
snowflake-egress-vpc-ids
. Les clients peuvent commencer à mettre à jour leurs politiques S3 et l’API Gateway pour autoriser ces nouveaux IDs VPC.- Deuxième zone de préparation:
À partir de la semaine du 9 juin 2025 (contre le 24 mai 2025 auparavant), Snowflake entamera une transition progressive vers l’utilisation des nouveaux VPCs pour les zones de préparation externe, les fonctions externes et les volumes externes. Les clients doivent s’assurer que les mises à jour de leurs politiques pour S3 et l’API Gateway sont terminées à cette date.
Questions fréquemment posées¶
Comment identifier les compartiments S3 pour les zones de préparation externe qui peuvent être impactés par ce changement ?¶
En utilisant le rôle ACCOUNTADMIN, exécutez la requête suivante pour identifier les zones de préparation externes affectées par la modification :
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;
Comment identifier les API Gateways qui peuvent être affectées par ce changement ?¶
À l’aide du rôle ACCOUNTADMIN, exécutez la requête suivante pour identifier les passerelles S3 concernées par la modification :
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;
Comment identifier les compartiments S3 pour le volume externe qui peuvent être impactés par ce changement ?¶
À l’aide du rôle ACCOUNTADMIN, exécutez la requête suivante pour identifier les compartiments S3 concernés par la modification :
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;
Comment identifier les politiques AWS qui peuvent contenir l’ID VPC actuel de Snowflake ?¶
Pour identifier les politiques potentiellement affectées par le changement, utilisez AWS CLI.
Exécutez la commande SYSTEM$GET_SNOWFLAKE_PLATFORM_INFO et notez l’ID VPC renvoyé dans Snowflake-vpc-id.
Exécutez le script suivant pour dresser la liste des politiques ARNs de IAM et des IDs d’API de API Gateways qui contiennent des politiques de ressources avec l’ID VPC Snowflake actuel. Notez que l’exécution du script peut prendre du temps.
Passez en revue les politiques annoncées et déterminez celles qui doivent être mises à jour pour inclure un ou des ID VPC supplémentaire(s), conformément aux instructions ci-dessus.
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
Réf : 1910