AWS PrivateLink per Amazon S3 - Amazon Simple Storage Service

AWS PrivateLink per Amazon S3

Con AWS PrivateLink per Amazon S3, puoi eseguire il provisioning di endpoint VPC di interfaccia (endpoint di interfaccia) nel tuo virtual private cloud (VPC). Puoi accedere a questi endpoint direttamente da applicazioni On-Premise su VPN e AWS Direct Connect, o in un'altra Regione AWS su peering di VPC.

Gli endpoint di interfaccia sono rappresentati da una o più interfacce di rete elastiche (ENI) a cui vengono assegnati indirizzi IP privati dalle sottoreti nel VPC. Le richieste che vengono effettuate agli endpoint di interfaccia per Amazon S3 vengono instradate automaticamente ad Amazon S3 sulla rete Amazon. È inoltre possibile accedere agli endpoint di interfaccia nel VPC da applicazioni locali tramite AWS Direct Connect o AWS Virtual Private Network (AWS VPN). Per ulteriori informazioni su come connettere il VPC alla rete On-Premise, consulta la Guida per l'utente di AWS Direct Connect e la Guida per l'utente di AWS Site-to-Site VPN.

Per informazioni sulla creazione di endpoint di interfaccia, consulta Endpoint VPC di interfaccia (AWS PrivateLink) nella Guida di AWS PrivateLink.

Tipi di endpoint VPC per Amazon S3

Puoi utilizzare due tipi di endpoint VPC per accedere agli endpoint del gateway e agli endpoint di interfaccia di Simple Storage Service (Amazon S3) mediante AWS PrivateLink. Un endpoint gateway è un gateway che viene specificato nella tabella di routing per accedere ad Amazon S3 dal VPC tramite la rete AWS. Gli endpoint di interfaccia estendono la funzionalità degli endpoint gateway utilizzando IP privati per instradare le richieste ad Amazon S3 dall'interno del VPC, in locale, o da una Regione AWS utilizzando il peering VPC o AWS Transit Gateway. Per ulteriori informazioni, consulta Che cos'è il peering di VPC? e Transit Gateway e peering di VPC.

Gli endpoint di interfaccia sono compatibili con gli endpoint gateway. Se disponi di un endpoint gateway nel VPC, puoi utilizzare entrambi i tipi di endpoint nello stesso VPC.

Endpoint gateway per Amazon S3

Endpoint di interfaccia per Amazon S3

In entrambi i casi, il traffico di rete rimane sulla rete AWS.

Uso di indirizzi IP pubblici di Amazon S3

Uso di indirizzi IP privati del tuo VPC per accedere ad Amazon S3

Uso degli stessi nomi DNS di Simple Storage Service (Amazon S3)

Richiesta di nomi DNS di Simple Storage Service (Amazon S3) specifici per endpoint

Non consente l'accesso On-Premise

Consente l'accesso da On-Premise

Non consente l'accesso da un'altra Regione AWS

Come consentire l'accesso da un VPC in un'altra Regione AWS tramite peering VPC o AWS Transit Gateway

Non fatturata

Fatturata

Per ulteriori informazioni sugli endpoint gateway, consulta Endpoint VPC gateway nella Guida di AWS PrivateLink.

Le limitazioni VPC si applicano a AWS PrivateLink per Amazon S3. Per ulteriori informazioni, consulta Proprietà e limitazioni degli endpoint di interfaccia e Quote di AWS PrivateLink nella Guida di AWS PrivateLink. Inoltre, si applicano le limitazioni seguenti:

AWS PrivateLink per Amazon S3 non supporta quanto segue:

Creazione di un endpoint VPC

Per creare un endpoint di interfaccia VPC, consulta Creazione di un endpoint VPC nella Guida AWS PrivateLink.

Accesso agli endpoint di interfaccia di Amazon S3

Importante

Per accedere ad Amazon S3 tramite AWS PrivateLink, è necessario aggiornare le applicazioni in modo che utilizzino nomi DNS specifici degli endpoint.

