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.
-
Criteri bucket, che sono gestiti utilizzando le operazioni API GetBucketPolicy, PutBucketPolicy e DeleteBucketPolicy S3 o l'API Tenant Manager o Tenant Management. 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":"*"
"Principal":{"AWS":"*"}
Nell'esempio seguente, l'istruzione utilizza gli elementi Effect, Principal, Action e Resource. In questo esempio viene illustrata un'istruzione completa dei criteri bucket che utilizza l'effetto "Consenti" per assegnare ai Principals, al gruppo admin federated-group/admin
e al gruppo Finance federated-group/finance
, le autorizzazioni per eseguire l'azione s3:ListBucket
sul bucket denominato mybucket
e l'azione s3:GetObject
su tutti gli oggetti all'interno di tale 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:s3:::mybucket", "arn:aws: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.
Coerenza delle policy
Per impostazione predefinita, gli aggiornamenti apportati ai criteri di gruppo sono coerenti. Quando un criterio di gruppo diventa coerente, le modifiche possono richiedere altri 15 minuti, a causa della memorizzazione nella cache dei criteri. Per impostazione predefinita, tutti gli aggiornamenti apportati ai criteri bucket sono fortemente coerenti.
Come richiesto, è possibile modificare le garanzie di coerenza per gli aggiornamenti delle policy bucket. Ad esempio, è possibile rendere disponibile una modifica a un criterio bucket in caso di fuori servizio di un sito.
In questo caso, è possibile impostare l' `Consistency-Control`intestazione nella richiesta PutBucketPolicy oppure utilizzare la richiesta di coerenza PUT Bucket. Quando un criterio bucket diventa coerente, le modifiche possono richiedere altri 8 secondi per diventare effettive, a causa del caching delle policy.
Se si imposta la coerenza su un valore diverso per risolvere una situazione temporanea, assicurarsi di riportare l'impostazione del livello del bucket al valore originale al termine dell'operazione. In caso contrario, tutte le richieste bucket future utilizzeranno l'impostazione modificata. |
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 PutBucketPolicy 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 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, i principal sono indicati 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 abbandoni l'organizzazione e che il nome utente
Alex
venga eliminato. Se un nuovo Alex entra a far parte dell'organizzazione e viene assegnato lo stessoAlex
nome utente, il nuovo utente potrebbe inavvertitamente ereditare 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 entrambe le azioni PutBucketReplication e DeleteBucketReplication. StorageGRID utilizza autorizzazioni separate per ciascuna azione, che corrispondono alla specifica originale di Amazon S3. |
Un'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 |
CreateBucket |
Sì. Nota: Utilizzare solo nei criteri di gruppo. |
s3:Deletebucket |
DeleteBucket |
|
s3:DeleteBucketMetadataNotification |
ELIMINA la configurazione di notifica dei metadati del bucket |
Sì |
s3:DeleteBucketPolicy |
DeleteBucketPolicy |
|
s3:DeleteReplicationConfiguration |
DeleteBucketReplication |
Sì, separare le autorizzazioni per PUT ed DELETE |
s3:GetBucketAcl |
GetBucketAcl |
|
s3:GetBucketCompliance |
OTTIENI compliance bucket (obsoleta) |
Sì |
s3:GetBucketConsistency |
COERENZA del bucket |
Sì |
s3:GetBucketCORS |
GetBucketCors |
|
s3:GetEncryptionConfiguration |
GetBucketEncryption |
|
s3:GetBucketLastAccessTime |
OTTIENI l'ultimo tempo di accesso a bucket |
Sì |
s3:GetBucketLocation |
GetBucketLocation |
|
s3:GetBucketMetadataNotification |
OTTIENI la configurazione della notifica dei metadati del bucket |
Sì |
s3:GetBucketNotification |
GetBucketNotificationConfiguration |
|
s3:GetBucketObjectLockConfiguration |
GetObjectLockConfiguration |
|
s3:GetBucketPolicy |
GetBucketPolicy |
|
s3:GetBucketTagging |
GetBucketTagging |
|
s3:GetBucketVersioning |
GetBucketVersioning |
|
s3:GetLifecycleConfiguration |
GetBucketLifecycleConfiguration |
|
s3:GetReplicationConfiguration |
GetBucketReplication |
|
s3:ListAllMyBucket |
|
Sì, per OTTIENI utilizzo storage. Nota: Utilizzare solo nei criteri di gruppo. |
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 |
PutBucketNotificationConfiguration |
|
s3:PutBucketObjectLockConfiguration |
|
|
s3:PutBucketPolicy |
PutBucketPolicy |
|
s3:PutBucketTagging |
|
|
s3:PutBucketVersioning |
PutBucketVersioning |
|
s3:PutLifecycleConfiguration |
|
|
s3:PutReplicationConfiguration |
PutBucketReplication |
Sì, separare le autorizzazioni per PUT ed DELETE |
Autorizzazioni applicabili agli oggetti
Permessi | OPERAZIONI REST API S3 | Personalizzato per StorageGRID |
---|---|---|
s3:AbortMultipartUpload |
|
|
s3:BypassGovernanceRetention |
|
|
s3:DeleteObject |
|
|
s3:DeleteObjectTagging |
DeleteObjectTagging |
|
s3:DeleteObjectVersionTagging |
DeleteObjectTagging (una versione specifica dell'oggetto) |
|
s3:DeleteObjectVersion |
DeleteObject (una versione specifica dell'oggetto) |
|
s3:GetObject |
|
|
s3:GetObjectAcl |
GetObjectAcl |
|
s3:GetObjectLegalHold |
GetObjectLegalHold |
|
s3:GetObjectRetention |
GetObjectRetention |
|
s3:GetObjectTagging |
GetObjectTagging |
|
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:RestoreObject (Riavvia oggetto) |
RestoreObject |
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 è attivata la versione S3, l'impostazione Nega impedisce alle operazioni PutObjectTagging o DeleteObjectTagging 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). Può includere caratteri jolly * e ?. |
StringNotLike |
Confronta una chiave con un valore stringa in base alla corrispondenza negata (distinzione tra maiuscole e minuscole). Può includere caratteri jolly * e ?. |
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 un tasto con un valore numerico basato sulla corrispondenza "maggiore di". |
NumericGreaterThanEquals |
Confronta una chiave con un valore numerico basato sulla corrispondenza "maggiore o uguale". |
NumericLessThan |
Confronta una chiave con un valore numerico basato sulla corrispondenza "minore di". |
NumericLessThanEquals |
Confronta una chiave con un valore numerico basato sulla corrispondenza "minore di o uguale". |
Bool |
Confronta una chiave con un valore booleano basato sulla 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
Tasti Condition | Azioni | Descrizione |
---|---|---|
aws: SourceIp |
Operatori IP |
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 |
aws:nome utente |
Risorsa/identità |
Viene confrontato con il nome utente del mittente da cui è stata inviata la richiesta. Può essere utilizzato per operazioni bucket o a oggetti. |
s3:delimitatore |
s3:ListBucket e. s3:autorizzazioni ListBucketVersions |
Verrà eseguito un confronto con il parametro delimitatore specificato in una richiesta ListObjects o ListObjectVersions. |
S3:ExistingObjectTag/<tag-key> |
s3:DeleteObjectTagging s3:DeleteObjectVersionTagging s3:GetObject s3:GetObjectAcl 3:GetObjectTagging s3:GetObjectVersion s3:GetObjectVersionAcl s3:GetObjectVersionTagging S3:PutObjectAcl s3:PutObjectTagging S3:PutObjectVersionAcl s3:PutObjectVersionTagging |
Richiede che l'oggetto esistente abbia la chiave e il valore tag specifici. |
s3: tasti max |
s3:ListBucket e. s3:autorizzazioni ListBucketVersions |
Verrà eseguito un confronto con il parametro max-keys specificato in una richiesta ListObjects o ListObjectVersions. |
s3:giorni-rimanenti-conservazione-blocco-oggetto |
s3:PutObject |
Viene confrontato con la data di scadenza specificata nell' `x-amz-object-lock-retain-until-date`intestazione della richiesta o calcolata dal periodo di conservazione predefinito del bucket per assicurarsi che questi valori rientrino nell'intervallo consentito per le seguenti richieste:
|
s3:giorni-rimanenti-conservazione-blocco-oggetto |
s3:PutObjectRetention |
Viene confrontato con la data di scadenza specificata nella richiesta PutObjectRetention per garantire che rientri nell'intervallo consentito. |
s3:prefisso |
s3:ListBucket e. s3:autorizzazioni ListBucketVersions |
Verrà eseguito un confronto con il parametro prefix specificato in una richiesta ListObjects o ListObjectVersions. |
S3:RequestObjectTag/<tag-key> |
s3:PutObject s3:PutObjectTagging s3:PutObjectVersionTagging |
Richiede una chiave e un valore tag specifici quando la richiesta dell'oggetto include il tagging. |
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 nell' `Resource`elemento e nei confronti delle stringhe nell' `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 di condizione nel blocco di condizione:
"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 carattere letterale ?. |
|
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 |
Il criterio concede a un account non proprietario (inclusi gli account anonimi) le autorizzazioni per l'inserimento degli 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 PutObject ALLOW al criterio S3.
-
L'impostazione di DeleteObject su NEGA 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)