Utilizzare criteri di accesso a bucket e gruppi
StorageGRID utilizza il linguaggio delle policy di Amazon Web Services (AWS) per consentire ai tenant S3 di controllare l'accesso ai bucket e agli oggetti all'interno di tali bucket. Il sistema StorageGRID implementa un sottoinsieme del linguaggio di policy dell'API REST S3. Le policy di accesso per l'API S3 sono scritte in JSON.
Panoramica della politica di accesso
StorageGRID supporta due tipi di criteri di accesso.
-
Politiche bucket, gestite tramite le operazioni API S3 GetBucketPolicy, PutBucketPolicy e DeleteBucketPolicy oppure tramite l'API Tenant Manager o Tenant Management. I criteri dei bucket sono associati ai bucket e sono quindi configurati per controllare l'accesso degli utenti nell'account proprietario del bucket o di altri account al bucket e agli oggetti in esso contenuti. Una policy basata su bucket si applica a un solo bucket e, possibilmente, a più gruppi.
-
Criteri di gruppo, configurati tramite Tenant Manager o Tenant Management API. I criteri di gruppo sono associati a un gruppo nell'account e sono quindi configurati per consentire a tale gruppo di accedere a risorse specifiche di proprietà di tale account. Un criterio di gruppo si applica a un solo gruppo e, possibilmente, a più bucket.
|
Non vi è alcuna differenza di priorità tra i criteri di gruppo e quelli di bucket. |
I criteri di gruppo e bucket StorageGRID seguono una grammatica specifica definita da Amazon. All'interno di ogni policy è presente una serie di dichiarazioni di policy e ciascuna dichiarazione contiene i seguenti elementi:
-
ID dichiarazione (Sid) (facoltativo)
-
Effetto
-
Principale/Non Principale
-
Risorsa/Non Risorsa
-
Azione/Non azione
-
Condizione (facoltativa)
Le istruzioni di policy vengono create utilizzando questa struttura per specificare le autorizzazioni: Concedi <Effetto> per consentire/negare a <Principale> di eseguire <Azione> su <Risorsa> quando si applica <Condizione>.
Ogni elemento della policy viene utilizzato per una funzione specifica:
Elemento | Descrizione |
---|---|
Sid |
L'elemento Sid è facoltativo. Il Sid è inteso solo come descrizione per l'utente. Viene memorizzato ma non interpretato dal sistema StorageGRID . |
Effetto |
Utilizzare l'elemento Effetto per stabilire se le operazioni specificate sono consentite o negate. È necessario identificare le operazioni consentite (o negate) sui bucket o sugli oggetti utilizzando le parole chiave dell'elemento Azione supportate. |
Principale/Non Principale |
È possibile consentire a utenti, gruppi e account di accedere a risorse specifiche ed eseguire azioni specifiche. Se nella richiesta non è inclusa alcuna firma S3, l'accesso anonimo è consentito specificando il carattere jolly (*) come principale. Per impostazione predefinita, solo l'account root ha accesso alle risorse di proprietà dell'account. È sufficiente specificare l'elemento Principal in un criterio bucket. Per i criteri di gruppo, il gruppo a cui è associato il criterio è l'elemento Principal implicito. |
Risorsa/Non Risorsa |
L'elemento Risorsa identifica bucket e oggetti. È possibile concedere o negare autorizzazioni a bucket e oggetti utilizzando l'Amazon Resource Name (ARN) per identificare la risorsa. |
Azione/Non azione |
Gli elementi Azione ed Effetto sono i due componenti delle autorizzazioni. Quando un gruppo richiede una risorsa, gli viene concesso o negato l'accesso alla risorsa. L'accesso viene negato a meno che non si assegnino autorizzazioni specifiche, ma è possibile utilizzare la negazione esplicita per ignorare un'autorizzazione concessa da un altro criterio. |
Condizione |
L'elemento Condizione è facoltativo. Le condizioni consentono di creare espressioni per determinare quando applicare una policy. |
Nell'elemento Azione, è possibile utilizzare il carattere jolly (*) per specificare tutte le operazioni o un sottoinsieme di operazioni. Ad esempio, questa azione corrisponde ad autorizzazioni quali s3:GetObject, s3:PutObject e s3:DeleteObject.
s3:*Object
Nell'elemento Risorsa è possibile utilizzare i caratteri jolly (*) e (?). Mentre l'asterisco (*) corrisponde a 0 o più caratteri, il punto interrogativo (?) corrisponde a qualsiasi singolo carattere.
Nell'elemento Principal, i caratteri jolly non sono supportati, tranne che per impostare l'accesso anonimo, che concede l'autorizzazione a tutti. Ad esempio, si imposta il carattere jolly (*) come valore Principale.
"Principal":"*"
"Principal":{"AWS":"*"}
Nell'esempio seguente, l'istruzione utilizza gli elementi Effetto, Principale, Azione e Risorsa. Questo esempio mostra un'istruzione completa della policy del bucket che utilizza l'effetto "Consenti" per fornire ai Principals, il gruppo di amministrazione federated-group/admin
e il gruppo finanziario federated-group/finance
, autorizzazioni per eseguire l'azione s3:ListBucket
sul secchio denominato mybucket
e l'azione s3:GetObject
su tutti gli oggetti all'interno di quel contenitore.
{ "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::27233906934684427525:federated-group/admin", "arn:aws:iam::27233906934684427525:federated-group/finance" ] }, "Action": [ "s3:ListBucket", "s3:GetObject" ], "Resource": [ "arn:aws:s3:::mybucket", "arn:aws:s3:::mybucket/*" ] } ] }
Il criterio del bucket ha un limite di dimensione di 20.480 byte, mentre il criterio del gruppo ha un limite di dimensione di 5.120 byte.
Coerenza per le politiche
Per impostazione predefinita, tutti gli aggiornamenti apportati ai criteri di gruppo sono coerenti. Quando un criterio di gruppo diventa coerente, le modifiche potrebbero richiedere altri 15 minuti per diventare effettive, a causa della memorizzazione nella cache dei criteri. Per impostazione predefinita, tutti gli aggiornamenti apportati ai criteri dei bucket sono fortemente coerenti.
Se necessario, è possibile modificare le garanzie di coerenza per gli aggiornamenti dei criteri dei bucket. Ad esempio, potresti voler rendere disponibile una modifica ai criteri di un bucket durante un'interruzione del sito.
In questo caso, è possibile impostare il Consistency-Control
intestazione nella richiesta PutBucketPolicy oppure puoi utilizzare la richiesta di coerenza PUT Bucket. Quando un criterio di bucket diventa coerente, le modifiche potrebbero richiedere altri 8 secondi per diventare effettive, a causa della memorizzazione nella cache dei criteri.
|
Se si imposta la coerenza su un valore diverso per risolvere una situazione temporanea, assicurarsi di ripristinare l'impostazione a livello di bucket al valore originale al termine dell'operazione. In caso contrario, tutte le future richieste di bucket utilizzeranno l'impostazione modificata. |
Utilizzare ARN nelle dichiarazioni di policy
Nelle dichiarazioni di policy, l'ARN viene utilizzato negli elementi Principal e Resource.
-
Utilizzare questa sintassi per specificare l'ARN della risorsa S3:
arn:aws:s3:::bucket-name arn:aws:s3:::bucket-name/object_key
-
Utilizzare questa sintassi per specificare l'ARN della risorsa identità (utenti e gruppi):
arn:aws:iam::account_id:root arn:aws:iam::account_id:user/user_name arn:aws:iam::account_id:group/group_name arn:aws:iam::account_id:federated-user/user_name arn:aws:iam::account_id:federated-group/group_name
Altre considerazioni:
-
È possibile utilizzare l'asterisco (*) come carattere jolly per trovare la corrispondenza con zero o più caratteri all'interno della chiave dell'oggetto.
-
I caratteri internazionali, che possono essere specificati nella chiave dell'oggetto, devono essere codificati utilizzando JSON UTF-8 o sequenze di escape JSON \u. La codifica percentuale non è supportata.
Il corpo della richiesta HTTP per l'operazione PutBucketPolicy deve essere codificato con charset=UTF-8.
Specificare le risorse in una policy
Nelle istruzioni dei criteri, è possibile utilizzare l'elemento Risorsa per specificare il bucket o l'oggetto per cui sono concesse o negate le autorizzazioni.
-
Ogni dichiarazione di policy richiede un elemento Risorsa. In una policy, le risorse sono indicate dall'elemento
Resource
, o in alternativa,NotResource
per l'esclusione. -
È possibile specificare le risorse con un ARN di risorsa S3. Per esempio:
"Resource": "arn:aws:s3:::mybucket/*"
-
È anche possibile utilizzare variabili di policy all'interno della chiave dell'oggetto. Per esempio:
"Resource": "arn:aws:s3:::mybucket/home/${aws:username}/*"
-
Il valore della risorsa può specificare un bucket che non esiste ancora al momento della creazione di un criterio di gruppo.
Specificare i principi in una policy
Utilizzare l'elemento Principal per identificare l'utente, il gruppo o l'account tenant a cui è consentito/negato l'accesso alla risorsa in base all'istruzione di policy.
-
Ogni istruzione di policy in una policy di bucket deve includere un elemento Principal. Le istruzioni di policy in un criterio di gruppo non necessitano dell'elemento Principal perché il gruppo è considerato il principale.
-
In una policy, i mandanti sono indicati dall'elemento "Manager" o, in alternativa, "NotManager" per l'esclusione.
-
Le identità basate sull'account devono essere specificate utilizzando un ID o un ARN:
"Principal": { "AWS": "account_id"} "Principal": { "AWS": "identity_arn" }
-
In questo esempio viene utilizzato l'ID account tenant 27233906934684427525, che include l'account root e tutti gli utenti nell'account:
"Principal": { "AWS": "27233906934684427525" }
-
È possibile specificare solo l'account root:
"Principal": { "AWS": "arn:aws:iam::27233906934684427525:root" }
-
È possibile specificare un utente federato specifico ("Alex"):
"Principal": { "AWS": "arn:aws:iam::27233906934684427525:federated-user/Alex" }
-
È possibile specificare un gruppo federato specifico ("Manager"):
"Principal": { "AWS": "arn:aws:iam::27233906934684427525:federated-group/Managers" }
-
È possibile specificare un'entità anonima:
"Principal": "*"
-
Per evitare ambiguità, è possibile utilizzare l'UUID dell'utente anziché il nome utente:
arn:aws:iam::27233906934684427525:user-uuid/de305d54-75b4-431b-adb2-eb6b9e546013
Ad esempio, supponiamo che Alex lasci l'organizzazione e il nome utente
Alex
viene eliminato. Se un nuovo Alex si unisce all'organizzazione e gli viene assegnato lo stessoAlex
nome utente, il nuovo utente potrebbe ereditare involontariamente i permessi concessi all'utente originale. -
Il valore principale può specificare un nome di gruppo/utente che non esiste ancora al momento della creazione di un criterio bucket.
Specificare le autorizzazioni in una policy
In una policy, l'elemento Azione viene utilizzato per concedere/negare le autorizzazioni a una risorsa. Esiste una serie di autorizzazioni che è possibile specificare in una policy, contrassegnate dall'elemento "Azione" o, in alternativa, "NonAzione" per l'esclusione. Ciascuno di questi elementi è mappato a specifiche operazioni dell'API REST S3.
Nelle tabelle sono elencate le autorizzazioni che si applicano ai bucket e le autorizzazioni che si applicano agli oggetti.
|
Amazon S3 ora utilizza l'autorizzazione s3:PutReplicationConfiguration per entrambe le azioni PutBucketReplication e DeleteBucketReplication. StorageGRID utilizza autorizzazioni separate per ogni azione, in linea con le specifiche originali di Amazon S3. |
|
Un'operazione di eliminazione viene eseguita quando si utilizza un'istruzione put per sovrascrivere un valore esistente. |
Autorizzazioni applicabili ai bucket
Permessi | Operazioni API REST S3 | Personalizzato per StorageGRID |
---|---|---|
s3:CreaBucket |
CreaBucket |
Sì. Nota: utilizzare solo nei criteri di gruppo. |
s3:EliminaBucket |
EliminaBucket |
|
s3:DeleteBucketMetadataNotification |
ELIMINA la configurazione della notifica dei metadati del bucket |
SÌ |
s3:EliminaBucketPolicy |
DeleteBucketPolicy |
|
s3:EliminaConfigurazioneReplicazione |
DeleteBucketReplication |
Sì, autorizzazioni separate per PUT e DELETE |
s3:GetBucketAcl |
OttieniBucketAcl |
|
s3:GetBucketCompliance |
Conformità GET Bucket (obsoleto) |
SÌ |
s3:GetBucketConsistency |
OTTIENI la coerenza del bucket |
SÌ |
s3:GetBucketCORS |
GetBucketCors |
|
s3:Ottieni configurazione crittografia |
Ottieni crittografia dei bucket |
|
s3:GetBucketLastAccessTime |
GET Ora dell'ultimo accesso al bucket |
SÌ |
s3:OttieniPosizioneBucket |
OttieniPosizioneBucket |
|
s3:GetBucketMetadataNotification |
Configurazione della notifica dei metadati del bucket GET |
SÌ |
s3:OttieniNotificaBucket |
Configurazione di notifica di GetBucket |
|
s3:GetBucketObjectLockConfiguration |
Ottieni configurazione blocco oggetto |
|
s3:GetBucketPolicy |
OttieniPoliticaBucket |
|
s3:OttieniTaggingBucket |
OttieniBucketTagging |
|
s3:GetBucketVersioning |
GetBucketVersioning |
|
s3:GetLifecycleConfiguration |
GetBucketLifecycleConfiguration |
|
s3:OttieniConfigurazioneReplicazione |
OttieniReplicazioneBucket |
|
s3:ElencaTuttiIMieBucket |
|
Sì, per l'utilizzo dello spazio di archiviazione GET. Nota: utilizzare solo nei criteri di gruppo. |
s3:ElencoBucket |
|
|
s3:ListBucketMultipartUploads |
|
|
s3:ListBucketVersions |
Versioni GET Bucket |
|
s3:PutBucketCompliance |
Conformità al bucket PUT (obsoleto) |
SÌ |
s3:PutBucketConsistency |
PUT Consistenza del secchio |
SÌ |
s3:PutBucketCORS |
|
|
s3:PutEncryptionConfiguration |
|
|
s3:PutBucketLastAccessTime |
Ora dell'ultimo accesso al bucket PUT |
SÌ |
s3:PutBucketMetadataNotification |
Configurazione della notifica dei metadati del bucket PUT |
SÌ |
s3:PutBucketNotification |
Configurazione della notifica PutBucket |
|
s3:PutBucketObjectLockConfiguration |
|
|
s3:PoliticaPutBucket |
PutBucketPolicy |
|
s3:PutBucketTagging |
|
|
s3:PutBucketVersioning |
PutBucketVersioning |
|
s3:PutLifecycleConfiguration |
|
|
s3:PutReplicationConfiguration |
PutBucketReplication |
Sì, autorizzazioni separate per PUT e DELETE |
Autorizzazioni applicabili agli oggetti
Permessi | Operazioni API REST S3 | Personalizzato per StorageGRID |
---|---|---|
s3:AnnullaCaricamentoMultipart |
|
|
s3:BypassGovernanceRetention |
|
|
s3:EliminaOggetto |
|
|
s3:EliminaTaggingOggetto |
DeleteObjectTagging |
|
s3:EliminaObjectVersionTagging |
DeleteObjectTagging (una versione specifica dell'oggetto) |
|
s3:EliminaVersioneOggetto |
DeleteObject (una versione specifica dell'oggetto) |
|
s3:OttieniOggetto |
|
|
s3:GetObjectAcl |
OttieniOggettoAcl |
|
s3:GetObjectLegalHold |
OttieniOggettoLegaleHold |
|
s3:OttieniRitenzioneOggetto |
Ottieni conservazione oggetto |
|
s3:OttieniTaggingOggetto |
OttieniTaggingOggetto |
|
s3:GetObjectVersionTagging |
GetObjectTagging (una versione specifica dell'oggetto) |
|
s3:GetObjectVersion |
GetObject (una versione specifica dell'oggetto) |
|
s3:ListMultipartUploadParts |
ListParts, RestoreObject |
|
s3:PutObject |
|
|
s3:PutObjectLegalHold |
PutObjectLegalHold |
|
s3:PutObjectRetention |
PutObjectRetention |
|
s3:PutObjectTagging |
PutObjectTagging |
|
s3:PutObjectVersionTagging |
PutObjectTagging (una versione specifica dell'oggetto) |
|
s3:PutOverwriteObject |
|
SÌ |
s3:RipristinaOggetto |
Ripristina oggetto |
Utilizzare l'autorizzazione PutOverwriteObject
L'autorizzazione s3:PutOverwriteObject è un'autorizzazione StorageGRID personalizzata che si applica alle operazioni che creano o aggiornano oggetti. L'impostazione di questa autorizzazione determina se il client può sovrascrivere i dati di un oggetto, i metadati definiti dall'utente o il tagging degli oggetti S3.
Le possibili impostazioni per questa autorizzazione includono:
-
Consenti: il client può sovrascrivere un oggetto. Questa è l'impostazione predefinita.
-
Nega: Il client non può sovrascrivere un oggetto. Se impostato su Nega, l'autorizzazione PutOverwriteObject funziona come segue:
-
Se un oggetto esistente viene trovato nello stesso percorso:
-
I dati dell'oggetto, i metadati definiti dall'utente o i tag degli oggetti S3 non possono essere sovrascritti.
-
Tutte le operazioni di acquisizione in corso vengono annullate e viene restituito un errore.
-
Se è abilitato il controllo delle versioni S3, l'impostazione Nega impedisce alle operazioni PutObjectTagging o DeleteObjectTagging di modificare il TagSet per un oggetto e le sue versioni non correnti.
-
-
Se non viene trovato un oggetto esistente, questa autorizzazione non ha effetto.
-
-
Quando questa autorizzazione non è presente, l'effetto è lo stesso che si avrebbe se fosse impostato Consenti.
|
Se l'attuale policy S3 consente la sovrascrittura e l'autorizzazione PutOverwriteObject è impostata su Nega, il client non può sovrascrivere i dati di un oggetto, i metadati definiti dall'utente o i tag degli oggetti. Inoltre, se è selezionata la casella di controllo Impedisci modifica client (CONFIGURAZIONE > Impostazioni di sicurezza > Rete e oggetti), tale impostazione sostituisce l'impostazione dell'autorizzazione PutOverwriteObject. |
Specificare le condizioni in una policy
Le condizioni definiscono quando una politica entrerà in vigore. Le condizioni sono costituite da operatori e coppie chiave-valore.
Le condizioni utilizzano coppie chiave-valore per la valutazione. Un elemento Condizione può contenere più condizioni e ogni condizione può contenere più coppie chiave-valore. Il blocco di condizione utilizza il seguente formato:
Condition: { condition_type: { condition_key: condition_values
Nell'esempio seguente, la condizione IpAddress utilizza la chiave di condizione SourceIp.
"Condition": { "IpAddress": { "aws:SourceIp": "54.240.143.0/24" ... }, ...
Operatori di condizione supportati
Gli operatori condizionali sono classificati come segue:
-
Corda
-
Numerico
-
Booleano
-
indirizzo IP
-
Controllo nullo
Operatori di condizione | Descrizione |
---|---|
StringEquals |
Confronta una chiave con un valore stringa in base alla corrispondenza esatta (con distinzione tra maiuscole e minuscole). |
Stringa non uguale |
Confronta una chiave con un valore stringa in base alla corrispondenza negata (sensibile alle maiuscole e alle minuscole). |
StringEqualsIgnoreCase |
Confronta una chiave con un valore stringa in base alla corrispondenza esatta (ignora la distinzione tra maiuscole e minuscole). |
StringNotEqualsIgnoreCase |
Confronta una chiave con un valore stringa in base alla corrispondenza negata (ignora la distinzione tra maiuscole e minuscole). |
StringLike |
Confronta una chiave con un valore stringa in base alla corrispondenza esatta (con distinzione tra maiuscole e minuscole). Può includere i caratteri jolly * e ?. |
Stringa non piace |
Confronta una chiave con un valore stringa in base alla corrispondenza negata (sensibile alle maiuscole e alle minuscole). Può includere i caratteri jolly * e ?. |
NumericEquals |
Confronta una chiave con un valore numerico in base alla corrispondenza esatta. |
NumericoNonUguale |
Confronta una chiave con un valore numerico in base alla corrispondenza negata. |
NumericoMaggioreDi |
Confronta una chiave con un valore numerico in base alla corrispondenza "maggiore di". |
NumericoMaggioreDiUguale |
Confronta una chiave con un valore numerico in base alla corrispondenza "maggiore o uguale a". |
NumericoMenoDi |
Confronta una chiave con un valore numerico in base alla corrispondenza "minore di". |
NumericoMinoreUguale |
Confronta una chiave con un valore numerico in base alla corrispondenza "minore o uguale". |
Bool |
Confronta una chiave con un valore booleano in base alla corrispondenza "vero o falso". |
Indirizzo IP |
Confronta una chiave con un indirizzo IP o un intervallo di indirizzi IP. |
NonIndirizzoIP |
Confronta una chiave con un indirizzo IP o un intervallo di indirizzi IP in base alla corrispondenza negata. |
Nullo |
Controlla se una chiave di condizione è presente nel contesto della richiesta corrente. |
Chiavi di condizione supportate
Chiavi di condizione | Azioni | Descrizione |
---|---|---|
aws:SourceIp |
operatori IP |
Verrà confrontato con l'indirizzo IP da cui è stata inviata la richiesta. Può essere utilizzato per operazioni su bucket o oggetti. Nota: se la richiesta S3 è stata inviata tramite il servizio Load Balancer sui nodi amministrativi e sui nodi gateway, questa verrà confrontata con l'indirizzo IP a monte del servizio Load Balancer. Nota: se viene utilizzato un bilanciatore del carico di terze parti non trasparente, questo verrà confrontato con l'indirizzo IP di tale bilanciatore del carico. Qualunque |
aws:nome utente |
Risorsa/Identità |
Verrà confrontato con il nome utente del mittente da cui è stata inviata la richiesta. Può essere utilizzato per operazioni su bucket o oggetti. |
s3:delimitatore |
s3:ListBucket e s3:permessi ListBucketVersions |
Verrà confrontato con il parametro delimitatore specificato in una richiesta ListObjects o ListObjectVersions. |
s3:ExistingObjectTag/<chiave-tag> |
s3:EliminaTaggingOggetto s3:EliminaObjectVersionTagging s3:OttieniOggetto s3:GetObjectAcl 3: Ottieni tag oggetto s3:GetObjectVersion s3:GetObjectVersionAcl s3:GetObjectVersionTagging s3:PutObjectAcl s3:PutObjectTagging s3:PutObjectVersionAcl s3:PutObjectVersionTagging |
Richiederà che l'oggetto esistente abbia la chiave e il valore del tag specifici. |
s3:max-chiavi |
s3:ListBucket e s3:permessi ListBucketVersions |
Verrà confrontato con il parametro max-keys specificato in una richiesta ListObjects o ListObjectVersions. |
s3:giorni di conservazione rimanenti del blocco dell'oggetto |
s3:PutObject |
Confronta con la data di conservazione specificata in
|
s3:giorni di conservazione rimanenti del blocco dell'oggetto |
s3:PutObjectRetention |
Confronta con la retain-until-date specificata nella richiesta PutObjectRetention per garantire che rientri nell'intervallo consentito. |
s3:prefisso |
s3:ListBucket e s3:permessi ListBucketVersions |
Verrà confrontato con il parametro prefisso specificato in una richiesta ListObjects o ListObjectVersions. |
s3:RequestObjectTag/<chiave-tag> |
s3:PutObject s3:PutObjectTagging s3:PutObjectVersionTagging |
Richiederà una chiave e un valore tag specifici quando la richiesta dell'oggetto include il tagging. |
Specificare le variabili in una policy
È possibile utilizzare le variabili nelle policy per popolare le informazioni sulle policy quando sono disponibili. È possibile utilizzare le variabili di policy in Resource
elemento e nei confronti di stringhe in Condition
elemento.
In questo esempio, la variabile ${aws:username}
fa parte dell'elemento Risorsa:
"Resource": "arn:aws:s3:::bucket-name/home/${aws:username}/*"
In questo esempio, la variabile ${aws:username}
fa parte del valore della condizione nel blocco di condizioni:
"Condition": { "StringLike": { "s3:prefix": "${aws:username}/*" ... }, ...
Variabile | Descrizione |
---|---|
|
Utilizza la chiave SourceIp come variabile fornita. |
|
Utilizza la chiave nome utente come variabile fornita. |
|
Utilizza la chiave del prefisso specifico del servizio come variabile fornita. |
|
Utilizza la chiave max-keys specifica del servizio come variabile fornita. |
|
Carattere speciale. Utilizza il carattere come carattere letterale *. |
|
Carattere speciale. Utilizza il carattere come carattere ? letterale. |
|
Carattere speciale. Utilizza il carattere come carattere $ letterale. |
Creare politiche che richiedono una gestione speciale
Talvolta una policy può concedere autorizzazioni pericolose per la sicurezza o per il proseguimento delle operazioni, ad esempio bloccando l'utente root dell'account. L'implementazione dell'API REST S3 StorageGRID è meno restrittiva durante la convalida delle policy rispetto ad Amazon, ma altrettanto rigorosa durante la valutazione delle policy.
Descrizione della politica | Tipo di polizza | Comportamento di Amazon | Comportamento StorageGRID |
---|---|---|---|
Nega a te stesso qualsiasi autorizzazione all'account root |
Secchio |
Valido e applicato, ma l'account utente root mantiene l'autorizzazione per tutte le operazioni dei criteri del bucket S3 |
Stesso |
Nega a te stesso qualsiasi autorizzazione all'utente/gruppo |
Gruppo |
Valido e applicato |
Stesso |
Consentire qualsiasi autorizzazione a un gruppo di account esteri |
Secchio |
Principale non valido |
Valido, ma le autorizzazioni per tutte le operazioni di policy del bucket S3 restituiscono un errore 405 Metodo non consentito quando consentito da una policy |
Consentire a un account esterno root o utente qualsiasi autorizzazione |
Secchio |
Valido, ma le autorizzazioni per tutte le operazioni di policy del bucket S3 restituiscono un errore 405 Metodo non consentito quando consentito da una policy |
Stesso |
Consenti a tutti i permessi per tutte le azioni |
Secchio |
Valido, ma le autorizzazioni per tutte le operazioni di policy del bucket S3 restituiscono un errore 405 Metodo non consentito per l'account esterno root e gli utenti |
Stesso |
Nega a tutti i permessi per tutte le azioni |
Secchio |
Valido e applicato, ma l'account utente root mantiene l'autorizzazione per tutte le operazioni dei criteri del bucket S3 |
Stesso |
Il principale è un utente o un gruppo inesistente |
Secchio |
Principale non valido |
Valido |
La risorsa è un bucket S3 inesistente |
Gruppo |
Valido |
Stesso |
Principal è un gruppo locale |
Secchio |
Principale non valido |
Valido |
La policy concede a un account non proprietario (inclusi gli account anonimi) l'autorizzazione a inserire oggetti. |
Secchio |
Valido. Gli oggetti sono di proprietà dell'account del creatore e la policy del bucket non si applica. L'account del creatore deve concedere le autorizzazioni di accesso per l'oggetto utilizzando gli ACL degli oggetti. |
Valido. Gli oggetti sono di proprietà dell'account proprietario del bucket. Si applica la politica dei bucket. |
Protezione WORM (Write-once-read-many)
È possibile creare bucket WORM (write-once-read-many) per proteggere i dati, i metadati degli oggetti definiti dall'utente e il tagging degli oggetti S3. È possibile configurare i bucket WORM per consentire la creazione di nuovi oggetti e impedire la sovrascrittura o l'eliminazione di contenuti esistenti. Utilizzare uno degli approcci descritti qui.
Per garantire che le sovrascritture vengano sempre negate, puoi:
-
Da Grid Manager, vai su CONFIGURAZIONE > Sicurezza > Impostazioni di sicurezza > Rete e oggetti e seleziona la casella di controllo Impedisci modifiche client.
-
Applicare le seguenti regole e policy S3:
-
Aggiungere un'operazione PutOverwriteObject DENY al criterio S3.
-
Aggiungere un'operazione DeleteObject DENY al criterio S3.
-
Aggiungere un'operazione PutObject ALLOW al criterio S3.
-
|
L'impostazione di DeleteObject su DENY in un criterio S3 non impedisce a ILM di eliminare oggetti quando esiste una regola come "zero copie dopo 30 giorni". |
|
Anche quando vengono applicate tutte queste regole e policy, non proteggono dalle scritture simultanee (vedere Situazione A). Proteggono dalle sovrascritture sequenziali completate (vedere Situazione B). |
Situazione A: Scritture simultanee (non protette)
/mybucket/important.doc PUT#1 ---> OK PUT#2 -------> OK
Situazione B: Sovrascritture sequenziali completate (protette contro)
/mybucket/important.doc PUT#1 -------> PUT#2 ---X (denied)