Utilizza policy 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 dei criteri delle API REST S3. I criteri di accesso per l'API S3 sono scritti in JSON.
Panoramica dei criteri di accesso
StorageGRID supporta due tipi di policy di accesso.
-
Le policy bucket, configurate utilizzando le policy GET bucket, PUT bucket e DELETE Bucket Policy S3 API Operations. Le policy del bucket sono collegate ai bucket, quindi sono configurate per controllare l'accesso degli utenti nell'account del proprietario del bucket o altri account al bucket e agli oggetti in esso contenuti. Una policy di bucket si applica a un solo bucket ed eventualmente a più gruppi.
-
Criteri di gruppo, configurati utilizzando l'API di gestione tenant Manager o tenant. I criteri di gruppo sono associati a un gruppo dell'account, quindi sono configurati per consentire a tale gruppo di accedere a risorse specifiche di proprietà di tale account. Una policy di gruppo si applica a un solo gruppo e possibilmente a più bucket.
|
Non vi è alcuna differenza di priorità tra le policy di gruppo e quelle di bucket. |
Le policy di gruppo e bucket di StorageGRID seguono una grammatica specifica definita da Amazon. All'interno di ogni policy è presente una serie di dichiarazioni di policy, ciascuna delle quali contiene i seguenti elementi:
-
ID dichiarazione (Sid) (opzionale)
-
Effetto
-
Principal/NotPrincipal
-
Risorsa/NotResource
-
Azione/Notazione
-
Condizione (opzionale)
Le istruzioni dei criteri vengono create utilizzando questa struttura per specificare le autorizzazioni: Grant <Effect> per consentire/negare a <Principal> di eseguire <Action> su <Resource> quando viene applicato <Condition>.
Ciascun elemento di policy viene utilizzato per una funzione specifica:
Elemento | Descrizione |
---|---|
SID |
L'elemento Sid è opzionale. Il Sid deve essere utilizzato solo come descrizione per l'utente. Viene memorizzato ma non interpretato dal sistema StorageGRID. |
Effetto |
Utilizzare l'elemento Effect per stabilire se le operazioni specificate sono consentite o rifiutate. È necessario identificare le operazioni consentite (o negate) su bucket o oggetti utilizzando le parole chiave dell'elemento Action supportate. |
Principal/NotPrincipal |
È 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 una policy bucket. Per i criteri di gruppo, il gruppo a cui è associato il criterio è l'elemento Principal implicito. |
Risorsa/NotResource |
L'elemento Resource identifica bucket e oggetti. Puoi consentire o negare le autorizzazioni per bucket e oggetti utilizzando il nome risorsa Amazon (ARN) per identificare la risorsa. |
Azione/Notazione |
Gli elementi Action e Effect 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 specificamente autorizzazioni, ma è possibile utilizzare la funzione di negazione esplicita per ignorare un'autorizzazione concessa da un altro criterio. |
Condizione |
L'elemento Condition è opzionale. Le condizioni consentono di creare espressioni per determinare quando applicare un criterio. |
Nell'elemento Action, è possibile utilizzare il carattere jolly (*) per specificare tutte le operazioni o un sottoinsieme di operazioni. Ad esempio, questa azione corrisponde a permessi come s3:GetObject, s3:PutObject e s3:DeleteObject.
s3:*Object
Nell'elemento Resource, è 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, ad eccezione dell'impostazione dell'accesso anonimo, che concede l'autorizzazione a tutti. Ad esempio, impostare il carattere jolly (*) come valore Principal.
"Principal":"*"
Nell'esempio seguente, l'istruzione utilizza gli elementi Effect, Principal, Action e Resource. Questo esempio mostra un'istruzione completa di policy bucket che utilizza l'effetto "allow" per assegnare i Principal, il gruppo di amministrazione federated-group/admin
e il gruppo finanziario federated-group/finance
, Autorizzazioni per eseguire l'azione s3:ListBucket
sul bucket denominato mybucket
E l'azione s3:GetObject
su tutti gli oggetti all'interno del bucket.
{ "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:iam:s3:::mybucket", "arn:aws:iam:s3:::mybucket/*" ] } ] }
Il criterio bucket ha un limite di dimensione di 20,480 byte e il criterio di gruppo ha un limite di dimensione di 5,120 byte.
Impostazioni di controllo della coerenza per i criteri
Per impostazione predefinita, gli aggiornamenti apportati ai criteri di gruppo sono coerenti. Una volta che un criterio di gruppo diventa coerente, le modifiche possono richiedere altri 15 minuti per essere effettive, a causa del caching delle policy. Per impostazione predefinita, anche gli aggiornamenti apportati alle policy del bucket sono coerenti.
Come richiesto, è possibile modificare le garanzie di coerenza per gli aggiornamenti delle policy bucket. Ad esempio, è possibile che una modifica a una policy bucket diventi effettiva il prima possibile per motivi di sicurezza.
In questo caso, è possibile impostare Consistency-Control
Nella richiesta di policy PUT bucket, oppure puoi utilizzare la richiesta DI coerenza PUT bucket. Quando si modifica il controllo di coerenza per questa richiesta, è necessario utilizzare il valore all, che fornisce la massima garanzia di coerenza di lettura dopo scrittura. Se si specifica qualsiasi altro valore di controllo di coerenza in un'intestazione per la richiesta di coerenza PUT bucket, la richiesta verrà rifiutata. Se si specifica qualsiasi altro valore per una richiesta di policy PUT bucket, il valore verrà ignorato. Una volta che una policy bucket diventa coerente, le modifiche possono richiedere altri 8 secondi per essere effettive, a causa del caching delle policy.
|
Se si imposta il livello di coerenza su tutto per forzare l'entrata in vigore di una nuova policy di bucket, assicurarsi di ripristinare il valore originale del controllo a livello di bucket al termine dell'operazione. In caso contrario, tutte le future richieste di bucket utilizzeranno l'impostazione all. |
Utilizzare ARN nelle dichiarazioni delle policy
Nelle dichiarazioni delle policy, l'ARN viene utilizzato negli elementi Principal e Resource.
-
Utilizzare questa sintassi per specificare la risorsa S3 ARN:
arn:aws:s3:::bucket-name arn:aws:s3:::bucket-name/object_key
-
Utilizzare questa sintassi per specificare l'ARN della risorsa di 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 far corrispondere zero o più caratteri all'interno della chiave oggetto.
-
I caratteri internazionali, che possono essere specificati nella chiave oggetto, devono essere codificati utilizzando JSON UTF-8 o le sequenze di escape JSON. La codifica in percentuale non è supportata.
Il corpo della richiesta HTTP per l'operazione del criterio PUT bucket deve essere codificato con charset=UTF-8.
Specificare le risorse in un criterio
Nelle istruzioni policy, è possibile utilizzare l'elemento Resource per specificare il bucket o l'oggetto per cui le autorizzazioni sono consentite o negate.
-
Ogni dichiarazione di policy richiede un elemento Resource. In un criterio, le risorse sono indicate dall'elemento
Resource
, o in alternativa,NotResource
per l'esclusione. -
Specificare le risorse con un ARN di risorsa S3. Ad esempio:
"Resource": "arn:aws:s3:::mybucket/*"
-
È inoltre possibile utilizzare le variabili dei criteri all'interno della chiave a oggetti. Ad esempio:
"Resource": "arn:aws:s3:::mybucket/home/${aws:username}/*"
-
Il valore della risorsa può specificare un bucket che non esiste ancora quando viene creata una policy di gruppo.
Specificare le entità in un criterio
Utilizzare l'elemento Principal per identificare l'account utente, gruppo o tenant a cui è consentito/negato l'accesso alla risorsa dall'istruzione policy.
-
Ogni dichiarazione di policy in una policy bucket deve includere un elemento Principal. Le dichiarazioni di policy in una policy di gruppo non necessitano dell'elemento Principal perché il gruppo è considerato il principale.
-
In un criterio, le entità sono indicate dall'elemento “Principal,” o in alternativa “NotPrincipal” 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 dell'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 uno specifico gruppo federated ("Manager"):
"Principal": { "AWS": "arn:aws:iam::27233906934684427525:federated-group/Managers" }
-
È possibile specificare un'entità anonima:
"Principal": "*"
-
Per evitare ambiguità, è possibile utilizzare l'UUID utente invece del 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 cancellato. Se un nuovo Alex entra a far parte dell'organizzazione e viene assegnato lo stessoAlex
nome utente, il nuovo utente potrebbe ereditare involontariamente le autorizzazioni concesse all'utente originale. -
Il valore principale può specificare un nome utente/gruppo che non esiste ancora quando viene creata una policy bucket.
Specificare le autorizzazioni in un criterio
In un criterio, l'elemento Action viene utilizzato per consentire/negare le autorizzazioni a una risorsa. È possibile specificare una serie di autorizzazioni in un criterio, indicate dall'elemento "Action" o, in alternativa, "NotAction" per l'esclusione. Ciascuno di questi elementi viene associato a specifiche operazioni REST API S3.
Le tabelle elencano le autorizzazioni applicabili ai bucket e le autorizzazioni applicabili agli oggetti.
|
Amazon S3 ora utilizza l'autorizzazione s3:PutReplicationConfiguration per le azioni di replica PUT e DELETE bucket. StorageGRID utilizza autorizzazioni separate per ciascuna azione, che corrispondono alla specifica originale di Amazon S3. |
|
L'ELIMINAZIONE viene eseguita quando si utilizza UN PUT per sovrascrivere un valore esistente. |
Autorizzazioni applicabili ai bucket
Permessi | OPERAZIONI REST API S3 | Personalizzato per StorageGRID |
---|---|---|
s3:CreateBucket |
METTI bucket |
|
s3:Deletebucket |
ELIMINA bucket |
|
s3:DeleteBucketMetadataNotification |
ELIMINA la configurazione di notifica dei metadati del bucket |
Sì |
s3:DeleteBucketPolicy |
ELIMINA policy bucket |
|
s3:DeleteReplicationConfiguration |
ELIMINA replica bucket |
Sì, separare i permessi per PUT ed DELETE* |
s3:GetBucketAcl |
OTTIENI ACL bucket |
|
s3:GetBucketCompliance |
OTTIENI compliance bucket (obsoleta) |
Sì |
s3:GetBucketConsistency |
COERENZA del bucket |
Sì |
s3:GetBucketCORS |
OTTIENI bucket cors |
|
s3:GetEncryptionConfiguration |
OTTIENI la crittografia bucket |
|
s3:GetBucketLastAccessTime |
OTTIENI l'ultimo tempo di accesso a bucket |
Sì |
s3:GetBucketLocation |
OTTIENI posizione bucket |
|
s3:GetBucketMetadataNotification |
OTTIENI la configurazione della notifica dei metadati del bucket |
Sì |
s3:GetBucketNotification |
OTTIENI notifica bucket |
|
s3:GetBucketObjectLockConfiguration |
OTTIENI configurazione blocco oggetto |
|
s3:GetBucketPolicy |
OTTIENI la policy bucket |
|
s3:GetBucketTagging |
OTTIENI il contrassegno bucket |
|
s3:GetBucketVersioning |
SCARICA la versione di bucket |
|
s3:GetLifecycleConfiguration |
OTTIENI il ciclo di vita del bucket |
|
s3:GetReplicationConfiguration |
OTTIENI la replica bucket |
|
s3:ListAllMyBucket |
|
Sì, per OTTENERE l'utilizzo dello storage |
s3:ListBucket |
|
|
s3:ListBucketMultipartUploads |
|
|
s3:ListBucketVersions |
SCARICA le versioni di bucket |
|
s3:PutBucketCompliance |
METTERE la compliance del bucket (obsoleta) |
Sì |
s3:PutBucketConsistency |
METTI la coerenza del bucket |
Sì |
s3:PutBucketCORS |
|
|
s3:PutEncryptionConfiguration |
|
|
s3:PutBucketLastAccessTime |
TEMPO ULTIMO accesso bucket |
Sì |
s3:PutBucketMetadataNotification |
INSERIRE la configurazione della notifica dei metadati del bucket |
Sì |
s3:PutBucketNotification |
NOTIFICA DEL bucket |
|
s3:PutBucketObjectLockConfiguration |
|
|
s3:PutBucketPolicy |
METTI la policy bucket |
|
s3:PutBucketTagging |
|
|
s3:PutBucketVersioning |
METTERE il bucket in versione |
|
s3:PutLifecycleConfiguration |
|
|
s3:PutReplicationConfiguration |
METTI la replica del bucket |
Sì, separare i permessi per PUT ed DELETE* |
Autorizzazioni applicabili agli oggetti
Permessi | OPERAZIONI REST API S3 | Personalizzato per StorageGRID |
---|---|---|
s3:AbortMultipartUpload |
|
|
s3:BypassGovernanceRetention |
|
|
s3:DeleteObject |
|
|
s3:DeleteObjectTagging |
ELIMINA tag oggetti |
|
s3:DeleteObjectVersionTagging |
DELETE Object Tagging (ELIMINA tag oggetti) (una versione specifica dell'oggetto) |
|
s3:DeleteObjectVersion |
DELETE Object (UNA versione specifica dell'oggetto) |
|
s3:GetObject |
|
|
s3:GetObjectAcl |
GET Object ACL (OTTIENI ACL oggetto) |
|
s3:GetObjectLegalHold |
OTTENERE un blocco legale degli oggetti |
|
s3:GetObjectRetention |
OTTIENI la conservazione degli oggetti |
|
s3:GetObjectTagging |
OTTIENI tag oggetti |
|
s3:GetObjectVersionTagging |
GET Object Tagging (OTTIENI tag oggetti) (una versione specifica dell'oggetto) |
|
s3:GetObjectVersion |
GET Object (UNA versione specifica dell'oggetto) |
|
s3:ListMultipartUploadParts |
List Parts, POST-ripristino degli oggetti |
|
s3:PutObject |
|
|
s3:PutObjectLegalHold |
METTERE in attesa legale l'oggetto |
|
s3:PutObjectRetention |
METTI la conservazione degli oggetti |
|
s3:PutObjectTagging |
INSERIRE tag oggetti |
|
s3:PutObjectVersionTagging |
PUT Object Tagging (UNA versione specifica dell'oggetto) |
|
s3:PutOverwriteObject |
|
Sì |
s3:RestoreObject (Riavvia oggetto) |
RIPRISTINO POST-oggetto |
Utilizza 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 impostazioni possibili per questa autorizzazione includono:
-
Allow: Il client può sovrascrivere un oggetto. Questa è l'impostazione predefinita.
-
Nega: Il client non può sovrascrivere un oggetto. Se impostata 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 il tag S3 non possono essere sovrascritti.
-
Tutte le operazioni di acquisizione in corso vengono annullate e viene restituito un errore.
-
Se la versione S3 è attivata, l'impostazione Nega impedisce alle operazioni DI TAGGING OGGETTI PUT o DELETE di modificare il TagSet per un oggetto e le relative versioni non correnti.
-
-
Se non viene trovato un oggetto esistente, questa autorizzazione non ha effetto.
-
-
Quando questa autorizzazione non è presente, l'effetto è lo stesso di se Allow è stato impostato.
|
Se il criterio S3 corrente 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 il tagging degli oggetti. Inoltre, se la casella di controllo Impedisci modifica client è selezionata (CONFIGURAZIONE > Impostazioni di sicurezza > rete e oggetti), tale impostazione sovrascrive l'impostazione dell'autorizzazione PutOverwriteObject. |
Specificare le condizioni in un criterio
Le condizioni definiscono quando una policy sarà in vigore. Le condizioni sono costituite da operatori e coppie chiave-valore.
Le condizioni utilizzano coppie chiave-valore per la valutazione. Un elemento Condition può contenere più condizioni e ciascuna condizione può contenere più coppie chiave-valore. Il blocco Condition utilizza il seguente formato:
Condition: { condition_type: { condition_key: condition_values
Nell'esempio seguente, la condizione ipaddress utilizza la chiave SourceIp Condition.
"Condition": { "IpAddress": { "aws:SourceIp": "54.240.143.0/24" ... }, ...
Operatori delle condizioni supportati
Gli operatori delle condizioni sono classificati come segue:
-
Stringa
-
Numerico
-
Booleano
-
Indirizzo IP
-
Controllo nullo
Condizionare gli operatori | Descrizione |
---|---|
StringEquals |
Confronta una chiave con un valore stringa in base alla corrispondenza esatta (distinzione tra maiuscole e minuscole). |
StringNotEquals |
Confronta una chiave con un valore stringa in base alla corrispondenza negata (distinzione tra maiuscole e minuscole). |
StringEqualsIgnoreCase |
Confronta una chiave con un valore stringa in base alla corrispondenza esatta (ignora maiuscole/minuscole). |
StringNotEqualsIgnoreCase |
Confronta una chiave con un valore stringa in base alla corrispondenza negata (ignora maiuscole/minuscole). |
StringLike |
Confronta una chiave con un valore stringa in base alla corrispondenza esatta (distinzione tra maiuscole e minuscole). Possono includere * e ? caratteri jolly. |
StringNotLike |
Confronta una chiave con un valore stringa in base alla corrispondenza negata (distinzione tra maiuscole e minuscole). Possono includere * e ? caratteri jolly. |
Valori numerici Equals |
Confronta una chiave con un valore numerico in base alla corrispondenza esatta. |
NumericNotEquals |
Confronta una chiave con un valore numerico in base alla corrispondenza negata. |
NumericGreaterThan |
Confronta una chiave con un valore numerico in base alla corrispondenza “maggiore di”. |
NumericGreaterThanEquals |
Confronta una chiave con un valore numerico in base alla corrispondenza “maggiore o uguale a”. |
NumericLessThan |
Confronta una chiave con un valore numerico in base alla corrispondenza “meno di”. |
NumericLessThanEquals |
Confronta una chiave con un valore numerico in base alla corrispondenza “minore o uguale a”. |
Bool |
Confronta una chiave con un valore booleano in base alla corrispondenza “true o false”. |
Indirizzo IP |
Confronta una chiave con un indirizzo IP o un intervallo di indirizzi IP. |
NotIpAddress |
Confronta una chiave con un indirizzo IP o un intervallo di indirizzi IP in base alla corrispondenza negata. |
Nullo |
Controlla se è presente una chiave di condizione nel contesto della richiesta corrente. |
Chiavi di condizione supportate
Categoria | Chiavi di condizione applicabili | Descrizione |
---|---|---|
Operatori IP |
aws: SourceIp |
Viene confrontato con l'indirizzo IP da cui è stata inviata la richiesta. Può essere utilizzato per operazioni bucket o a oggetti. Nota: se la richiesta S3 è stata inviata tramite il servizio Load Balancer sui nodi Admin e Gateway, viene confrontato con l'indirizzo IP a monte del servizio Load Balancer. Nota: Se si utilizza un bilanciamento del carico non trasparente di terze parti, questo viene confrontato con l'indirizzo IP del bilanciamento del carico. Qualsiasi |
Risorsa/identità |
aws:nome utente |
Viene confrontato con il nome utente del mittente da cui è stata inviata la richiesta. Può essere utilizzato per operazioni bucket o a oggetti. |
s3:ListBucket e. s3:autorizzazioni ListBucketVersions |
s3:delimitatore |
Viene confrontato con il parametro delimitatore specificato in una richiesta GET bucket o GET Bucket Object Versions. |
s3:ListBucket e. s3:autorizzazioni ListBucketVersions |
s3: tasti max |
Viene confrontato con il parametro max-keys specificato in una richiesta GET bucket o GET Bucket Object Versions. |
s3:ListBucket e. s3:autorizzazioni ListBucketVersions |
s3:prefisso |
Viene confrontato con il parametro di prefisso specificato in una richiesta DI versioni DI oggetti GET Bucket o GET Bucket. |
s3:PutObject |
s3:giorni-rimanenti-conservazione-blocco-oggetto |
Viene confrontato con la data di conservazione specificata in
|
s3:PutObjectRetention |
s3:giorni-rimanenti-conservazione-blocco-oggetto |
Viene confrontato con la data di conservazione fino alla data specificata nella richiesta DI conservazione degli oggetti PUT per garantire che rientri nell'intervallo consentito. |
Specificare le variabili in un criterio
È possibile utilizzare le variabili nei criteri per popolare le informazioni sui criteri quando sono disponibili. È possibile utilizzare le variabili dei criteri in Resource
confronto tra elementi e stringhe in Condition
elemento.
In questo esempio, la variabile ${aws:username}
Fa parte dell'elemento Resource:
"Resource": "arn:aws:s3:::bucket-name/home/${aws:username}/*"
In questo esempio, la variabile ${aws:username}
fa parte del valore della condizione nel blocco condition:
"Condition": { "StringLike": { "s3:prefix": "${aws:username}/*" ... }, ...
Variabile | Descrizione |
---|---|
|
Utilizza la chiave SourceIp come variabile fornita. |
|
Utilizza la chiave Username come variabile fornita. |
|
Utilizza la chiave di prefisso specifica 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 letterale ? carattere. |
|
Carattere speciale. Utilizza il carattere come carattere letterale. |
Creare policy che richiedono una gestione speciale
A volte un criterio può concedere autorizzazioni pericolose per la sicurezza o pericolose per operazioni continue, come il blocco dell'utente root dell'account. L'implementazione dell'API REST di StorageGRID S3 è meno restrittiva durante la convalida delle policy rispetto ad Amazon, ma altrettanto rigorosa durante la valutazione delle policy.
Descrizione della policy | Tipo di policy | Comportamento di Amazon | Comportamento di StorageGRID |
---|---|---|---|
Negare automaticamente le autorizzazioni all'account root |
Bucket |
Valido e applicato, ma l'account utente root conserva l'autorizzazione per tutte le operazioni di policy del bucket S3 |
Stesso |
Negare automaticamente le autorizzazioni all'utente/gruppo |
Gruppo |
Valido e applicato |
Stesso |
Consenti a un gruppo di account esterno qualsiasi autorizzazione |
Bucket |
Principal non valido |
Valido, ma le autorizzazioni per tutte le operazioni dei criteri del bucket S3 restituiscono un errore 405 Method Not Allowed (metodo non consentito) quando consentito da un criterio |
Consentire a un account root esterno o a un utente qualsiasi autorizzazione |
Bucket |
Valido, ma le autorizzazioni per tutte le operazioni dei criteri del bucket S3 restituiscono un errore 405 Method Not Allowed (metodo non consentito) quando consentito da un criterio |
Stesso |
Consenti a tutti i permessi per tutte le azioni |
Bucket |
Valido, ma le autorizzazioni per tutte le operazioni dei criteri del bucket S3 restituiscono un errore 405 Method Not Allowed (metodo non consentito) per l'account root esterno e gli utenti |
Stesso |
Negare a Everyone le autorizzazioni per tutte le azioni |
Bucket |
Valido e applicato, ma l'account utente root conserva l'autorizzazione per tutte le operazioni di policy del bucket S3 |
Stesso |
Principal è un utente o un gruppo inesistente |
Bucket |
Principal non valido |
Valido |
La risorsa è un bucket S3 inesistente |
Gruppo |
Valido |
Stesso |
Principal è un gruppo locale |
Bucket |
Principal non valido |
Valido |
La policy concede a un account non proprietario (inclusi gli account anonimi) le autorizzazioni PER INSERIRE gli oggetti |
Bucket |
Valido. Gli oggetti sono di proprietà dell'account creatore e la policy bucket non si applica. L'account creatore deve concedere le autorizzazioni di accesso per l'oggetto utilizzando gli ACL a oggetti. |
Valido. Gli oggetti sono di proprietà dell'account proprietario del bucket. Si applica la policy 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. I bucket WORM vengono configurati in modo da consentire la creazione di nuovi oggetti e impedire la sovrascrittura o l'eliminazione del contenuto esistente. Utilizzare uno degli approcci descritti di seguito.
Per garantire che le sovrascritture vengano sempre negate, è possibile:
-
Da Grid Manager, selezionare CONFIGURATION > Security > Security settings > Network and Objects, quindi selezionare la casella di controllo Impedisci modifica client.
-
Applicare le seguenti regole e criteri S3:
-
Aggiungere un'operazione di NEGAZIONE PutOverwriteObject al criterio S3.
-
Aggiungere un'operazione di NEGAZIONE DeleteObject al criterio S3.
-
Aggiungere un'operazione PUT object ALLOW al criterio S3.
-
|
L'impostazione di DeleteObject per NEGARE in un criterio S3 non impedisce a ILM di eliminare oggetti quando esiste una regola come “zero copie dopo 30 giorni”. |
|
Anche quando tutte queste regole e policy vengono applicate, non si proteggono dalle scritture simultanee (vedi situazione A). Si 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 (con protezione)
/mybucket/important.doc PUT#1 -------> PUT#2 ---X (denied)