Quando crei un endpoint di interfaccia, Amazon S3 genera due tipi di nomi DNS S3 specifici dell'endpoint: regionale e zonale.

  • I nomi DNS regionali includono un ID endpoint VPC univoco, un identificatore di servizio, la Regione AWS e vpce.amazonaws.com con il relativo nome. Ad esempio, per l'ID endpoint VPC vpce-1a2b3c4d, il nome DNS generato potrebbe essere simile a vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com.

  • I nomi DNS zonali includono la zona di disponibilità, ad esempio vpce-1a2b3c4d-5e6f-us-east-1a.s3.us-east-1.vpce.amazonaws.com. Puoi utilizzare questa opzione se l'architettura isola le zone di disponibilità. Ad esempio, puoi utilizzarla per il contenimento degli errori o per ridurre i costi di trasferimento dei dati a livello regionale.

I nomi DNS S3 specifici degli endpoint possono essere risolti dal dominio DNS pubblico S3.

Nota

Gli endpoint dell'interfaccia Amazon S3 non supportano la funzionalità DNS privata degli endpoint di interfaccia. Per ulteriori informazioni sul DNS privato per gli endpoint di interfaccia, consulta la Guida di AWS PrivateLink.

Accesso ai bucket e ai punti di accesso S3 dagli endpoint di interfaccia S3

Puoi utilizzare la AWS CLI o gli SDK AWS per accedere a bucket, punti di accesso S3 e API di controllo S3 tramite endpoint di interfaccia S3.

Nell'immagine seguente viene illustrata la scheda Dettagli della console VPC, in cui è possibile trovare il nome DNS di un endpoint VPC. In questo esempio, l'ID endpoint VPC (vpce-id) è vpce-0e25b8cdd720f900e e il nome DNS è *.vpce-0e25b8cdd720f900e-argc85vg.s3.us-east-1.vpce.amazonaws.com. Ricorda di sostituire * quando utilizzi il nome DNS. Ad esempio, per accedere a un bucket, usa un nome DNS simile a bucket.vpce-0e25b8cdd720f900e-argc85vg.s3.us-east-1.vpce.amazonaws.com.


        Schermata della scheda Dettagli dalla console VPC.

Per ulteriori informazioni su come visualizzare i nomi DNS specifici degli endpoint, consulta Visualizzazione della configurazione dei nomi DNS privati del servizio endpoint nella Guida per l'utente di VPC.

Utilizza i parametri --region e --endpoint-url per accedere ai bucket S3, ai punti di accesso S3 o alle API di controllo S3 tramite gli endpoint dell'interfaccia S3.

Esempio: utilizzo dell'URL dell'endpoint per elencare gli oggetti nel bucket

Nell'esempio seguente, sostituisci la regione us-east-1, il nome DNS dell'ID endpoint VPC vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com e il nome del bucket my-bucket con le informazioni appropriate.

aws s3 --region us-east-1 --endpoint-url https://bucket.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com ls s3://my-bucket/
Esempio: utilizzo dell'URL dell'endpoint per elencare gli oggetti da un punto di accesso

Nell'esempio seguente, sostituisci l'ARN us-east-1:123456789012:accesspoint/test, la regione us-east-1 e l'ID endpoint VPC vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com con le informazioni appropriate.

aws s3api list-objects-v2 --bucket arn:aws:s3:us-east-1:123456789012:accesspoint/test --region us-east-1 --endpoint-url https://accesspoint.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
Esempio: utilizzo dell'URL dell'endpoint per elencare i processi con controllo S3

Nell'esempio seguente, sostituisci la regione us-east-1, l'ID endpoint VPC vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com e l'ID account 12345678 con le informazioni appropriate.

aws s3control --region us-east-1 --endpoint-url https://control.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com list-jobs --account-id 12345678

Aggiorna gli SDK alla versione più recente e configura i client per utilizzare un URL endpoint per accedere a un bucket, un access point o un'API di controllo S3 tramite endpoint di interfaccia S3.

SDK for Python (Boto3)
Esempio: utilizzo di un URL endpoint per accedere a un bucket S3

