Criteri e autorizzazioni in StorageGRID
Di seguito sono riportati alcuni criteri e autorizzazioni di esempio in StorageGRID S3.
La struttura di una politica
In StorageGRID, le policy di gruppo sono le stesse delle policy di servizio dell'utente AWS (IAM) S3.
I criteri di gruppo sono necessari in StorageGRID. Un utente con S3 chiavi di accesso ma non assegnato a un gruppo di utenti o assegnato a un gruppo senza un criterio che concede alcune autorizzazioni, non potrà accedere a nessun dato.
I criteri bucket e gruppo condividono la maggior parte degli stessi elementi. Le policy vengono create in formato json e possono essere generate utilizzando "Generatore di policy AWS"
Tutti i criteri definiscono l'effetto, le azioni e le risorse. I criteri bucket definiranno anche un'entità.
Il effetto sarà quello di consentire o negare la richiesta.
Il Principal
-
Valido solo per le politiche bucket.
-
L'entità è costituita dagli account/utenti ai quali vengono concesse o negate le autorizzazioni.
-
Può essere definito come:
-
Un carattere jolly "*"
"Principal":"*"
"Principal":{"AWS":"*"}
-
Un ID tenant per tutti gli utenti in un tenant (equivalente all'account AWS)
"Principal": { "AWS": "27233906934684427525" }
-
Un utente (locale o federato dall'interno del tenant in cui risiede il bucket o un altro tenant nella griglia)
"Principal": { "AWS": "arn:aws:iam::76233906934699427431:user/tenant1user1" }
"Principal": { "AWS": "arn:aws:iam::27233906934684427525:federated-user/tenant2user1" }
-
Un gruppo (locale o federato dall'interno del tenant in cui risiede il bucket o un altro tenant nella griglia).
"Principal": { "AWS": "arn:aws:iam::76233906934699427431:group/DevOps" }
"Principal": { "AWS": "arn:aws:iam::27233906934684427525:federated-group/Managers" }
-
La azione è l'insieme di operazioni S3 concesse o negate agli utenti.
|
Per i criteri di gruppo, l'azione S3:ListBucket Allowed è necessaria per consentire agli utenti di eseguire qualsiasi azione S3. |
La risorsa è il bucket o i bucket a cui sono stati concessi o negati i principi di eseguire le azioni su. Facoltativamente, può essere presente una condizione * per quando l'azione del criterio è valida.
Il formato del criterio JSON sarà il seguente:
{
"Statement": [
{
"Sid": "Custom name for this permission",
"Effect": "Allow or Deny",
"Principal": {
"AWS": [
"arn:aws:iam::tenant_ID::user/User_Name",
"arn:aws:iam::tenant_ID::federated-user/User_Name",
"arn:aws:iam::tenant_ID:group/Group_Name",
"arn:aws:iam::tenant_ID:federated-group/Group_Name",
"tenant_ID"
]
},
"Action": [
"s3:ListBucket",
"s3:Other_Action"
],
"Resource": [
"arn:aws:s3:::Example_Bucket",
"arn:aws:s3:::Example_Bucket/*"
],
}
]
}
Utilizzo del generatore di policy AWS
AWS Policy generator è un ottimo tool per aiutare a ottenere il codice json con il formato e le informazioni corrette che stai cercando di implementare.
Per generare le autorizzazioni per un criterio di gruppo StorageGRID: * Scegliere il criterio IAM per il tipo di criterio. * Selezionare il pulsante per l'effetto desiderato - Allow (Consenti) o Deny (Nega). È buona norma avviare i criteri con le autorizzazioni di negazione e quindi aggiungere le autorizzazioni di autorizzazione * nel menu a discesa azioni fare clic sulla casella accanto a tutte le S3 azioni che si desidera includere in questa autorizzazione o nella casella "tutte le azioni". * Digitare i percorsi bucket nella casella Amazon Resource Name (ARN). Includere "arn:aws:S3:::" prima del nome bucket. Es. "arn:aws:s3:::example_bucket"
Per generare le autorizzazioni per un criterio bucket: * Scegliere il criterio bucket S3 per il tipo di criterio. * Selezionare il pulsante per l'effetto desiderato - Allow (Consenti) o Deny (Nega). È buona norma avviare i criteri con le autorizzazioni di negazione e quindi aggiungere il tipo Consenti autorizzazioni * nelle informazioni relative all'utente o al gruppo per il principale. * Nell'elenco a discesa azioni, fare clic sulla casella accanto a tutte le S3 azioni che si desidera includere in questa autorizzazione o nella casella "tutte le azioni". * Digitare i percorsi bucket nella casella Amazon Resource Name (ARN). Includere "arn:aws:S3:::" prima del nome bucket. Es. "arn:aws:s3:::example_bucket"
Ad esempio, se si desidera generare un criterio bucket per consentire a tutti gli utenti di eseguire operazioni GetObject su tutti gli oggetti nel bucket, mentre solo gli utenti appartenenti al gruppo "Marketing" nell'account specificato possono accedere completamente.
-
Selezionare S3 criterio bucket come tipo di criterio.
-
Scegliere l'effetto Consenti
-
Inserisci le informazioni del gruppo Marketing - arn:aws:iam::95390887230002558202:Federated-group/Marketing
-
Fare clic sulla casella "tutte le azioni"
-
Inserisci le informazioni del bucket - arn:aws:S3:::example_bucket,arn:aws:S3:::example_bucket/*
-
Fare clic sul pulsante "Aggiungi dichiarazione"
-
Scegliere l'effetto Consenti
-
Inserisci l'asterisco * per tutti
-
Fare clic sulla casella accanto alle azioni GetObject e ListBucket"
-
Inserisci le informazioni del bucket - arn:aws:S3:::example_bucket,arn:aws:S3:::example_bucket/*
-
Fare clic sul pulsante "Aggiungi dichiarazione"
-
Fare clic sul pulsante "genera criterio" per visualizzare una finestra a comparsa con la policy generata.
-
Copiare il testo json completo che dovrebbe avere l'aspetto seguente:
{
"Id": "Policy1744399292233",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1744399152830",
"Action": "s3:*",
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::example_bucket",
"arn:aws:s3:::example_bucket/*"
],
"Principal": {
"AWS": [
"arn:aws:iam::95390887230002558202:federated-group/Marketing"
]
}
},
{
"Sid": "Stmt1744399280838",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::example_bucket",
"arn:aws:s3:::example_bucket/*"
],
"Principal": "*"
}
]
}
Questo json può essere utilizzato così com'è, oppure è possibile rimuovere le righe ID e Version sopra la riga "Statement" e personalizzare il Sid per ogni autorizzazione con un titolo più significativo per ogni autorizzazione o anche questi possono essere rimossi.
Ad esempio:
{
"Statement": [
{
"Sid": "MarketingAllowFull",
"Action": "s3:*",
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::example_bucket",
"arn:aws:s3:::example_bucket/*"
],
"Principal": {
"AWS": [
"arn:aws:iam::95390887230002558202:federated-group/Marketing"
]
}
},
{
"Sid": "EveryoneReadOnly",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::example_bucket",
"arn:aws:s3:::example_bucket/*"
],
"Principal": "*"
}
]
}
Policy di gruppo (IAM)
Accesso bucket stile home directory
Questo criterio di gruppo consente solo agli utenti di accedere agli oggetti nel bucket denominato username.
{
"Statement": [
{
"Sid": "AllowListBucketOfASpecificUserPrefix",
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::home",
"Condition": {
"StringLike": {
"s3:prefix": "${aws:username}/*"
}
}
},
{
"Sid": "AllowUserSpecificActionsOnlyInTheSpecificUserPrefix",
"Effect": "Allow",
"Action": "s3:*Object",
"Resource": "arn:aws:s3:::home/?/?/${aws:username}/*"
}
]
}
Negare la creazione del bucket di blocco degli oggetti
Questo criterio di gruppo limiterà gli utenti a creare un bucket con il blocco degli oggetti attivato nel bucket.
|
Questo criterio non viene applicato nell'interfaccia utente di StorageGRID, ma viene applicato solo dall'API S3. |
{
"Statement": [
{
"Action": "s3:*",
"Effect": "Allow",
"Resource": "arn:aws:s3:::*"
},
{
"Action": [
"s3:PutBucketObjectLockConfiguration",
"s3:PutBucketVersioning"
],
"Effect": "Deny",
"Resource": "arn:aws:s3:::*"
}
]
}
Limite di conservazione del blocco degli oggetti
Questa policy di bucket limiterà la durata della conservazione del blocco oggetto a 10 giorni o meno
{
"Version":"2012-10-17",
"Id":"CustSetRetentionLimits",
"Statement": [
{
"Sid":"CustSetRetentionPeriod",
"Effect":"Deny",
"Principal":"*",
"Action": [
"s3:PutObjectRetention"
],
"Resource":"arn:aws:s3:::testlock-01/*",
"Condition": {
"NumericGreaterThan": {
"s3:object-lock-remaining-retention-days":"10"
}
}
}
]
}
Impedire agli utenti di eliminare gli oggetti in base all'ID versione
Questo criterio di gruppo limita l'eliminazione degli oggetti con versione in base all'ID versione
{
"Statement": [
{
"Action": [
"s3:DeleteObjectVersion"
],
"Effect": "Deny",
"Resource": "arn:aws:s3:::*"
},
{
"Action": "s3:*",
"Effect": "Allow",
"Resource": "arn:aws:s3:::*"
}
]
}
Limitare un gruppo a una singola sottodirectory (prefisso) con accesso in sola lettura
Questo criterio consente ai membri del gruppo di accedere in sola lettura a una sottodirectory (prefisso) all'interno di un bucket. Il nome del bucket è "studio" e la sottodirectory è "study01".
{
"Statement": [
{
"Sid": "AllowUserToSeeBucketListInTheConsole",
"Action": [
"s3:ListAllMyBuckets"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::*"
]
},
{
"Sid": "AllowRootAndstudyListingOfBucket",
"Action": [
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3::: study"
],
"Condition": {
"StringEquals": {
"s3:prefix": [
"",
"study01/"
],
"s3:delimiter": [
"/"
]
}
}
},
{
"Sid": "AllowListingOfstudy01",
"Action": [
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::study"
],
"Condition": {
"StringLike": {
"s3:prefix": [
"study01/*"
]
}
}
},
{
"Sid": "AllowAllS3ActionsInstudy01Folder",
"Effect": "Allow",
"Action": [
"s3:Getobject"
],
"Resource": [
"arn:aws:s3:::study/study01/*"
]
}
]
}
Criteri benna
Limitare il bucket a un singolo utente con accesso in sola lettura
Questo criterio consente a un singolo utente di avere accesso in sola lettura a un bucket e nega esplicitamente l'accesso a tutti gli altri utenti. Il raggruppamento delle istruzioni Nega in cima alla policy è una buona pratica per una valutazione più rapida.
{
"Statement": [
{
"Sid": "Deny non user1",
"Effect": "Deny",
"NotPrincipal": {
"AWS": "arn:aws:iam::34921514133002833665:user/user1"
},
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::bucket1",
"arn:aws:s3:::bucket1/*"
]
},
{
"Sid": "Allow user1 read access to bucket bucket1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::34921514133002833665:user/user1"
},
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::bucket1",
"arn:aws:s3:::bucket1/*"
]
}
]
}
limita un bucket a pochi utenti con accesso in sola lettura.
{
"Statement": [
{
"Sid": "Deny all S3 actions to employees 002-005",
"Effect": "deny",
"Principal": {
"AWS": [
"arn:aws:iam::46521514133002703882:user/employee-002",
"arn:aws:iam::46521514133002703882:user/employee-003",
"arn:aws:iam::46521514133002703882:user/employee-004",
"arn:aws:iam::46521514133002703882:user/employee-005"
]
},
"Action": "*",
"Resource": [
"arn:aws:s3:::databucket1",
"arn:aws:s3:::databucket1/*"
]
},
{
"Sid": "Allow read-only access for employees 002-005",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::46521514133002703882:user/employee-002",
"arn:aws:iam::46521514133002703882:user/employee-003",
"arn:aws:iam::46521514133002703882:user/employee-004",
"arn:aws:iam::46521514133002703882:user/employee-005"
]
},
"Action": [
"s3:GetObject",
"s3:GetObjectTagging",
"s3:GetObjectVersion"
],
"Resource": [
"arn:aws:s3:::databucket1",
"arn:aws:s3:::databucket1/*"
]
}
]
}
Limita l'eliminazione degli oggetti con versione in un bucket da parte dell'utente
Questo criterio bucket limiterà un utente (identificato dall'ID utente "56622399308951294926") a eliminare gli oggetti con versione in base all'ID versione
{
"Statement": [
{
"Action": [
"s3:DeleteObjectVersion"
],
"Effect": "Deny",
"Resource": "arn:aws:s3:::verdeny/*",
"Principal": {
"AWS": [
"56622399308951294926"
]
}
},
{
"Action": "s3:*",
"Effect": "Allow",
"Resource": "arn:aws:s3:::verdeny/*",
"Principal": {
"AWS": [
"56622399308951294926"
]
}
}
]
}