Cómo StorageGRID usa las políticas de AWS para controlar el acceso a los buckets y objetos de S3
StorageGRID utiliza el lenguaje de políticas de Amazon Web Services (AWS) para permitir a los usuarios de S3 controlar el acceso a los buckets y a los objetos dentro de esos buckets. El sistema StorageGRID implementa un subconjunto del lenguaje de políticas de la API de REST de S3. Las políticas de acceso para la API de S3 se escriben en JSON.
Resumen de la política de acceso
StorageGRID admite tres tipos de políticas de acceso:
-
Políticas de bucket, que se gestionan mediante las operaciones de la API de S3 GetBucketPolicy, PutBucketPolicy y DeleteBucketPolicy, o bien a través de Tenant Manager o la API de gestión de inquilinos. Las políticas de bucket se asocian a los buckets, por lo que se configuran para controlar el acceso de los usuarios de la cuenta del propietario del bucket o de otras cuentas al bucket y a los objetos que contiene. Una política de bucket se aplica únicamente a un bucket y, posiblemente, a varios grupos.
-
Políticas de grupo, que se configuran mediante Tenant Manager o Tenant Management API. Las políticas de grupo se asocian a un grupo de la cuenta, por lo que se configuran para permitir que ese grupo acceda a recursos específicos que pertenecen a esa cuenta. Una política de grupo se aplica únicamente a un grupo y posiblemente a varios buckets.
-
Políticas de sesión, que se incluyen como parte de hacer una solicitud AssumeRole. Las políticas de sesión solo se aplican a la sesión en cuestión y definen con mayor detalle los permisos que tiene el usuario, además de los concedidos por la política de grupo y la política de bucket.
|
|
No hay ninguna diferencia de prioridad entre las políticas de grupo, de bucket y de sesión. |
Las políticas de bucket y de grupo de StorageGRID siguen una sintaxis específica definida por Amazon. Dentro de cada política hay un arreglo de instrucciones de política, y cada instrucción contiene los siguientes elementos:
-
Identificador de declaración (Sid) (opcional)
-
Efecto
-
Principal/NotPrincipal
-
Recurso/NotResource
-
Acción/NotAction
-
Condición (opcional)
Las declaraciones de políticas se elaboran siguiendo esta estructura para especificar los permisos: conceder <Effect> para permitir o denegar a <Principal> realizar <Action> en <Resource> cuando <Condition> aplica.
Cada elemento de la política se utiliza para una función específica:
| Elemento | Descripción |
|---|---|
Sid |
El elemento Sid es opcional. El Sid solo tiene como finalidad servir de descripción para el usuario. El sistema StorageGRID lo almacena, pero no lo interpreta. |
Efecto |
Utiliza el elemento Effect para establecer si las operaciones especificadas están permitidas o denegadas. Debes identificar las operaciones que permites (o deniegas) en los buckets u objetos usando las palabras clave admitidas del elemento Action. |
Principal/NotPrincipal |
Puedes permitir que usuarios, grupos y cuentas accedan a recursos específicos y realicen acciones específicas. Si la solicitud no incluye ninguna firma S3, se permite el acceso anónimo especificando el carácter comodín (*) como principal. Por defecto, solo la cuenta raíz tiene acceso a los recursos que pertenecen a la cuenta. Solo es necesario especificar el elemento «Principal» en una política de bucket. En el caso de las políticas de grupo, el grupo al que está asociada la política es el elemento «Principal» implícito. |
Recurso/NotResource |
El elemento «Resource» identifica los buckets y los objetos. Puedes conceder o denegar permisos a los buckets y objetos utilizando el nombre de recurso de Amazon (ARN) para identificar el recurso. |
Acción/NotAction |
Los elementos «Acción» y «Efecto» son los dos componentes de los permisos. Cuando un grupo solicita un recurso, se le concede o se le deniega el acceso al recurso. El acceso queda denegado a menos que tú asignes permisos de forma específica, pero puedes usar la denegación explícita para anular un permiso concedido por otra política. |
Estado |
El elemento «Condition» es opcional. Las condiciones te permiten crear expresiones para determinar cuándo debe aplicarse una política. |
En el elemento Action, puedes utilizar el carácter comodín (*) para especificar todas las operaciones o un subconjunto de operaciones. Por ejemplo, esta Action coincide con permisos como s3:GetObject, s3:PutObject y s3:DeleteObject.
s3:*Object
En el elemento «Resource», puedes utilizar los caracteres comodín (*) y (?). Mientras que el asterisco (*) coincide con 0 o más caracteres, el signo de interrogación (?) coincide con cualquier carácter individual.
En el elemento Principal, no se admiten caracteres comodín excepto para configurar el acceso anónimo, lo que otorga permiso a todo el mundo. Por ejemplo, si estableces el comodín (*) como el valor de Principal.
"Principal":"*"
"Principal":{"AWS":"*"}
En el siguiente ejemplo, la declaración utiliza los elementos «Effect», «Principal», «Action» y «Resource». Este ejemplo muestra una declaración completa de política de bucket que utiliza el efecto «Allow» para otorgar a los Principals, el admin group federated-group/admin y el finance group federated-group/finance, permisos para realizar la Action s3:ListBucket en el bucket llamado mybucket y la Action s3:GetObject en todos los objetos dentro de ese 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/*"
]
}
]
}
La política de bucket tiene un límite de tamaño de 20,480 bytes, y la política de grupo tiene un límite de tamaño de 5,120 bytes.
Coherencia en las políticas
De forma predeterminada, cualquier actualización que realices en las políticas de grupo es de consistencia eventual. Cuando una política de grupo alcanza la consistencia, los cambios pueden tardar hasta 15 minutos adicionales en surtir efecto debido al almacenamiento en caché de las políticas. De forma predeterminada, cualquier actualización que realices en las políticas de bucket es de consistencia fuerte.
Si es necesario, puedes modificar las garantías de consistencia para las actualizaciones de la política de un bucket. Por ejemplo, es posible que desees que un cambio en la política de un bucket esté disponible durante un fallo energético en el sitio.
En este caso, puedes establecer el encabezado Consistency-Control en la solicitud PutBucketPolicy, o puedes usar la solicitud PUT Bucket consistency. Cuando una política de bucket se vuelve coherente, los cambios pueden tardar 8 segundos adicionales en surtir efecto, debido al almacenamiento en caché de la política.
|
|
Si ajustas la consistencia a un valor diferente para solucionar una situación temporal, asegúrate de volver a establecer la configuración a nivel de bucket en su valor original cuando hayas terminado. De lo contrario, todas las futuras solicitudes al bucket usarán la configuración modificada. |
¿Qué es la política de sesión?
Una política de sesión es una política de acceso que restringe temporalmente los permisos disponibles durante una sesión concreta, como cuando un usuario asume un grupo. Una política de sesión solo puede permitir un subconjunto de permisos y no puede conceder permisos adicionales. El propio grupo puede tener permisos más amplios.
Usa ARN en las declaraciones de política
En las declaraciones de política, el ARN se usa en los elementos Principal y Resource.
-
Utiliza esta sintaxis para especificar el ARN del recurso de S3:
arn:aws:s3:::bucket-name arn:aws:s3:::bucket-name/object_key
-
Utiliza esta sintaxis para especificar el ARN del recurso de identidad (usuarios y grupos):
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
Otras consideraciones:
-
Puedes utilizar el asterisco (*) como comodín para que coincida con cero o más caracteres dentro de la clave del objeto.
-
Los caracteres internacionales, que pueden especificarse en la clave del objeto, deben codificarse utilizando JSON UTF-8 o usando las secuencias de escape JSON \u. No se admite la codificación porcentual.
El cuerpo de la solicitud HTTP para la operación PutBucketPolicy debe codificarse con charset=UTF-8.
Especifica recursos en una política
En las declaraciones de política, puedes usar el elemento Resource para especificar el bucket u objeto para el que se permiten o deniegan permisos.
-
Cada declaración de política requiere un elemento Resource. En una política, los recursos se indican mediante el elemento
Resource, o alternativamente,NotResourcepara exclusión. -
Especificas los recursos con un ARN de recurso de S3. Por ejemplo:
"Resource": "arn:aws:s3:::mybucket/*"
-
También puedes utilizar variables de política dentro de la clave del objeto. Por ejemplo:
"Resource": "arn:aws:s3:::mybucket/home/${aws:username}/*" -
El valor del recurso puede especificar un bucket que aún no exista cuando se crea una política de grupo.
Especifica entidades en una política
Utiliza el elemento Principal para identificar la cuenta de usuario, grupo o inquilino a la que la declaración de política permite o deniega el acceso al recurso.
-
Cada declaración de política en una política de bucket debe incluir un elemento Principal. Las declaraciones de política en una política de grupo no necesitan el elemento Principal porque se entiende que el grupo es el principal.
-
En una política, los principales se indican mediante el elemento «Principal» o, alternativamente, «NotPrincipal» en caso de exclusión.
-
Las identidades basadas en cuentas deben especificarse mediante un ID o un ARN:
"Principal": { "AWS": "account_id"} "Principal": { "AWS": "identity_arn" } -
Este ejemplo utiliza el ID de cuenta de inquilino 27233906934684427525, que incluye la cuenta root y todos los usuarios de la cuenta:
"Principal": { "AWS": "27233906934684427525" } -
Puedes especificar únicamente la raíz de la cuenta:
"Principal": { "AWS": "arn:aws:iam::27233906934684427525:root" } -
Puedes indicar un usuario federado concreto ("Alex"):
"Principal": { "AWS": "arn:aws:iam::27233906934684427525:federated-user/Alex" } -
Puedes especificar un grupo federado concreto ("Managers"):
"Principal": { "AWS": "arn:aws:iam::27233906934684427525:federated-group/Managers" } -
Puedes especificar un principal anónimo:
"Principal": "*"
-
Para evitar ambigüedades, puedes utilizar el UUID del usuario en lugar del nombre de usuario:
arn:aws:iam::27233906934684427525:user-uuid/de305d54-75b4-431b-adb2-eb6b9e546013
Por ejemplo, supongamos que Alex abandona la organización y se elimina el nombre de usuario
Alex. Si un nuevo Alex se incorpora a la organización y se le asigna el mismoAlexnombre de usuario, es posible que el nuevo usuario herede involuntariamente los permisos concedidos al usuario original. -
El valor principal puede especificar un nombre de grupo o de usuario que aún no exista en el momento de crear una política de bucket.
Especifica permisos en una política
En una política, el elemento «Action» se utiliza para conceder o denegar permisos sobre un recurso. Existe un conjunto de permisos que se pueden especificar en una política, los cuales se indican mediante el elemento «Action» o, alternativamente, «NotAction» para la exclusión. Cada uno de estos elementos se corresponde con operaciones específicas de la API de REST de S3.
En la tabla se enumeran los permisos que se aplican a los buckets y los permisos que se aplican a los objetos.
|
|
Amazon S3 ahora utiliza el permiso s3:PutReplicationConfiguration tanto para las acciones PutBucketReplication y DeleteBucketReplication. StorageGRID utiliza permisos separados para cada acción, lo que coincide con la especificación original de Amazon S3. |
|
|
Se lleva a cabo una eliminación cuando se utiliza un put para sobrescribir un valor existente. |
Permisos que se aplican a los buckets
| Permisos | Operaciones de la API de REST de S3 | Personalizado para StorageGRID |
|---|---|---|
s3:CreateBucket |
CreateBucket |
Sí. Nota: Utiliza solo en la política de grupo. |
s3:DeleteBucket |
DeleteBucket |
|
s3:DeleteBucketMetadataNotification |
ELIMINAR configuración de notificaciones de metadatos del bucket |
Sí |
s3:DeleteBucketPolicy |
DeleteBucketPolicy |
|
s3:DeleteReplicationConfiguration |
DeleteBucketReplication |
Sí, permisos distintos para PUT y DELETE |
s3:GetBucketAcl |
GetBucketAcl |
|
s3:GetBucketCompliance |
GET Bucket compliance (obsoleto) |
Sí |
s3:GetBucketConsistency |
Obtener la consistencia del Bucket |
Sí |
s3:GetBucketCORS |
GetBucketCors |
|
s3:GetEncryptionConfiguration |
GetBucketEncryption |
|
s3:GetBucketLastAccessTime |
Obtener el tiempo de último acceso al Bucket |
Sí |
s3:GetBucketLocation |
GetBucketLocation |
|
s3:GetBucketMetadataNotification |
Obtener configuración de notificaciones de metadatos 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:ListAllMyBuckets |
|
Sí, para GET Storage Usage. Nota: Utiliza solo en la política de grupo. |
s3:ListBucket |
|
|
s3:ListBucketMultipartUploads |
|
|
s3:ListBucketVersions |
Obtener versiones de bucket |
|
s3:PutBucketCompliance |
PUT Bucket compliance (obsoleto) |
Sí |
s3:PutBucketConsistency |
Consistencia de PUT Bucket |
Sí |
s3:PutBucketCORS |
|
|
s3:PutEncryptionConfiguration |
|
|
s3:PutBucketLastAccessTime |
PUT Bucket tiempo de acceso más reciente |
Sí |
s3:PutBucketMetadataNotification |
PUT Bucket configuración de notificación de metadatos |
Sí |
s3:PutBucketNotification |
PutBucketNotificationConfiguration |
|
s3:PutBucketObjectLockConfiguration |
|
|
s3:PutBucketPolicy |
PutBucketPolicy |
|
s3:PutBucketTagging |
|
|
s3:PutBucketVersioning |
PutBucketVersioning |
|
s3:PutLifecycleConfiguration |
|
|
s3:PutReplicationConfiguration |
PutBucketReplication |
Sí, permisos distintos para PUT y DELETE |
${post_edited_translations.segment}
| Permisos | Operaciones de la API de REST de S3 | Personalizado para StorageGRID |
|---|---|---|
s3:AbortMultipartUpload |
|
|
s3:BypassGovernanceRetention |
|
|
s3:DeleteObject |
|
|
s3:DeleteObjectTagging |
DeleteObjectTagging |
|
s3:DeleteObjectVersionTagging |
DeleteObjectTagging (una versión específica del objeto) |
|
s3:DeleteObjectVersion |
DeleteObject (una versión concreta del objeto) |
|
s3:GetObject |
|
|
s3:GetObjectAcl |
GetObjectAcl |
|
s3:GetObjectLegalHold |
GetObjectLegalHold |
|
s3:GetObjectRetention |
GetObjectRetention |
|
s3:GetObjectTagging |
GetObjectTagging |
|
s3:GetObjectVersionTagging |
GetObjectTagging (una versión concreta del objeto) |
|
s3:GetObjectVersion |
GetObject (una versión concreta del objeto) |
|
s3:ListMultipartUploadParts |
ListParts, RestoreObject |
|
s3:PutObject |
|
|
s3:PutObjectLegalHold |
PutObjectLegalHold |
|
s3:PutObjectRetention |
PutObjectRetention |
|
s3:PutObjectTagging |
PutObjectTagging |
|
s3:PutObjectVersionTagging |
PutObjectTagging (una versión concreta del objeto) |
|
s3:PutOverwriteObject |
|
Sí |
s3:RestoreObject |
RestoreObject |
Usa el permiso PutOverwriteObject
El permiso s3:PutOverwriteObject es un permiso personalizado de StorageGRID que se aplica a las operaciones que crean o actualizan objetos. La configuración de este permiso determina si el cliente puede sobrescribir los datos de un objeto, los metadatos definidos por el usuario o las etiquetas de los objetos S3.
${post_edited_translations.segment}
-
Permitir: El cliente puede sobrescribir un objeto. Esta es la configuración predeterminada.
-
Denegar: El cliente no puede sobrescribir un objeto. Cuando se establece en Denegar, el permiso PutOverwriteObject funciona de la siguiente manera:
-
${post_edited_translations.segment}
-
${post_edited_translations.segment}
-
Se cancelan todas las operaciones de ingesta que estén en curso y se devuelve un error.
-
Si el control de versiones de S3 está habilitado, la configuración Deny impide que las operaciones PutObjectTagging o DeleteObjectTagging modifiquen el TagSet de un objeto y sus versiones no vigentes.
-
-
Si no se encuentra un objeto existente, este permiso no tiene ningún efecto.
-
-
${post_edited_translations.segment}
|
|
Si la política de S3 actual permite la sobrescritura y el permiso PutOverwriteObject está establecido en Deny, el cliente no puede sobrescribir los datos de un objeto, los metadatos definidos por el usuario ni las etiquetas del objeto. Además, si la casilla de verificación Evitar la modificación del cliente está seleccionada (Configuración > Configuración de seguridad > Red y objetos), esa configuración anula la configuración del permiso PutOverwriteObject. |
${post_edited_translations.segment}
Las condiciones definen cuándo estará vigente una política. Las condiciones se componen de operadores y pares clave-valor.
Las condiciones usan pares clave-valor para la evaluación. Un elemento Condition puede contener varias condiciones, y cada condición puede contener varios pares clave-valor. El bloque de condiciones usa el siguiente formato:
Condition: {
condition_type: {
condition_key: condition_values
En el siguiente ejemplo, la condición IpAddress utiliza la clave de condición SourceIp.
"Condition": {
"IpAddress": {
"aws:SourceIp": "54.240.143.0/24"
...
},
...
${post_edited_translations.segment}
${post_edited_translations.segment}
-
Cadena
-
${post_edited_translations.segment}
-
Booleano
-
Dirección IP
-
Comprobación de valores nulos
| Operadores condicionales | Descripción |
|---|---|
StringEquals |
Compara una clave con un valor de cadena basándose en la coincidencia exacta (distingue mayúsculas de minúsculas). |
StringNotEquals |
${post_edited_translations.segment} |
StringEqualsIgnoreCase |
Compara una clave con un valor de cadena basándose en la coincidencia exacta (ignora mayúsculas y minúsculas). |
StringNotEqualsIgnoreCase |
Compara una clave con un valor de cadena basándose en la coincidencia negada (ignora mayúsculas y minúsculas). |
StringLike |
Compara una clave con un valor de cadena basándose en una coincidencia exacta (distingue mayúsculas de minúsculas). Puede incluir los caracteres comodín * y ?. |
StringNotLike |
Compara una clave con un valor de cadena según una coincidencia negada (distingue mayúsculas de minúsculas). Puede incluir los caracteres comodín * y ?. |
NumericEquals |
${post_edited_translations.segment} |
NumericNotEquals |
Compara una clave con un valor numérico basándose en una coincidencia negada. |
NumericGreaterThan |
Compara una clave con un valor numérico basándose en la condición "mayor que". |
NumericGreaterThanEquals |
${post_edited_translations.segment} |
NumericLessThan |
Compara una clave con un valor numérico basándose en la condición "menor que". |
NumericLessThanEquals |
Compara una clave con un valor numérico basándose en "menor o igual que". |
${post_edited_translations.segment} |
${post_edited_translations.segment} |
IpAddress |
Compara una clave con una dirección IP o un rango de direcciones IP. |
NotIpAddress |
Compara una clave con una dirección IP o un rango de direcciones IP basándose en la coincidencia negada. |
Nulo |
${post_edited_translations.segment} |
IfExists |
Se añade a cualquier operador de condición, excepto a la condición Null, para comprobar la ausencia de esa clave de condición. Devuelve TRUE si la clave de condición no está presente. |
${post_edited_translations.segment}
| ${post_edited_translations.segment} | ${post_edited_translations.segment} | Descripción |
|---|---|---|
aws:SourceIp |
Operadores de IP |
Se comparará con la dirección IP desde la que se envió la solicitud. Se puede usar para operaciones de bucket o de objeto. Nota: Si la solicitud S3 se envió a través del servicio de Load Balancer en los nodos de Admin y los nodos de Gateway, esto se comparará con la dirección IP situada aguas arriba del servicio de Load Balancer. Nota: Si se utiliza un equilibrador de carga de terceros no transparente, se realizará la comparación con la dirección IP de ese equilibrador de carga. Cualquier encabezado |
${post_edited_translations.segment} |
${post_edited_translations.segment} |
Se comparará con el nombre de usuario del remitente desde el que se envió la solicitud. Se puede utilizar para operaciones con buckets u objetos. |
s3:delimitador |
s3:ListBucket y Permisos de s3:ListBucketVersions |
Se comparará con el parámetro delimitador especificado en una solicitud de 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 |
${post_edited_translations.segment} |
s3:max-keys |
s3:ListBucket y Permisos de s3:ListBucketVersions |
Se comparará con el parámetro max-keys especificado en una solicitud ListObjects o ListObjectVersions. |
${post_edited_translations.segment} |
s3:PutObject |
Se compara con el |
${post_edited_translations.segment} |
s3:PutObjectRetention |
Se compara con el |
s3:object-lock-remaining-retention-days |
s3:PutObject |
Compara con la fecha de retención especificada en el encabezado de solicitud
|
s3:object-lock-remaining-retention-days |
s3:PutObjectRetention |
Lo compara con la fecha de retención especificada en la solicitud PutObjectRetention para asegurarse de que esté dentro del intervalo permitido. |
${post_edited_translations.segment} |
s3:ListBucket y Permisos de s3:ListBucketVersions |
Se comparará con el parámetro de prefijo especificado en una solicitud ListObjects o ListObjectVersions. |
s3:RequestObjectTag/<tag-key> |
s3:PutObject s3:PutObjectTagging s3:PutObjectVersionTagging |
${post_edited_translations.segment} |
${post_edited_translations.segment} |
s3:PutObject |
Se compara con el |
Especifica variables en una política
Puedes usar variables en las políticas para completar la información de la política cuando esté disponible. Puedes usar variables de política en el elemento Resource y en comparaciones de cadenas en el elemento Condition.
En este ejemplo, la variable ${aws:username} forma parte del elemento «Resource»:
"Resource": "arn:aws:s3:::bucket-name/home/${aws:username}/*"
En este ejemplo, la variable ${aws:username} es parte del valor de la condición en el bloque de condiciones:
"Condition": {
"StringLike": {
"s3:prefix": "${aws:username}/*"
...
},
...
| Variable | Descripción |
|---|---|
|
Utiliza la clave SourceIp como la variable proporcionada. |
|
${post_edited_translations.segment} |
|
${post_edited_translations.segment} |
|
${post_edited_translations.segment} |
|
Carácter especial. Utiliza el carácter como un carácter * literal. |
|
Carácter especial. Usa el carácter como un carácter ? literal. |
|
Carácter especial. Usa el carácter como un carácter $ literal. |
${post_edited_translations.segment}
A veces, una política puede conceder permisos que son peligrosos para la seguridad o para la continuidad de las operaciones, como bloquear al usuario raíz de la cuenta. La implementación de la API de REST de S3 de StorageGRID es menos restrictiva durante la validación de políticas que Amazon, pero igual de estricta durante la evaluación de políticas.
| ${post_edited_translations.segment} | Tipo de política | ${post_edited_translations.segment} | Comportamiento de StorageGRID |
|---|---|---|---|
${post_edited_translations.segment} |
Bucket |
${post_edited_translations.segment} |
Lo mismo |
Negar a uno mismo cualquier permiso para el usuario/grupo |
${post_edited_translations.segment} |
${post_edited_translations.segment} |
Lo mismo |
${post_edited_translations.segment} |
Bucket |
Principal no válido |
Válido, pero los permisos para todas las operaciones de políticas de buckets S3 devuelven un error 405 Method Not Allowed cuando están permitidas por una política |
Permitir que un usuario raíz o usuario de una cuenta externa tenga cualquier permiso |
Bucket |
Válido, pero los permisos para todas las operaciones de políticas de buckets S3 devuelven un error 405 Method Not Allowed cuando están permitidas por una política |
Lo mismo |
Conceder a todos permisos para todas las acciones |
Bucket |
${post_edited_translations.segment} |
Lo mismo |
Denegar a todos los usuarios los permisos para todas las acciones |
Bucket |
${post_edited_translations.segment} |
Lo mismo |
${post_edited_translations.segment} |
Bucket |
Principal no válido |
Válido |
El recurso es un bucket de S3 que no existe |
${post_edited_translations.segment} |
Válido |
Lo mismo |
Principal es un grupo local |
Bucket |
Principal no válido |
Válido |
La política concede a una cuenta que no es propietaria (incluidas las cuentas anónimas) permisos para poner objetos. |
Bucket |
Válido. Los objetos son propiedad de la cuenta del creador y la política de bucket no se aplica. La cuenta del creador debe conceder permisos de acceso al objeto mediante ACL de objeto. |
Válido. Los objetos son propiedad de la cuenta del propietario del bucket. Se aplica la política del bucket. |
Protección de escritura única y lectura múltiple (WORM)
Puedes crear buckets WORM (write-once-read-many) para proteger los datos, los metadatos de objetos definidos por el usuario y el etiquetado de objetos de S3. Configura los buckets WORM para permitir la creación de objetos nuevos y evitar la sobrescritura o eliminación del contenido existente. Utiliza uno de los enfoques descritos aquí.
Para asegurarte de que las sobrescrituras siempre se rechacen, puedes:
-
Desde el Grid Manager, ve a Configuration > Security > Security settings > Network and objects, y selecciona la casilla Prevent client modification.
-
${post_edited_translations.segment}
-
Añade una operación DENY de PutOverwriteObject a la política de S3.
-
Agrega una operación DENY de DeleteObject a la política de S3.
-
Añade una operación ALLOW de PutObject a la directiva de S3.
-
|
|
Establecer DeleteObject en DENY en una política de S3 no impide que ILM elimine objetos cuando existe una regla como "cero copias después de 30 días". |
|
|
Incluso cuando aplicas todas estas reglas y políticas, no protegen contra las escrituras simultáneas (ver Situación A). Sí protegen contra las sobrescrituras secuenciales completadas (ver Situación B). |
${post_edited_translations.segment}
/mybucket/important.doc PUT#1 ---> OK PUT#2 -------> OK
Situación B: Sobrescrituras secuenciales completadas (protegidas)
/mybucket/important.doc PUT#1 -------> PUT#2 ---X (denied)