Nell'esempio seguente, sostituisci la regione us-east-1 e l'ID endpoint VPC vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com con le informazioni appropriate.

s3_client = session.client( service_name='s3', region_name='us-east-1', endpoint_url='https://bucket.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com' )
Esempio: utilizzo di un URL endpoint per accedere a un access point S3

Nell'esempio seguente, sostituisci la regione us-east-1 e l'ID endpoint VPC vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com con le informazioni appropriate.

ap_client = session.client( service_name='s3', region_name='us-east-1', endpoint_url='https://accesspoint.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com' )
Esempio: utilizzo di un URL endpoint per accedere all'API di controllo S3

Nell'esempio seguente, sostituisci la regione us-east-1 e l'ID endpoint VPC vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com con le informazioni appropriate.

control_client = session.client( service_name='s3control', region_name='us-east-1', endpoint_url='https://control.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com' )
SDK for Java 1.x
Esempio: utilizzo di un URL endpoint per accedere a un bucket S3

Nell'esempio seguente, sostituire l'ID endpoint VPC vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com con le informazioni appropriate.

// bucket client final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withEndpointConfiguration( new AwsClientBuilder.EndpointConfiguration( "https://bucket.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com", Regions.DEFAULT_REGION.getName() ) ).build(); List<Bucket> buckets = s3.listBuckets();
Esempio: utilizzo di un URL endpoint per accedere a un access point S3

Nell'esempio seguente, sostituire l'ID endpoint VPC vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com e ARN us-east-1:123456789012:accesspoint/prod con le informazioni appropriate.

// accesspoint client final AmazonS3 s3accesspoint = AmazonS3ClientBuilder.standard().withEndpointConfiguration( new AwsClientBuilder.EndpointConfiguration( "https://accesspoint.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com", Regions.DEFAULT_REGION.getName() ) ).build(); ObjectListing objects = s3accesspoint.listObjects("arn:aws:s3:us-east-1:123456789012:accesspoint/prod");
Esempio: utilizzo di un URL endpoint per accedere all'API di controllo S3

Nell'esempio seguente, sostituire l'ID endpoint VPC vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com con le informazioni appropriate.

// control client final AWSS3Control s3control = AWSS3ControlClient.builder().withEndpointConfiguration( new AwsClientBuilder.EndpointConfiguration( "https://control.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com", Regions.DEFAULT_REGION.getName() ) ).build(); final ListJobsResult jobs = s3control.listJobs(new ListJobsRequest());
SDK for Java 2.x
Esempio: utilizzo di un URL endpoint per accedere a un bucket S3

Nell'esempio seguente, sostituire l'ID endpoint VPC vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com e la regione Region.US_EAST_1 con le informazioni appropriate.

// bucket client Region region = Region.US_EAST_1; s3Client = S3Client.builder().region(region) .endpointOverride(URI.create("https://bucket.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com")) .build()
Esempio: utilizzo di un URL endpoint per accedere a un access point S3

Nell'esempio seguente, sostituire l'ID endpoint VPC vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com e la regione Region.US_EAST_1 con le informazioni appropriate.

// accesspoint client Region region = Region.US_EAST_1; s3Client = S3Client.builder().region(region) .endpointOverride(URI.create("https://accesspoint.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com")) .build()
Esempio: utilizzo di un URL endpoint per accedere all'API di controllo S3

Nell'esempio seguente, sostituire l'ID endpoint VPC vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com e la regione Region.US_EAST_1 con le informazioni appropriate.

// control client Region region = Region.US_EAST_1; s3ControlClient = S3ControlClient.builder().region(region) .endpointOverride(URI.create("https://control.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com")) .build()

Aggiornamento di una configurazione DNS locale

Quando si utilizzano nomi DNS specifici degli endpoint per accedere agli endpoint di interfaccia per Amazon S3, non è necessario aggiornare il resolver DNS locale. Puoi risolvere il nome DNS specifico dell'endpoint con l'indirizzo IP privato dell'endpoint di interfaccia dal dominio DNS Amazon S3 pubblico.

