Registrazione di una posizione - Amazon Simple Storage Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Registrazione di una posizione

Dopo aver creato un'istanza Amazon S3 Access Grants in un Regione AWS nel tuo account, registri una posizione S3 in quell'istanza. Una posizione S3 Access Grants associa la posizione S3 predefinita (s3://), un bucket o un prefisso a un AWS Identity and Access Management () ruolo. IAM S3 Access Grants assume questo IAM ruolo per fornire credenziali temporanee al beneficiario che accede a quella particolare posizione. Devi prima registrare almeno una sede nella tua istanza S3 Access Grants prima di poter creare una concessione di accesso.

Caso d'uso consigliato

Ti consigliamo di registrare la posizione predefinita (s3://) e di mapparla a un IAM ruolo. La posizione nel percorso S3 predefinito (s3://) copre l'accesso a tutti i tuoi bucket S3 in quel percorso Regione AWS del tuo account. Quando crei una concessione di accesso, puoi restringere l'ambito della concessione a un bucket, un prefisso o un oggetto all'interno della posizione predefinita.

Casi d'uso complessi per la gestione degli accessi

Casi d'uso più complessi di gestione degli accessi potrebbero richiedere la registrazione di più posizioni rispetto a quelle predefinite. Alcuni esempi di tali casi d'uso sono:

  • Supponiamo che amzn-s3-demo-bucket è una posizione registrata nell'istanza S3 Access Grants a cui è mappato un IAM ruolo, ma a questo IAM ruolo viene negato l'accesso a un particolare prefisso all'interno del bucket. In questo caso, puoi registrare il prefisso a cui il IAM ruolo non ha accesso come posizione separata e mappare tale posizione a un ruolo diverso IAM con l'accesso necessario.

  • Supponiamo di voler creare concessioni che limitano l'accesso solo agli utenti all'interno di un endpoint di cloud privato virtuale ()VPC. In questo caso, potete registrare una posizione per un bucket in cui il IAM ruolo limita l'accesso all'endpoint. VPC Successivamente, quando un beneficiario chiede le credenziali a S3 Access Grants, S3 Access Grants assume il ruolo della sede di vendere le credenziali temporanee. IAM Questa credenziale negherà l'accesso al bucket specifico a meno che il chiamante non si trovi all'interno dell'endpoint. VPC Questa autorizzazione di negazione viene applicata in aggiunta all'autorizzazione normale o READ READWRITE specificata WRITE nella concessione.

Quando registri una sede, devi anche specificare il IAM ruolo che S3 Access Grants assume nella vendita di credenziali temporanee e nell'ambito delle autorizzazioni per una concessione specifica.

Se il tuo caso d'uso richiede la registrazione di più sedi nella tua istanza S3 Access Grants, puoi registrare una delle seguenti:

S3 URI IAMruolo Descrizione
s3:// Default-IAM-role

La posizione predefinita include tutti i bucket presenti in s3:// Regione AWS.

s3://amzn-s3-demo-bucket1/ IAM-role-For-bucket

Questa posizione include tutti gli oggetti nel bucket specificato.

s3://amzn-s3-demo-bucket1/prefix-name IAM-role-For-prefix

Questa posizione include tutti gli oggetti nel bucket con un nome chiave dell'oggetto che inizia con questo prefisso.

Prima di registrare un bucket o un prefisso specifico, assicuratevi di fare quanto segue:

  • Crea uno o più bucket contenenti i dati a cui desideri concedere l'accesso. Questi secchi devono essere collocati nello stesso Regione AWS come istanza S3 Access Grants. Per ulteriori informazioni, consulta Creazione di un bucket.

    L'aggiunta di un prefisso è un passaggio facoltativo. I prefissi sono stringhe all'inizio del nome della chiave di un oggetto. Puoi usarli per organizzare gli oggetti nel tuo bucket e per la gestione degli accessi. Per aggiungere un prefisso a un bucket, consulta Creazione dei nomi delle chiavi degli oggetti.

  • Crea un IAM ruolo con il permesso di accedere ai tuoi dati S3 nel Regione AWS. Per ulteriori informazioni, vedere Creazione di IAM ruoli in AWS IAM Identity Center guida per l'utente.

  • Nella policy di trust dei IAM ruoli, concedi al servizio S3 Access Grants (access-grants.s3.amazonaws.com) l'accesso principale al IAM ruolo che hai creato. A tale scopo, puoi creare un JSON file che contenga le seguenti istruzioni. Per aggiungere la politica di fiducia al tuo account, consulta Creare un ruolo utilizzando politiche di fiducia personalizzate.

    TestRolePolicy.json

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1234567891011", "Action": ["sts:AssumeRole", "sts:SetSourceIdentity", "sts:SetContext"], "Effect": "Allow", "Principal": {"Service":"access-grants.s3.amazonaws.com"}, "Condition":{ "StringEquals":{ "aws:SourceAccount":"accountId", "aws:SourceArn":"arn:aws:s3:region:accountId:access-grants/default" } //Optionally, for an IAM Identity Center use case, add: "ForAnyValue:StringEquals": { "aws:RequestContextProvider":"arn:aws:iam::aws:contextProvider/IdentityCenter" } } } ] }
  • Crea una IAM policy per associare le autorizzazioni di Amazon S3 al IAM ruolo che hai creato. Consulta il seguente file iam-policy.json di esempio e sostituisci user input placeholders con le tue informazioni.

    Nota
    • Se utilizzi la crittografia lato server con AWS Key Management Service (AWS KMS) chiavi per crittografare i dati, l'esempio seguente include le necessarie AWS KMS autorizzazioni per il IAM ruolo nella politica. Se non utilizzi questa funzionalità, puoi rimuovere queste autorizzazioni dalla tua IAM politica.

    • Puoi limitare il IAM ruolo all'accesso ai dati S3 solo se le credenziali vengono fornite da S3 Access Grants. Questo esempio mostra come aggiungere un'Conditionistruzione per una specifica istanza di S3 Access Grants. Per utilizzarlaCondition, sostituisci l'istanza S3 Access Grants ARN nell'Conditionistruzione con la tua istanza S3 Access Grants, che ha il formato: ARN arn:aws:s3:region:accountId:access-grants/default

    iam-policy.json

    { "Version":"2012-10-17", "Statement": [ { "Sid": "ObjectLevelReadPermissions", "Effect":"Allow", "Action":[ "s3:GetObject", "s3:GetObjectVersion", "s3:GetObjectAcl", "s3:GetObjectVersionAcl", "s3:ListMultipartUploadParts" ], "Resource":[ "arn:aws:s3:::*" ], "Condition":{ "StringEquals": { "aws:ResourceAccount": "accountId" }, "ArnEquals": { "s3:AccessGrantsInstanceArn": ["arn:aws:s3:region:accountId:access-grants/default"] } } }, { "Sid": "ObjectLevelWritePermissions", "Effect":"Allow", "Action":[ "s3:PutObject", "s3:PutObjectAcl", "s3:PutObjectVersionAcl", "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:AbortMultipartUpload" ], "Resource":[ "arn:aws:s3:::*" ], "Condition":{ "StringEquals": { "aws:ResourceAccount": "accountId" }, "ArnEquals": { "s3:AccessGrantsInstanceArn": ["arn:aws:s3:Regione AWS:accountId:access-grants/default"] } } }, { "Sid": "BucketLevelReadPermissions", "Effect":"Allow", "Action":[ "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::*" ], "Condition":{ "StringEquals": { "aws:ResourceAccount": "accountId" }, "ArnEquals": { "s3:AccessGrantsInstanceArn": ["arn:aws:s3:Regione AWS:accountId:access-grants/default"] } } }, //Optionally add the following section if you use SSE-KMS encryption { "Sid": "KMSPermissions", "Effect":"Allow", "Action":[ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource":[ "*" ] } ] }

Puoi registrare una posizione nella tua istanza S3 Access Grants utilizzando la console Amazon S3, AWS Command Line Interface (AWS CLI), Amazon S3 REST API o AWS SDKs.

Nota

Dopo aver registrato la prima posizione nell'istanza S3 Access Grants, nell'istanza non sono ancora presenti concessioni di accesso individuali. Per creare una concessione di accesso, consulta. Creazione di concessioni

Prima di poter concedere l'accesso ai dati S3 con S3 Access Grants, devi avere almeno una posizione registrata.

Per registrare una posizione nella tua istanza S3 Access Grants
  1. Accedi al AWS Management Console e apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/

  2. Nel pannello di navigazione a sinistra, scegli Access Grants.

  3. Nella pagina S3 Access Grants, scegli la regione che contiene l'istanza S3 Access Grants con cui vuoi lavorare.

    Se utilizzi un'istanza S3 Access Grants per la prima volta, assicurati di aver completato il Passaggio 1: crea un'istanza S3 Access Grants e di aver eseguito il Passaggio 2 della procedura guidata Configurazione dell'istanza Access Grants. Se disponi già di un'istanza S3 Access Grants, seleziona Visualizza dettagli, quindi dalla scheda Posizioni, seleziona Registra posizione.

    1. Per l'ambito della posizione, scegli Browse S3 o inserisci il URI percorso S3 della posizione che desideri registrare. Per i URI formati S3, consulta la tabella dei formati di posizione. Dopo aver inserito unURI, puoi scegliere Visualizza per sfogliare la posizione.

    2. Per il IAMruolo, scegli una delle seguenti opzioni:

      • Scegli tra i IAM ruoli esistenti

        Scegli un IAM ruolo dall'elenco a discesa. Dopo aver scelto un ruolo, scegli Visualizza per avere la certezza che questo ruolo disponga delle autorizzazioni necessarie per gestire la posizione che stai registrando. In particolare, assicurati che questo ruolo conceda a S3 Access Grants le autorizzazioni sts:AssumeRole e sts:SetSourceIdentity.

      • Inserisci il ruolo IAM ARN

        Vai alla IAMconsole. Copia l'Amazon Resource Name (ARN) del IAM ruolo e incollalo in questa casella.

    3. Per finire, scegli Avanti o Registra posizione.

  4. Risoluzione dei problemi

    Impossibile registrare la posizione
    • La posizione potrebbe essere già registrata.

      Potresti non avere l'autorizzazione s3:CreateAccessGrantsLocation per registrare le posizioni. Contatta l'amministratore dell'account.

Per installare il AWS CLI, vedere Installazione di AWS CLI nella AWS Command Line Interface Guida per l'utente.

Puoi registrare la posizione predefinita, s3://, o una posizione personalizzata nella tua istanza S3 Access Grants. Assicurati di creare prima un IAM ruolo con accesso principale alla posizione, quindi assicurati di concedere a S3 Access Grants l'autorizzazione ad assumere questo ruolo.

Per utilizzare i seguenti comandi di esempio, sostituisci user input placeholders con le tue informazioni.

Esempio Creazione di una policy di risorse

Crea una politica che consenta a S3 Access Grants di assumere il ruolo. IAM A tale scopo, puoi creare un JSON file che contenga le seguenti istruzioni. Per aggiungere la policy della risorsa al tuo account, consulta Creazione e collegamento della prima policy gestita dal cliente.

TestRolePolicy.json

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1234567891011", "Action": ["sts:AssumeRole", "sts:SetSourceIdentity"], "Effect": "Allow", "Principal": {"Service":"access-grants.s3.amazonaws.com"} } ] }
Esempio Creare il ruolo

Esegui il IAM comando seguente per creare il ruolo.

aws iam create-role --role-name accessGrantsTestRole \ --region us-east-2 \ --assume-role-policy-document file://TestRolePolicy.json

L'esecuzione del comando create-role restituisce la policy:

{ "Role": { "Path": "/", "RoleName": "accessGrantsTestRole", "RoleId": "AROASRDGX4WM4GH55GIDA", "Arn": "arn:aws:iam::111122223333:role/accessGrantsTestRole", "CreateDate": "2023-05-31T18:11:06+00:00", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1685556427189", "Action": [ "sts:AssumeRole", "sts:SetSourceIdentity" ], "Effect": "Allow", "Principal": { "Service":"access-grants.s3.amazonaws.com" } } ] } } }

Crea una IAM policy per associare le autorizzazioni Amazon S3 al ruolo. IAM Consulta il seguente file iam-policy.json di esempio e sostituisci user input placeholders con le tue informazioni.

Nota

Se utilizzi la crittografia lato server con AWS Key Management Service (AWS KMS) chiavi per crittografare i dati, l'esempio seguente aggiunge il necessario AWS KMS autorizzazioni per il IAM ruolo nella politica. Se non utilizzi questa funzionalità, puoi rimuovere queste autorizzazioni dalla tua IAM politica.

Per assicurarti che il IAM ruolo possa essere utilizzato per accedere ai dati in S3 solo se le credenziali vengono vendute da S3 Access Grants, questo esempio mostra come aggiungere un'Conditionistruzione che specifichi l'istanza S3 Access Grants () nella tua politica. s3:AccessGrantsInstance: InstanceArn IAM Quando utilizzi la seguente policy di esempio, sostituisci user input placeholders con le tue informazioni.

iam-policy.json

{ "Version":"2012-10-17", "Statement": [ { "Sid": "ObjectLevelReadPermissions", "Effect":"Allow", "Action":[ "s3:GetObject", "s3:GetObjectVersion", "s3:GetObjectAcl", "s3:GetObjectVersionAcl", "s3:ListMultipartUploadParts" ], "Resource":[ "arn:aws:s3:::*" ], "Condition":{ "StringEquals": { "aws:ResourceAccount": "accountId" }, "ArnEquals": { "s3:AccessGrantsInstanceArn": ["arn:aws:s3:region:accountId:access-grants/default"] } } }, { "Sid": "ObjectLevelWritePermissions", "Effect":"Allow", "Action":[ "s3:PutObject", "s3:PutObjectAcl", "s3:PutObjectVersionAcl", "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:AbortMultipartUpload" ], "Resource":[ "arn:aws:s3:::*" ], "Condition":{ "StringEquals": { "aws:ResourceAccount": "accountId" }, "ArnEquals": { "s3:AccessGrantsInstanceArn": ["arn:aws:s3:Regione AWS:accountId:access-grants/default"] } } }, { "Sid": "BucketLevelReadPermissions", "Effect":"Allow", "Action":[ "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::*" ], "Condition":{ "StringEquals": { "aws:ResourceAccount": "accountId" }, "ArnEquals": { "s3:AccessGrantsInstanceArn": ["arn:aws:s3:Regione AWS:accountId:access-grants/default"] } } }, { "Sid": "KMSPermissions", "Effect":"Allow", "Action":[ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource":[ "*" ] } ] }

Esegui il comando seguente:

aws iam put-role-policy \ --role-name accessGrantsTestRole \ --policy-name accessGrantsTestRole \ --policy-document file://iam-policy.json
Esempio Registra la posizione predefinita
aws s3control create-access-grants-location \ --account-id 111122223333 \ --location-scope s3:// \ --iam-role-arn arn:aws:iam::111122223333:role/accessGrantsTestRole

Risposta:

{"CreatedAt": "2023-05-31T18:23:48.107000+00:00", "AccessGrantsLocationId": "default", "AccessGrantsLocationArn": "arn:aws:s3:us-east-2:111122223333:access-grants/default/location/default", "LocationScope": "s3://” "IAMRoleArn": "arn:aws:iam::111122223333:role/accessGrantsTestRole" }
Esempio Registra una posizione personalizzata
aws s3control create-access-grants-location \ --account-id 111122223333 \ --location-scope s3://DOC-BUCKET-EXAMPLE/ \ --iam-role-arn arn:aws:iam::123456789012:role/accessGrantsTestRole

Risposta:

{"CreatedAt": "2023-05-31T18:23:48.107000+00:00", "AccessGrantsLocationId": "635f1139-1af2-4e43-8131-a4de006eb456", "AccessGrantsLocationArn": "arn:aws:s3:us-east-2: 111122223333:access-grants/default/location/635f1139-1af2-4e43-8131-a4de006eb888", "LocationScope": "s3://DOC-BUCKET-EXAMPLE/", "IAMRoleArn": "arn:aws:iam::111122223333:role/accessGrantsTestRole" }

Per informazioni sul REST API supporto di Amazon S3 per la gestione di un'istanza S3 Access Grants, consulta le seguenti sezioni in Amazon Simple Storage Service Reference: API

Questa sezione fornisce esempi di come registrare le sedi utilizzando il AWS SDKs.

Per utilizzare i seguenti esempi, sostituisci user input placeholders con le tue informazioni.

Java

Puoi registrare la posizione predefinita, s3://, o una posizione personalizzata nella tua istanza S3 Access Grants. Assicurati di creare prima un IAM ruolo con accesso principale alla sede, quindi assicurati di concedere a S3 Access Grants l'autorizzazione ad assumere questo ruolo.

Per utilizzare i seguenti comandi di esempio, sostituisci user input placeholders con le tue informazioni.

Esempio Registra una posizione predefinita

Richiesta:

public void createAccessGrantsLocation() { CreateAccessGrantsLocationRequest createRequest = CreateAccessGrantsLocationRequest.builder() .accountId("111122223333") .locationScope("s3://") .iamRoleArn("arn:aws:iam::123456789012:role/accessGrantsTestRole") .build(); CreateAccessGrantsLocationResponse createResponse = s3Control.createAccessGrantsLocation(createRequest); LOGGER.info("CreateAccessGrantsLocationResponse: " + createResponse); }

Risposta:

CreateAccessGrantsLocationResponse( CreatedAt=2023-06-07T04:35:11.027Z, AccessGrantsLocationId=default, AccessGrantsLocationArn=arn:aws:s3:us-east-2:111122223333:access-grants/default/location/default, LocationScope=s3://, IAMRoleArn=arn:aws:iam::111122223333:role/accessGrantsTestRole )
Esempio Registra una posizione personalizzata

Richiesta:

public void createAccessGrantsLocation() { CreateAccessGrantsLocationRequest createRequest = CreateAccessGrantsLocationRequest.builder() .accountId("111122223333") .locationScope("s3://DOC-BUCKET-EXAMPLE/") .iamRoleArn("arn:aws:iam::111122223333:role/accessGrantsTestRole") .build(); CreateAccessGrantsLocationResponse createResponse = s3Control.createAccessGrantsLocation(createRequest); LOGGER.info("CreateAccessGrantsLocationResponse: " + createResponse); }

Risposta:

CreateAccessGrantsLocationResponse( CreatedAt=2023-06-07T04:35:10.027Z, AccessGrantsLocationId=18cfe6fb-eb5a-4ac5-aba9-8d79f04c2012, AccessGrantsLocationArn=arn:aws:s3:us-east-2:111122223333:access-grants/default/location/18cfe6fb-eb5a-4ac5-aba9-8d79f04c2666, LocationScope= s3://test-bucket-access-grants-user123/, IAMRoleArn=arn:aws:iam::111122223333:role/accessGrantsTestRole )