Amazon Virtual Private Cloud-ID für externen Stagingbereich, externe Funktion und externes Volumen¶
Im Rahmen des kontinuierlichen Engagements von Snowflake zur Verbesserung der Kontrolle über die Daten, die Snowflake verlassen, migrieren wir unsere Punkte zur Kontrolle des Datenaustritts in eine neue Amazon Virtual Private Cloud (VPC). Dies führt zu einer Änderung der Amazon VPC-ID, die von Snowflake verwendet wird, wenn ausgehende Verbindungen für externe Funktionen, externe Stagingbereiche und externe Volumes hergestellt werden.
Bemerkung
Kunden, die Amazon S3-kompatiblen Speicher verwenden, sollten überprüfen, ob sie über Richtlinien verfügen, die von dieser Änderung betroffen sein könnten, und ihre Richtlinien entsprechend aktualisieren.
Kunden, die den Datenverkehr, der in ihre API-Gateways oder S3-Stagingbereiche gelangt, auf der Grundlage der veröffentlichten VPC-ID filtern, müssen ihre Richtlinien aktualisieren, um die neue VPC-ID zu berücksichtigen.
Um die vollständige Liste der VPC-IDs zu erhalten, die in die Liste der zulässigen Einträge aufgenommen werden müssen, sollten Kunden die Funktion SYSTEM$GET_SNOWFLAKE_PLATFORM_INFO ausführen.
Verhaltensänderungen¶
- Vor der Änderung:
Die Ausgabe von SYSTEM$GET_SNOWFLAKE_PLATFORM_INFO enthält nicht die Eigenschaft
snowflake-egress-vpc-ids
.- Nach der Änderung:
Die Ausgabe der Funktion SYSTEM$GET_SNOWFLAKE_PLATFORM_INFO enthält eine neue Eigenschaft
snowflake-egress-vpc-ids
mit den untergeordneten Eigenschaftenid
,expires
undpurpose
.
Die Ausgabe der Funktion sieht folgendermaßen aus:
{
"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"
}
]
}
Kunden sollten das Feld id
innerhalb der Eigenschaft snowflake-egress-vpc-ids
überprüfen und die Werte von id
beachten, die als "purpose":"generic"
markiert sind. generic
-IDs sind VPC-IDs, die in die Liste der zulässigen Werte aufgenommen werden müssen, um die Kernfunktionen von Snowflake zu unterstützen.
Diese Änderung tritt in der Woche vom 24. Februar 2025 in Kraft.
Bemerkung
Die Funktion gibt eine Liste von VPC-IDs zurück: die aktuell verwendete VPC-ID und neue VPC-ID(s). VPC-IDs von snowflake-vpc-id
werden in snowflake-egress-vpc-ids
dupliziert, aber als "purpose":"generic"
markiert. Alle VPC-IDs mit dem allgemeinen Zweck müssen in den Richtlinien zugelassen werden.
Die Eigenschaft expires
gibt das Datum und die Uhrzeit an, bis zu der die zugehörige VPC-ID garantiert gültig bleibt. Kunden sollten alle Automatisierungen oder Prozesse zur Abfrage der Funktion vor dem Ablaufdatum aktualisieren, um sicherzustellen, dass sie die neuesten Informationen über die aktuellen VPC-IDs haben.
Die Ausgabe-VPC-IDs sind stabil und ihre Verfallsdaten werden automatisch aktualisiert und verlängert.
Es kann sein, dass Snowflake VPC-IDs in Zukunft ändern muss, aber vor dem 31. März 2025 ist dies nicht geplant. Diese Informationen sind in erster Linie für die Zukunft gedacht.
Die folgenden Änderungen müssen vorgenommen werden, damit Sie weiterhin Zugriff auf die folgenden Snowflake Features haben:
- Externer Stagingbereich und Volumen:
Folgen Sie den Anweisungen unter Zulassen von Virtual Private Cloud-IDs, um VPC-IDs für externe Stagingbereiche oder externe Volumes anzugeben.
- Externe Funktionen:
Folgen Sie den Anweisungen in Amazon API-Gateway-Endpunkt sichern, um VPC-IDs für externe Funktionen anzugeben.
Zeitleiste¶
- Phase eins:
Ab der Woche vom 24. Februar 2025 wird die Funktion SYSTEM$GET_SNOWFLAKE_PLATFORM_INFO in allen AWS-Bereitstellungen aktualisiert, um die neuen ausgehenden VPC-IDs unter dem Element
snowflake-egress-vpc-ids
aufzunehmen. Kunden können damit beginnen, ihre S3- und API-Gateway Richtlinien zu aktualisieren, um diese neuen VPC-IDs zuzulassen.- Phase zwei:
Ab der Woche des 9. Juni 2025 (vorher 24. Mai 2025) wird Snowflake schrittweise auf die Verwendung des neuen VPCs für externe Stagingbereiche, externe Funktionen und externe Volumes umgestellt. Kunden müssen sicherstellen, dass ihre S3- und API-Gateway-Richtlinien-Updates bis zu diesem Datum abgeschlossen sind.
Häufig gestellte Fragen¶
Wie kann ich S3-Buckets für externe Stagingbereiche finden, die von dieser Änderung betroffen sein können?¶
Führen Sie mit der Rolle ACCOUNTADMIN die folgende Abfrage aus, um die externen Stagingbereiche zu ermitteln, die von der Änderung betroffen sind:
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;
Wie kann ich API-Gateways finden, die von dieser Änderung betroffen sein können?¶
Führen Sie mit der Rolle ACCOUNTADMIN die folgende Abfrage aus, um die S3-Gateways zu identifizieren, die von der Änderung betroffen sind:
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;
Wie kann ich S3-Buckets für externe Volumes finden, die von dieser Änderung betroffen sein können?¶
Führen Sie mit der Rolle ACCOUNTADMIN die folgende Abfrage aus, um die S3 Buckets zu identifizieren, die von der Änderung betroffen sind:
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;
Wie kann ich AWS-Richtlinien finden, die möglicherweise die aktuelle Snowflake VPC-ID enthalten?¶
Um Richtlinien zu identifizieren, die möglicherweise von der Änderung betroffen sind, verwenden Sie die AWS CLI.
Führen Sie den Befehl SYSTEM$GET_SNOWFLAKE_PLATFORM_INFO aus und notieren Sie sich die VPC-ID, die in snowflake-vpc-id zurückgegeben wird.
Führen Sie das folgende Skript aus, um die ARNs von IAM-Richtlinien und die API-IDs von API-Gateways aufzulisten, die Ressourcenrichtlinien mit der aktuellen Snowflake VPC-ID enthalten. Bitte beachten Sie, dass die Ausführung des Skripts einige Zeit dauern kann.
Überprüfen Sie die aufgelisteten Richtlinien und bestimmen Sie, welche Richtlinien aktualisiert werden müssen, um eine oder mehrere zusätzliche VPC-IDs aufzunehmen, wie oben beschrieben.
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