Come posso limitare l'accesso al mio bucket Amazon S3 utilizzando endpoint VPC o indirizzi IP specifici?

4 minuti di lettura
0

Desidero bloccare tutto il traffico che non proviene da uno specifico endpoint cloud privato virtuale (VPC) Amazon o da determinati indirizzi IP. In alternativa, sto utilizzando un bucket Amazon Simple Storage Service (Amazon S3) per ospitare un sito Web statico. Il sito Web deve essere accessibile da endpoint VPC o indirizzi IP specifici.

Risoluzione

Avvertenza: le policy dei bucket illustrate negli esempi presenti in questo articolo negano esplicitamente l'accesso a qualsiasi richiesta al di fuori degli endpoint VPC o degli indirizzi IP consentiti. Assicurati di esaminare attentamente la policy del bucket prima di salvarla.

Utilizza una policy del bucket per specificare quali endpoint VPC, indirizzi IP di origine VPC o indirizzi IP esterni possono accedere al bucket S3.

Nota: un indirizzo IP di origine VPC è un indirizzo IP privato all'interno di un VPC. Gli indirizzi privati non sono raggiungibili tramite Internet e possono essere utilizzati per la comunicazione tra le istanze presenti nel tuo VPC. Ad esempio, un indirizzo IP privato può essere l'indirizzo IP privato di un'istanza Amazon Elastic Compute Cloud (Amazon EC2).

Un indirizzo IP esterno è un indirizzo IP pubblico che può provenire dall'interno di un VPC o dall'esterno di un VPC. Ad esempio, un indirizzo IP esterno può essere l'indirizzo IP elastico o pubblico di un'istanza Amazon Elastic Compute Cloud (Amazon EC2). In alternativa, l'indirizzo IP esterno può essere l'indirizzo IP del gateway NAT o del server proxy di un VPC.

Il seguente esempio di policy del bucket blocca il traffico verso il bucket a meno che la richiesta non provenga da endpoint VPC specificati (aws:sourceVpce):

{
  "Id": "VPCe",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VPCe",
      "Action": "s3:*",
      "Effect": "Deny",
      "Resource": [
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET",
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
      ],
      "Condition": {
        "StringNotEquals": {
          "aws:SourceVpce": [
            "vpce-1111111",
            "vpce-2222222"
          ]
        }
      },
      "Principal": "*"
    }
  ]
}

Nota:

Nel seguente esempio di policy del bucket viene bloccato il traffico verso il bucket a meno che la richiesta non provenga da indirizzi IP privati specificati (aws:VpcSourceIp):

{
  "Id": "VpcSourceIp",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VpcSourceIp",
      "Action": "s3:*",
      "Effect": "Deny",
      "Resource": [
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET",
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
      ],
      "Condition": {
        "NotIpAddress": {
          "aws:VpcSourceIp": [
            "10.1.1.1/32",
            "172.1.1.1/32"
          ]
        }
      },
      "Principal": "*"
    }
  ]
}

Nota: per utilizzare questa policy con la condizione aws:VpcSourceIP devi associare un endpoint VPC per Amazon S3. L'endpoint VPC deve essere associato alla tabella di routing della sottorete dell'istanza EC2 e trovarsi nella stessa Regione AWS del bucket.

Il seguente esempio di policy del bucket blocca il traffico verso il bucket a meno che la richiesta non provenga da indirizzi IP esterni specificati (aws:SourceIp):

{
  "Id": "SourceIP",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "SourceIP",
      "Action": "s3:*",
      "Effect": "Deny",
      "Resource": [
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET",
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
      ],
      "Condition": {
        "NotIpAddress": {
          "aws:SourceIp": [
            "11.11.11.11/32",
            "22.22.22.22/32"
          ]
        }
      },
      "Principal": "*"
    }
  ]
}

Avvertenza: questi esempi di policy del bucket negano esplicitamente l'accesso a qualsiasi richiesta al di fuori degli endpoint VPC o degli indirizzi IP consentiti. Anche all'utente che ha inserito la policy del bucket può essere negato l'accesso al bucket qualora l'utente non soddisfi le condizioni. Pertanto, assicurati di esaminare attentamente la policy del bucket prima di salvarla. Se vieni bloccato accidentalmente, consulta la sezione Ho negato accidentalmente a tutti l’accesso al mio bucket Amazon S3 bucket. Come posso riottenere l’accesso?

Se devi consentire a utenti specifici (all'interno dello stesso account AWS) l'accesso al bucket, includi la seguente dichiarazione nel blocco Condizione:

  • AROAEXAMPLEID è l'ID di un ruolo IAM che desideri consentire
  • AIDAEXAMPLEID è l'ID di un utente IAM che desideri consentire
  • 111111111111 è l'ID dell'account AWS del bucket, che rappresenta le credenziali dell'utente root dell'account AWS

Ad esempio:

"Condition": {
            "StringNotLike": {
                "aws:userId": [
                    "AROAEXAMPLEID:*",
                    "AIDAEXAMPLEID",
                    "111111111111"
                ]
            }
        }

per ulteriori informazioni sulla concessione dell'accesso a ruoli IAM specifici, consulta la sezione Come limitare l’accesso al bucket Amazon S3 a un ruolo IAM specifico.

Informazioni correlate

Endpoint VPC

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa