Come posso risolvere gli errori 403 Access Denied dal mio bucket Amazon S3 in cui tutte le risorse provengono dallo stesso account AWS?

5 minuti di lettura
0

Voglio accedere al mio bucket Amazon Simple Storage Service (Amazon S3). Tutte le risorse interessate provengono dallo stesso account AWS. Tuttavia, ricevo un errore "403 Access Denied".

Breve descrizione

Se esegui una richiesta vietata al tuo bucket Amazon S3, il servizio restituisce un errore "403 Access Denied". Per risolvere manualmente gli errori 403 di accesso negato, vedi Come faccio a risolvere gli errori 403 di accesso negato da Amazon S3?

Puoi anche utilizzare il runbook AWSSupport-TroubleshootS3AccessSameAccount di AWS Systems Manager per diagnosticare i problemi di accesso negato dal tuo bucket S3. Il runbook valuta il livello di accesso concesso al richiedente sulla tua risorsa S3 per tutte le risorse pertinenti dello stesso account AWS. Ciò comprende le politiche di accesso, utente e risorse associate alla risorsa Amazon S3. Include anche l'utente o il ruolo di AWS Identity and Access Management (IAM) specificato nei parametri di input.

Nota: AWSSupport-TroubleshootS3AccessSameAccount non valuta le autorizzazioni per le risorse cross-account. Inoltre, il richiedente deve avere lo stesso account AWS del bucket o dell'oggetto Amazon S3.

Risoluzione

Passaggi richiesti

Segui questi passaggi per eseguire il runbook AWSSupport-TroubleshootS3AccessSameAccount dalla console di Systems Manager:

1.    Apri la console di Systems Manager.

2.    Nel riquadro di navigazione, scegli Automazione.

3.    Scegli Esegui automazione.

4.    In Scegli documento, scegli la scheda Owned by Amazon.

5.    Nella barra di ricerca dei documenti di Automation, scegli il filtro del Prefisso del nome del documento dal menu a tendina. Quindi, scegli Equals dal menu a tendina e inserisci AWSSupport-TroubleshootS3AccessSameAccount. Quindi, premi Invio.

6.    Seleziona AWSSupport-TroubleshootS3AccessSameAccount.

7.    Scegli Avanti.

8.    Seleziona Esecuzione semplice.

9.    Per S3ResourceArn, inserisci l'ARN del bucket o dell'oggetto S3 che desideri risolvere. Ad esempio, per testare il caricamento o il download di un oggetto.

arn:aws:s3:::bucket_name/key_name
  1. Per S3Action, scegli l'azione S3 che desideri venga valutata dal runbook.

11.    Per RequesterARN, inserisci l'utente o il ruolo IAM ARN per cui desideri trovare il livello di accesso sulla risorsa S3 specifica:

arn:aws:iam::123456789012:user/user_name or arn:aws:iam::123456789012:role/example-rol

12.    Scegli Esegui.

Usa lo stato di Esecuzione per tenere traccia dell'avanzamento del documento. Dopo che lo stato cambia in Success, esamina i risultati elencati nella sezione Output. I risultati includono codici di errore per ogni oggetto valutato.
Nota: Per esaminare il risultato di una singola fase della valutazione, scegli lo Step ID pertinente in Fasi eseguite.

Passaggi opzionali

I passaggi seguenti sono facoltativi.

  • Per AutomationAssumeRole, puoi selezionare un ruolo IAM da assumere per Systems Manager per inviare richieste al tuo bucket. Se lasci vuoto questo campo, Systems Manager utilizza l'identità IAM che stai utilizzando per configurare il documento. Per ulteriori informazioni, consulta la sezione Autorizzazioni IAM richieste per AutomationAssumeRole.
    Importante: La policy di attendibilità del ruolo IAM selezionato deve consentire a Systems Manager Automation di assumere il ruolo. Inoltre, il ruolo IAM deve disporre dell'autorizzazione per eseguire il runbook AWSSupport-TroubleshootS3AccessSameAccount.

  • Se l'ARN IAM è un ruolo e desideri fornire un nome di sessione specifico, in RequesterRoleSessionName, inserisci il nome della sessione.

  • Se l'oggetto ha più versioni, per S3ObjectVersionId, inserisci il VersionId dell'oggetto. Questo parametro consente di specificare la versione dell'oggetto per cui si desidera valutare il contesto di accesso.

  • Se è pertinente all'azione, inserisci la chiave KMS ARN per KmsKeyArn. Ad esempio, per testare il download di un oggetto crittografato con una chiave KMS.

  • Per VpcEndpointId, puoi inserire l'ID endpoint Amazon Virtual Private Cloud (Amazon VPC) correlato alla valutazione dell'accesso. Le policy dei bucket di Amazon S3 possono controllare l'accesso ai bucket da endpoint Amazon VPC specifici.

  • Per ContextKeyList, è possibile inserire l'elenco delle chiavi di contesto della condizione e i valori corrispondenti relativi alla valutazione della policy. Ad esempio, un rifiuto esplicito per un PutObject nella policy del bucket:

    {"ContextKeyName":"s3:x-amz-server-side-encryption-aws-kms-key-id","ContextKeyValues':["arn:aws:kms:us-east-1:123456789012:key/abc12345-b1e9-45a3-aa90-39ec93dd9b82'],"ContextKeyType":"string'}
  • Se desideri che il runbook confronti l'input con una specifica policy di controllo dei servizi (SCP) di AWS Organizations, inserisci SCP per SCPPolicy. Rimuovi eventuali nuove righe, tabulazioni o spazi bianchi quando inserisci un valore. Se esegui il runbook dall'account di gestione dell'organizzazione, questo passaggio non è necessario.

  • Per Tag, puoi taggare le tue automazioni per aiutarti a classificarle.

  • Per il comando AWS CLI e il link di esecuzione condivisibile, il runbook fornisce un esempio di comando AWS Command Line Interface (AWS CLI) per Linux, Unix e macOS. Il runbook fornisce anche un link condivisibile.

Autorizzazioni IAM richieste per AutomationAssumeRole

Il parametro AutomationAssumeRole richiede determinate azioni per utilizzare il runbook.

La seguente policy di esempio include le azioni richieste per il ruolo di automazione:

{  
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "iam:SimulateCustomPolicy",
        "iam:GetUser",
        "iam:GetPolicy",
        "iam:GetPolicyVersion",
        "iam:ListAttachedUserPolicies",
        "iam:ListUserPolicies",
        "iam:GetUserPolicy",
        "iam:ListGroupsForUser",
        "iam:ListGroupPolicies",
        "iam:GetGroupPolicy",
        "iam:ListAttachedGroupPolicies",
        "iam:GetRole",
        "iam:GetRolePolicy",
        "iam:ListAttachedRolePolicies",
        "iam:ListRolePolicies"
      ],
      "Resource": "*",
      "Effect": "Allow"
    },
    {
      "Action": [
        "s3:GetObjectAcl",
        "s3:GetObjectVersionAcl",
        "s3:GetObject",
        "s3:GetObjectVersion"
      ],
      "Resource": "arn:aws:s3:::bucket_name/destination-prefix",
      "Effect": "Allow"
    },
    {
      "Action": [
        "s3:GetBucketPolicy",
        "s3:GetBucketAcl",
        "s3:ListBucket",
        "s3:GetBucketAcl",
        "s3:GetBucketLocation",
        "s3:ListBucket"
      ],
      "Resource": "arn:aws:s3:::bucket_name",
      "Effect": "Allow"
    },
    {
      "Action": [
        "ec2:DescribeVpcEndpoints"
      ],
      "Resource": "*",
      "Effect": "Allow"
    },
    {
      "Action": [
        "kms:GetKeyPolicy"
      ],
      "Resource": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
      "Effect": "Allow"
    },
    {
      "Action": [
        "organizations:ListPolicies",
        "organizations:DescribePolicy"
      ],
      "Resource": "arn:aws:organizations::aws:policy/service_control_policy/*",
      "Effect": "Allow"
    },
    {
      "Action": [
        "ssm:GetAutomationExecution",
        "ssm:DescribeAutomationExecutions"
      ],
      "Resource": "*",
      "Effect": "Allow"
    },
    {
      "Action": "ssm:StartAutomationExecution",
      "Resource": "arn:aws:ssm:*:*:automation-definition/AWSSupport-TroubleshootS3AccessSameAccount:*",
      "Effect": "Allow",
      "Sid": "StartAutomationExecution"
    },
    {
      "Action": "access-analyzer:ValidatePolicy",
      "Resource": "*",
      "Effect": "Allow"
    }
  ]
}