Utilizzo degli endpoint di interfaccia per accedere ad Amazon S3 senza un endpoint gateway o un gateway Internet nel VPC

Gli endpoint di interfaccia nel VPC possono instradare sia le applicazioni nel VPC che le applicazioni locali ad Amazon S3 sulla rete Amazon, come illustrato nel diagramma seguente.


          Diagramma di flusso dei dati che mostra l'accesso dalle app On-Premise e nel VPC a S3 utilizzando un endpoint di interfaccia e AWS PrivateLink.

Il diagramma illustra quanto segue:

  • La rete locale utilizza AWS Direct Connect o AWS VPN per connettersi a VPC A.

  • Le applicazioni in locale e in VPC A utilizzano nomi DNS specifici degli endpoint per accedere ad Amazon S3 tramite l'endpoint di interfaccia S3.

  • Le applicazioni On-Premise inviano dati all'endpoint di interfaccia nel VPC tramite AWS Direct Connect (oAWS VPN ). AWS PrivateLink sposta i dati dall'endpoint di interfaccia ad Amazon S3 sulla rete AWS.

  • Anche le applicazioni nel VPC inviano traffico all'endpoint di interfaccia. AWS PrivateLink sposta i dati dall'endpoint di interfaccia ad Amazon S3 sulla rete AWS.

Utilizzo di endpoint gateway e endpoint di interfaccia insieme nello stesso VPC per accedere ad Amazon S3

Puoi creare endpoint di interfaccia e mantenere l'endpoint gateway esistente nello stesso VPC, come illustrato nel diagramma seguente. In questo modo, si consente alle applicazioni nel VPC di continuare ad accedere ad Amazon S3 tramite l'endpoint gateway senza essere fatturate. Quindi, solo le applicazioni On-Premise utilizzerebbero gli endpoint di interfaccia per accedere ad Amazon S3. Per accedere a S3 in questo modo, è necessario aggiornare le applicazioni On-Premise per utilizzare nomi DNS specifici degli endpoint per Amazon S3.


            Diagramma di flusso dei dati che mostra l'accesso a S3 utilizzando gli endpoint gateway e gli endpoint di interfaccia insieme.

Il diagramma illustra quanto segue:

  • Le applicazioni On-Premise utilizzano nomi DNS specifici dell'endpoint per inviare dati all'endpoint di interfaccia nel VPC tramite AWS Direct Connect (o AWS VPN). AWS PrivateLink sposta i dati dall'endpoint di interfaccia ad Amazon S3 sulla rete AWS.

  • Utilizzando i nomi Amazon S3 regionali predefiniti, le applicazioni nel VPC inviano dati all'endpoint gateway che si connette ad Amazon S3 tramite la rete AWS.

Per ulteriori informazioni sugli endpoint gateway, consulta Endpoint VPC gateway nella Guida per l'utente di VPC.

Creazione di una policy per l'endpoint VPC per Amazon S3

Puoi allegare una policy di endpoint all'endpoint VPC che controlla l'accesso ad Amazon S3. Questa policy specifica le informazioni riportate di seguito:

  • Il principale AWS Identity and Access Management (IAM) che può eseguire operazioni

  • Le operazioni che possono essere eseguite

  • Le risorse sui cui si possono eseguire operazioni

Puoi utilizzare le policy del bucket di Amazon S3 anche per limitare l'accesso a bucket specifici da un endpoint VPC specifico utilizzando la condizione aws:sourceVpce nella policy del bucket. Negli esempi seguenti vengono illustrate le policy che limitano l'accesso a un bucket o a un endpoint.

Importante
  • Quando si applicano le policy del bucket Amazon S3 per gli endpoint VPC descritti in questa sezione, può capitare di bloccare involontariamente l'accesso al bucket. Le autorizzazioni del bucket che hanno lo scopo di limitare l'accesso del bucket a connessioni originate dall'endpoint VPC possono bloccare tutte le connessioni al bucket. Per informazioni su come risolvere questo problema, consulta La policy del bucket ha l'ID del VPC o dell'endpoint VPC sbagliato. Come posso correggere la policy in modo da poter accedere al bucket? nel Knowledge Center di AWS Support.

  • Prima di utilizzare la policy di esempio seguente, sostituire l'ID endpoint VPC con un valore appropriato per il caso d'uso. In caso contrario, non sarà possibile accedere al bucket.

  • Questa policy disabilita l'accesso alla console al bucket specificato in quanto le richieste della console non provengono dall'endpoint VPC specificato.

Puoi creare una policy di endpoint che limita l'accesso solo a bucket Amazon S3 specifici. Ciò è utile se hai altri servizi AWS nel VPC che utilizzano bucket. La seguente policy del bucket limita l'accesso solo a DOC-EXAMPLE-BUCKET1. Sostituisci DOC-EXAMPLE-BUCKET1 con il nome del tuo bucket.

{ "Version": "2012-10-17", "Id": "Policy1415115909151", "Statement": [ { "Sid": "Access-to-specific-bucket-only", "Principal": "*", "Action": [ "s3:GetObject", "s3:PutObject" ], "Effect": "Allow", "Resource": ["arn:aws:s3:::DOC-EXAMPLE-BUCKET1", "arn:aws:s3:::DOC-EXAMPLE-BUCKET1/*"] } ] }

Puoi creare una policy che limita l'accesso solo ai bucket S3 in un Account AWS specifico. Utilizza questa opzione per impedire ai client all'interno del VPC di accedere ai bucket che non sono di tua proprietà. Nell'esempio seguente viene creata una policy che limita l'accesso alle risorse di proprietà di un singolo ID Account AWS, 111122223333.

{ "Statement": [ { "Sid": "Access-to-bucket-in-specific-account-only", "Principal": "*", "Action": [ "s3:GetObject", "s3:PutObject" ], "Effect": "Deny", "Resource": "arn:aws:s3:::*", "Condition": { "StringNotEquals": { "aws:ResourceAccount": "111122223333" } } } ] }
Nota

Puoi utilizzare la chiave aws:ResourceAccount o s3:ResourceAccount nella policy IAM per specificare l'ID dell'Account AWS della risorsa a cui stai accedendo. Ricordare, tuttavia, che alcuni servizi AWS si basano sull'accesso a bucket gestiti da AWS. Pertanto, l'utilizzo di aws:ResourceAccount o della chiave s3:ResourceAccount nella policy IAM potrebbe anche influire sull'accesso a queste risorse.

Esempio: limitazione dell'accesso a un endpoint VPC specifico nella policy del bucket S3

La seguente policy del bucket Amazon S3 consente l'accesso a un bucket specifico, DOC-EXAMPLE-BUCKET2, solo dall'endpoint vpce-1a2b3c4d. La policy nega l'accesso al bucket se l'endpoint specificato non è in uso. La condizione aws:sourceVpce viene utilizzata per specificare l'endpoint e non richiede un Amazon Resource Name (ARN) per la risorsa dell'endpoint VPC, ma solo l'ID dell'endpoint. Sostituisci DOC-EXAMPLE-BUCKET2 e vpce-1a2b3c4d con un nome bucket e un endpoint reali.

{ "Version": "2012-10-17", "Id": "Policy1415115909152", "Statement": [ { "Sid": "Access-to-specific-VPCE-only", "Principal": "*", "Action": "s3:*", "Effect": "Deny", "Resource": ["arn:aws:s3:::DOC-EXAMPLE-BUCKET2", "arn:aws:s3:::DOC-EXAMPLE-BUCKET2/*"], "Condition": {"StringNotEquals": {"aws:sourceVpce": "vpce-1a2b3c4d"}} } ] }

Per altri esempi di policy, consulta Endpoint per Amazon S3 nella Guida per l'utente di VPC.

Per maggiori informazioni sulla connettività VPC, consulta Opzioni di connettività da rete a VPC nel whitepaper AWS Opzioni di connettività di Amazon Virtual Private Cloud.