Skip to main content
Hay disponible una nueva versión de este producto.
Se proporciona el idioma español mediante traducción automática para su comodidad. En caso de alguna inconsistencia, el inglés precede al español.

Políticas de acceso a bloques y grupos

Colaboradores

StorageGRID utiliza el lenguaje de políticas de Amazon Web Services (AWS) para permitir que los inquilinos S3 controlen el acceso a bloques y objetos dentro de esos bloques. 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.

Información general sobre las políticas de acceso

Existen dos tipos de políticas de acceso compatibles con StorageGRID.

  • Políticas de bloque, que se configuran mediante las operaciones API Get Bucket, PUT Bucket y DELETE Bucket Policy S3. Las políticas de bloque se asocian a bloques, por lo que se configuran para controlar el acceso de los usuarios de la cuenta de propietario del bloque u otras cuentas al bloque y a los objetos en él. La política de bloques se aplica únicamente a un bloque y, posiblemente, a varios grupos.

  • Políticas de grupo, que se configuran mediante el Administrador de inquilinos o la API de administración de inquilinos. Las directivas de grupo se asocian a un grupo de la cuenta, por lo que se configuran para permitir que dicho grupo tenga acceso a recursos específicos propiedad de dicha cuenta. La política de grupo se aplica únicamente a un grupo y, posiblemente, a varios bloques.

Las políticas de bloque y grupo de StorageGRID siguen una gramática específica definida por Amazon. Dentro de cada política hay una serie de declaraciones de política y cada sentencia contiene los siguientes elementos:

  • ID de sentencia (Sid) (opcional)

  • Efecto

  • Principal/NotPrincipal

  • Recurso/NotResource

  • Acción/NotAction

  • Condición (opcional)

Las sentencias de directiva se crean utilizando esta estructura para especificar permisos: Conceda <Effect> para permitir/denegar que <Principal> ejecute <Action> en <Resource> cuando se aplique <Condition>.

Cada elemento de directiva se utiliza para una función específica:

Elemento Descripción

SID

El elemento Sid es opcional. El Sid sólo se ha diseñado como una descripción para el usuario. El sistema StorageGRID lo almacena pero no lo interpreta.

Efecto

Utilice el elemento Effect para establecer si se permiten o deniegan las operaciones especificadas. Debe identificar las operaciones que permite (o deniega) en cubos u objetos utilizando las palabras clave del elemento Acción admitido.

Principal/NotPrincipal

Puede permitir a los usuarios, grupos y cuentas acceder a recursos específicos y realizar acciones específicas. Si no se incluye ninguna firma S3 en la solicitud, se permite el acceso anónimo especificando el carácter comodín (*) como principal. De forma predeterminada, sólo la raíz de la cuenta tiene acceso a los recursos que pertenecen a la cuenta.

Sólo es necesario especificar el elemento Principal en una política de bloque. Para las directivas de grupo, el grupo al que se asocia la directiva es el elemento Principal implícito.

Recurso/NotResource

El elemento Resource identifica los bloques y los objetos. Puede permitir o denegar permisos para cubos 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. Se deniega el acceso a menos que asigne permisos de forma específica, pero puede utilizar Denegar explícito para anular un permiso otorgado por otra directiva.

Condición

El elemento Condition es opcional. Las condiciones permiten crear expresiones para determinar cuándo se debe aplicar una directiva.

En el elemento Action , puede utilizar el carácter comodín (*) para especificar todas las operaciones o un subconjunto de operaciones. Por ejemplo, esta acción coincide con permisos como s3:GetObject, s3:PutObject y s3:DeleteObject.

s3:*Object

En el elemento Resource , puede utilizar los caracteres comodín (*) y (?). Aunque el asterisco (*) coincide con 0 o más caracteres, el signo de interrogación (?) coincide con cualquier carácter.

En el elemento Principal, los caracteres comodín no se admiten excepto para establecer el acceso anónimo, que concede permiso a todos. Por ejemplo, el comodín (*) se establece como el valor Principal.

"Principal":"*"

En el ejemplo siguiente, la instrucción utiliza los elementos Effect, Principal, Acción y recurso. En este ejemplo se muestra una sentencia de directiva de bloque completa que utiliza el efecto "permitir" para dar a los principales, el grupo admin federated-group/admin y el grupo financiero federated-group/finance, Permisos para realizar la acción s3:ListBucket en el bloque llamado mybucket Y la Acción s3:GetObject en todos los objetos dentro de ese cucharón.

{
  "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/*"
      ]
    }
  ]
}

La política de bloque 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.

Información relacionada

"Usar una cuenta de inquilino"

Configuración de control de coherencia para políticas

De forma predeterminada, cualquier actualización que realice a las directivas de grupo será consistente. Una vez que la política de grupo sea coherente, los cambios pueden tardar 15 minutos más en aplicarse, debido al almacenamiento en caché de políticas. De forma predeterminada, las actualizaciones que realice en las políticas de bloques también serán coherentes.

Según sea necesario, puede cambiar las garantías de coherencia para las actualizaciones de la política de bloques. Por ejemplo, es posible que desee que un cambio en una política de bloque se convierta en una Lo antes posible. efectiva por motivos de seguridad.

En este caso, puede ajustar la Consistency-Control En la solicitud DE política PUT Bucket, o puede utilizar la solicitud DE consistencia PUT Bucket. Al cambiar el control de coherencia para esta solicitud, debe utilizar el valor all, que ofrece la mayor garantía de coherencia de lectura tras escritura. Si especifica cualquier otro valor de control de consistencia en un encabezado para LA solicitud DE consistencia PUT Bucket, la solicitud será rechazada. Si especifica cualquier otro valor para una solicitud DE política PUT Bucket, el valor se ignorará. Una vez que una política de bloques se vuelve coherente, los cambios pueden tardar 8 segundos más en aplicarse, debido al almacenamiento en caché de la política.

Nota Si establece el nivel de consistencia en all para forzar la aplicación de una nueva política de cucharón antes, asegúrese de volver a establecer el control de nivel de cucharón en su valor original cuando haya terminado. De lo contrario, todas las solicitudes de segmentos futuras utilizarán la configuración all.

Uso del ARN en las sentencias de directiva

En las declaraciones de política, el ARN se utiliza en los elementos Principal y Recursos.

  • Utilice esta sintaxis para especificar el recurso ARN de S3:

    arn:aws:s3:::bucket-name
    arn:aws:s3:::bucket-name/object_key
  • Utilice esta sintaxis para especificar el recurso de identidad ARN (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:

  • Puede utilizar el asterisco (*) como comodín para que coincida con cero o más caracteres dentro de la clave de objeto.

  • Los caracteres internacionales, que se pueden especificar en la clave de objeto, deben codificarse mediante JSON UTF-8 o mediante secuencias de escape JSON \u. No se admite el porcentaje de codificación.

    El cuerpo de solicitud HTTP para la operación DE política PUT Bucket debe codificarse con charset=UTF-8.

Especificar recursos en una política

En las sentencias de directiva, puede utilizar el elemento Resource para especificar el bloque o el objeto para el que se permiten o deniegan los permisos.

  • Cada instrucción de directiva requiere un elemento Resource. En una política, el elemento denota los recursos Resource`o bien, `NotResource para la exclusión.

  • Se especifican recursos con un ARN de recurso S3. Por ejemplo:

    "Resource": "arn:aws:s3:::mybucket/*"
  • También puede usar variables de política dentro de la clave de objeto. Por ejemplo:

    "Resource": "arn:aws:s3:::mybucket/home/${aws:username}/*"
  • El valor del recurso puede especificar un bucket que todavía no existe cuando se crea una política de grupo.

Información relacionada

"Especificar variables en una directiva"

Especificar los principales de una directiva

Utilice el elemento Principal para identificar al usuario, grupo o cuenta de arrendatario que la sentencia de directiva permite o deniega el acceso al recurso.

  • Cada sentencia de política de una política de bloque 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 directores son denotados por el elemento «'Principal,'» o «'NotPrincipal» para la exclusión.

  • Las identidades basadas en cuentas se deben especificar mediante un ID o un ARN:

    "Principal": { "AWS": "account_id"}
    "Principal": { "AWS": "identity_arn" }
  • En este ejemplo se utiliza el ID de cuenta de inquilino 27233906934684427525, que incluye la raíz de la cuenta y todos los usuarios de la cuenta:

     "Principal": { "AWS": "27233906934684427525" }
  • Puede especificar sólo la raíz de la cuenta:

    "Principal": { "AWS": "arn:aws:iam::27233906934684427525:root" }
  • Puede especificar un usuario federado específico ("Alex"):

    "Principal": { "AWS": "arn:aws:iam::27233906934684427525:federated-user/Alex" }
  • Puede especificar un grupo federado específico ("managers"):

    "Principal": { "AWS": "arn:aws:iam::27233906934684427525:federated-group/Managers"  }
  • Puede especificar un principal anónimo:

    "Principal": "*"
  • Para evitar ambigüedades, puede utilizar el UUID de 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 el nombre de usuario Alex se ha eliminado. Si un nuevo Alex se une a la organización y se le asigna la misma Alex nombre de usuario, es posible que el nuevo usuario herede sin querer los permisos concedidos al usuario original.

  • El valor principal puede especificar un nombre de grupo/usuario que aún no existe cuando se crea una directiva de bloque.

Especificar permisos en una directiva

En una directiva, el elemento Acción se utiliza para permitir/denegar permisos a un recurso. Hay un conjunto de permisos que puede especificar en una directiva, que se indican mediante el elemento "Acción" o, alternativamente, "NotAction" para la exclusión. Cada uno de estos elementos se asigna a operaciones de API de REST de S3 específicas.

En las tablas se enumeran los permisos que se aplican a los bloques y los permisos que se aplican a los objetos.

Nota Amazon S3 utiliza ahora el permiso s3:PutReplicationConfiguration para LAS acciones de replicación PUT y DELETE Bucket. StorageGRID utiliza permisos independientes para cada acción, que coinciden con la especificación original de Amazon S3.
Nota SE realiza UNA ELIMINACIÓN cuando se utiliza UNA PUESTA para sobrescribir un valor existente.

Permisos que se aplican a los bloques

Permisos OPERACIONES DE LA API DE REST DE S3 Personalizado para StorageGRID

s3:CreateBucket

COLOQUE el cucharón

s3:DeleteBucket

ELIMINAR bloque

s3:DeleteBucketMetadataNotification

DELETE bucket metadata notification Configuration

s3:DeleteBucketPolicy

ELIMINE la política de bloques

s3:DeleteReplicationConfiguration

DELETE Bucket replicación

Sí, separe los permisos PARA PUT y DELETE*

s3:GetBucketAcl

GET Bucket ACL

s3:GetBucketCompliance

CUMPLIMIENTO de LA normativa GET Bucket (obsoleto)

s3:GetBucketConsistency

OBTENGA coherencia de bloques

s3: GetBucketCORS

OBTENGA los cors del cucharón

s3:GetEncryptionConfiguration

OBTENGA el cifrado de bloque

s3:GetBucketLastAccessTime

HORA de último acceso al bloque DE GET

s3:GetBucketLocation

OBTENER ubicación de bloque

s3:GetBucketMetadataNotification

OBTENGA la configuración de notificación de metadatos del bloque de datos

s3:GetBucketNotification

OBTENGA la notificación DE BUCKET

s3:GetBucketObjectLockConfiguration

OBTENER configuración de bloqueo de objeto

s3:GetBucketPolicy

OBTENGA la política de bloques

s3:GetBucketTagging

GET Bucket tagging

s3:GetBucketVersioning

OBTENGA el control de versiones de Bucket

s3:GetLifecycleConfiguration

OBTENGA el ciclo de vida de la cuchara

s3:GetReplicationConfiguration

OBTENGA la replicación de Bucket

s3:ListAllMyBuckets

  • OBTENER servicio

  • Obtenga el uso del almacenamiento

Sí, PARA OBTENER el uso del almacenamiento

s3:ListBucket

  • GET Bucket (objetos de lista)

  • Cubo DE CABEZA

  • Restauración DE objetos posterior

s3:ListBucketMultipartUploads

  • Enumerar cargas de varias partes

  • Restauración DE objetos posterior

s3:ListBucketVersions

OBTENGA las versiones DE Bucket

s3:PutBucketCompliance

CUMPLIMIENTO de PUT Bucket (obsoleto)

s3:PutBucketConsistency

PONGA la consistencia del cucharón

s3: PutBucketCORS

  • ELIMINAR los segmentos de cucharón†

  • COLOQUE los cors del cucharón

s3:PutEncryptionConfiguration

  • DELETE Bucket Encryption

  • PUT Bucket Encryption

s3:PutBucketLastAccessTime

PUT Bucket última hora de acceso

s3:PutBucketMetadataNotification

PUT bucket metadata notification Configuration

s3:PutBucketNotification

NOTIFICACIÓN DE PUT Bucket

s3:PutBucketObjectLockConfiguration

COLOQUE el cucharón con el x-amz-bucket-object-lock-enabled: true Encabezado de solicitud (también requiere el permiso s3:CreateBucket)

s3:PutBucketPolicy

POLÍTICA DE PUT Bucket

s3:PutBucketEtiquetado

  • ELIMINAR etiquetado de bloque†

  • PUT Bucket etiquetaje

s3:PutBucketVersioning

PONER creación de versiones de bloques

s3:PutLipeycleConfiguration

  • ELIMINAR ciclo de vida del cucharón†

  • CICLO de vida DE la cuchara

s3:PutReplicationConfiguration

PUT Bucket replication

Sí, separe los permisos PARA PUT y DELETE*

Permisos que se aplican a objetos

Permisos OPERACIONES DE LA API DE REST DE S3 Personalizado para StorageGRID

s3:AbortMultipartUpload

  • Cancelar carga de varias partes

  • Restauración DE objetos posterior

s3:DeleteObject

  • ELIMINAR objeto

  • ELIMINAR varios objetos

  • Restauración DE objetos posterior

s3:DeleteObjectTagging

ELIMINAR etiquetado de objetos

s3:DeleteObjectVersionTagging

ELIMINAR etiquetado de objetos (una versión específica del objeto)

s3:DeleteObjectVersion

ELIMINAR objeto (una versión específica del objeto)

s3:GetObject

  • OBTENER objeto

  • OBJETO HEAD

  • Restauración DE objetos posterior

s3:GetObjectAcl

OBTENER ACL de objeto

s3:GetObjectLegalHold

OBTENER retención legal de objetos

s3:GetObjectRetention

OBTENGA retención de objetos

s3:GetObjectTagging

OBTENER etiquetado de objetos

s3:GetObjectVersionTagging

OBTENER etiquetado de objetos (una versión específica del objeto)

s3:GetObjectVersion

GET Object (una versión específica del objeto)

s3:ListMultipartUploadParts

Elementos de lista, restauración POSTERIOR al objeto

s3:PutObject

  • OBJETO PUT

  • PONER objeto: Copiar

  • Restauración DE objetos posterior

  • Inicie la carga de varias partes

  • Completar carga de varias partes

  • Cargar artículo

  • Cargar pieza: Copiar

s3:PutObjectLegalHold

PONER objeto legal

s3:PutObjectRetention

PUT Object retention

s3:PutObjectEtiquetado

PONER etiquetado de objetos

s3:PutObjectVersionEtiquetado

PONER etiquetado de objetos (una versión específica del objeto)

s3:PutOverwriteObject

  • OBJETO PUT

  • PONER objeto: Copiar

  • PUT Object tagging

  • ELIMINAR etiquetado de objetos

  • Completar carga de varias partes

s3:RestoreObject

Restauración DE objetos posterior

Uso del permiso PutOverwriteObject

el permiso s3:PutOverwriteObject es un permiso StorageGRID personalizado que se aplica a operaciones que crean o actualizan objetos. La configuración de este permiso determina si el cliente puede sobrescribir los datos de un objeto, metadatos definidos por el usuario o el etiquetado de objetos S3.

Entre los posibles ajustes para este permiso se incluyen:

  • 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:

    • Si se encuentra un objeto existente en la misma ruta:

      • No se pueden sobrescribir los datos, los metadatos definidos por el usuario ni el etiquetado de objetos de S3 del objeto.

      • Se cancela cualquier operación de ingesta en curso y se devuelve un error.

      • Si se habilita el control de versiones de S3, la configuración Denegar evita QUE LAS operaciones PUT Object tagging o DELETE Object tagging modifiquen el conjunto de etiquetas para un objeto y sus versiones no actuales.

    • Si no se encuentra un objeto existente, este permiso no tiene efecto.

  • Cuando este permiso no está presente, el efecto es el mismo que si se estableció permitir.

Importante Si la política actual de S3 permite sobrescribir y el permiso PutOverwriteObject se establece en Deny, el cliente no puede sobrescribir los datos de un objeto, metadatos definidos por el usuario ni el etiquetado de objetos. Además, si la casilla de verificación evitar modificación de cliente está activada (Configuración > Opciones de cuadrícula), esa configuración anula la configuración del permiso PutOverwriteObject.
Información relacionada

"Ejemplos de políticas de grupo S3"

Especificar condiciones en una directiva

Las condiciones definen cuándo estará en vigor una política. Las condiciones consisten en operadores y pares clave-valor.

Condiciones Utilice 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 Condition utiliza el siguiente formato:

Condition: {
     condition_type: {
          condition_key: condition_values

En el ejemplo siguiente, la condición ipaddress utiliza la clave de condición SourceIp.

"Condition": {
    "IpAddress": {
      "aws:SourceIp": "54.240.143.0/24"
		...
},
		...

Operadores de condición admitidos

Los operadores de condición se categorizan de la siguiente manera:

  • Cadena

  • Numérico

  • Booleano

  • Dirección IP

  • Comprobación nula

Operadores de condición Descripción

StringEquals

Compara una clave con un valor de cadena basado en la coincidencia exacta (distingue entre mayúsculas y minúsculas).

StringNotEquals

Compara una clave con un valor de cadena basado en la coincidencia negada (distingue entre mayúsculas y minúsculas).

StringEqualizsIgnoreCase

Compara una clave con un valor de cadena basado en la coincidencia exacta (omite Case).

StringNotEqualizsIgnoreCase

Compara una clave con un valor de cadena basado en la coincidencia negada (omite Case).

StringLike

Compara una clave con un valor de cadena basado en la coincidencia exacta (distingue entre mayúsculas y minúsculas). Puede incluir * y ? caracteres comodín.

StringNotLike

Compara una clave con un valor de cadena basado en la coincidencia negada (distingue entre mayúsculas y minúsculas). Puede incluir * y ? caracteres comodín.

Valores numéricos

Compara una clave con un valor numérico basado en la coincidencia exacta.

NumericNotEquals

Compara una clave con un valor numérico basado en la coincidencia negada.

NumericGreatertan

Compara una clave con un valor numérico basado en la coincidencia "'mayor que'".

NumericGreaterThanEquals

Compara una clave con un valor numérico basado en la coincidencia "'mayor que o igual'".

NumericLessThan

Compara una clave con un valor numérico basado en la coincidencia "'less than'".

NumericLesThanEquals

Compara una clave con un valor numérico basado en la coincidencia "'menor que o igual'".

Bool

Compara una clave con un valor booleano basado en la coincidencia "'true o false'".

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 intervalo de direcciones IP basándose en la coincidencia negada.

Nulo

Comprueba si hay una clave de condición en el contexto actual de la solicitud.

Teclas de condición compatibles

Categoría Teclas de condición aplicables Descripción

Operadores IP

aws:SourceIp

Comparará con la dirección IP desde la que se envió la solicitud. Se puede utilizar para operaciones de bloques u objetos.

Nota: Si la solicitud S3 se envió a través del servicio Load Balancer en nodos Admin y nodos de Gpuertas de enlace, se comparará con la dirección IP anterior al servicio Load Balancer.

Nota: Si se utiliza un equilibrador de carga no transparente de terceros, se comparará con la dirección IP de ese equilibrador de carga. Cualquiera X-Forwarded-For se ignorará el encabezado ya que no se puede comprobar su validez.

Recurso/identidad

aws:nombre de usuario

Comparará con el nombre de usuario del remitente desde el que se envió la solicitud. Se puede utilizar para operaciones de bloques u objetos.

S3:ListBucket y.

S3:ListBucketVersions permisos

s3:delimitador

Comparará con el parámetro delimitador especificado en una solicitud GET Bucket o GET Bucket Object Versions.

S3:ListBucket y.

S3:ListBucketVersions permisos

s3:max-keys

Comparará con el parámetro max-keys especificado en una solicitud GET Bucket o GET Bucket Object Versions.

S3:ListBucket y.

S3:ListBucketVersions permisos

s3:prefijo

Se comparará con el parámetro prefix especificado en una solicitud GET Bucket o GET Bucket Object Versions.

Especificar variables en una directiva

Las variables de las directivas se pueden utilizar para rellenar la información de directivas cuando esté disponible. Se pueden usar variables de política en la Resource comparaciones entre elementos y cadenas en la Condition elemento.

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} forma parte del valor de condición en el bloque de condición:

"Condition": {
    "StringLike": {
      "s3:prefix": "${aws:username}/*"
		...
},
		...
Variable Descripción

${aws:SourceIp}

Utiliza la clave SourceIp como la variable proporcionada.

${aws:username}

Utiliza la clave de nombre de usuario como la variable proporcionada.

${s3:prefix}

Utiliza la clave de prefijo específica del servicio como variable proporcionada.

${s3:max-keys}

Utiliza la clave de max-keys específica del servicio como la variable proporcionada.

${*}

Carácter especial. Utiliza el carácter como carácter literal *.

${?}

Carácter especial. Utiliza el carácter como literal ? carácter.

${$}

Carácter especial. Utiliza el carácter como carácter literal $.

Creación de directivas que requieren un manejo especial

A veces, una directiva puede otorgar permisos peligrosos para la seguridad o para operaciones continuas, como bloquear al usuario raíz de la cuenta. La implementación de la API REST de StorageGRID S3 es menos restrictiva durante la validación de políticas que Amazon, pero igual de estricta durante la evaluación de la política.

Descripción de la política Tipo de política Comportamiento de Amazon Comportamiento de StorageGRID

Denegar a sí mismo cualquier permiso a la cuenta raíz

Cucharón

Válido y reforzado, pero la cuenta de usuario raíz conserva el permiso para todas las operaciones de política de bloques de S3

Igual

Denegar a sí mismo cualquier permiso al usuario o grupo

Grupo

Válido y reforzado

Igual

Permitir cualquier permiso para un grupo de cuentas externo

Cucharón

Principal no válido

Válidos, pero los permisos para todas las operaciones de política de bloques de S3 devuelven un método 405 no permitido cuando lo permite una política

Permitir cualquier permiso para una raíz de cuenta externa o para un usuario

Cucharón

Válidos, pero los permisos para todas las operaciones de política de bloques de S3 devuelven un método 405 no permitido cuando lo permite una política

Igual

Permitir que todos tengan permisos para todas las acciones

Cucharón

Válido, pero los permisos para todas las operaciones de política de bloques de S3 devuelven un error de método 405 no permitido para la raíz de cuenta externa y los usuarios

Igual

Denegar a todos los permisos a todas las acciones

Cucharón

Válido y reforzado, pero la cuenta de usuario raíz conserva el permiso para todas las operaciones de política de bloques de S3

Igual

Principal es un usuario o grupo inexistente

Cucharón

Principal no válido

Válido

El recurso es un bloque de S3 que no existe

Grupo

Válido

Igual

El director es un grupo local

Cucharón

Principal no válido

Válido

La directiva otorga a una cuenta que no es propietaria (incluidas las cuentas anónimas) permisos para COLOCAR objetos

Cucharón

Válido. Los objetos son propiedad de la cuenta creadora y la política de bucket no se aplica. La cuenta de creador debe otorgar permisos de acceso al objeto mediante ACL de objeto.

Válido. Los objetos son propiedad de la cuenta de propietario del bloque. Se aplica la política de bloques.

Protección WORM (escritura única lectura múltiple)

Se pueden crear bloques DE escritura única y lectura múltiple (WORM) para proteger los datos, los metadatos de objetos definidos por el usuario y el etiquetado de objetos de S3. Puede configurar los bloques WORM para permitir la creación de objetos nuevos y evitar sobrescrituras o eliminaciones del contenido existente. Utilice uno de los enfoques aquí descritos.

Para asegurarse de que las sobrescrituras se deniegan siempre, puede:

  • En Grid Manager, vaya a Configuración > Opciones de cuadrícula y active la casilla de verificación evitar modificación de cliente.

  • Aplique las siguientes reglas y políticas de S3:

    • Agregue una operación PUTOVERWRITEOBJECT DENY a la directiva S3.

    • Agregue una operación DeleteObject DENY a la directiva S3.

    • Añada una operación PUT Object ALLOW a la política de S3.

Importante Al establecer DeleteObject en DENEGAR en una directiva S3, no se impide que ILM elimine objetos cuando existe una regla como "'copias cero después de 30 días'".
Importante Incluso cuando se aplican todas estas reglas y políticas, no se protegen contra las escrituras simultáneas (véase la situación A). Protegen contra sobrescrituras completadas secuenciales (consulte la situación B).

Situación A: Escrituras simultáneas (no protegidas contra)

/mybucket/important.doc
PUT#1 ---> OK
PUT#2 -------> OK

Situación B: Sobrescrituras completadas secuenciales (protegidas contra)

/mybucket/important.doc
PUT#1 -------> PUT#2 ---X (denied)
Información relacionada

"Gestión de objetos con ILM"

Ejemplos de políticas de S3

Utilice los ejemplos de esta sección para crear políticas de acceso de StorageGRID para bloques y grupos.

Ejemplos de políticas de bloques de S3

Las políticas de bloque especifican los permisos de acceso para el bloque al que está asociada la directiva. Las políticas de bloque se configuran mediante la API de S3 PutBucketPolicy.

Se puede configurar una política de bloques mediante la CLI de AWS según el siguiente comando:

> aws s3api put-bucket-policy --bucket examplebucket --policy file://policy.json

Ejemplo: Permitir que todos tengan acceso de solo lectura a un bloque

En este ejemplo, todos, incluido el anónimo, pueden enumerar objetos en el bloque y realizar operaciones Get Object en todos los objetos del bloque. Se denegarán todas las demás operaciones. Tenga en cuenta que esta directiva podría no ser particularmente útil ya que nadie, excepto la raíz de la cuenta, tiene permisos para escribir en el bloque.

{
  "Statement": [
    {
      "Sid": "AllowEveryoneReadOnlyAccess",
      "Effect": "Allow",
      "Principal": "*",
      "Action": [ "s3:GetObject", "s3:ListBucket" ],
      "Resource": ["arn:aws:s3:::examplebucket","arn:aws:s3:::examplebucket/*"]
    }
  ]
}

Ejemplo: Permitir que todos en una cuenta tengan acceso total y que todas las personas de otra cuenta tengan acceso de solo lectura a un bloque

En este ejemplo, se permite a todos los integrantes de una cuenta especificada el acceso completo a un bloque, mientras que a todos los miembros de otra cuenta especificada sólo se les permite enumerar el bloque y realizar operaciones GetObject en los objetos del bloque empezando por el shared/ prefijo de clave de objeto.

Nota En StorageGRID, los objetos creados por una cuenta que no es propietaria (incluidas las cuentas anónimas) son propiedad de la cuenta de propietario del bloque. La política de bloque se aplica a estos objetos.
{
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "95390887230002558202"
      },
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::examplebucket",
        "arn:aws:s3:::examplebucket/*"
      ]
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "31181711887329436680"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::examplebucket/shared/*"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "31181711887329436680"
      },
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::examplebucket",
      "Condition": {
        "StringLike": {
          "s3:prefix": "shared/*"
        }
      }
    }
  ]
}

Ejemplo: Permitir que todo el mundo tenga acceso de solo lectura a un bloque y acceso completo por un grupo especificado

En este ejemplo, todos los usuarios, incluido el anónimo, pueden enumerar el bloque y realizar operaciones GET Object en todos los objetos del bloque, mientras que sólo los usuarios que pertenecen al grupo Marketing en la cuenta especificada se permite el acceso completo.

{
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::95390887230002558202:federated-group/Marketing"
      },
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::examplebucket",
        "arn:aws:s3:::examplebucket/*"
      ]
    },
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": ["s3:ListBucket","s3:GetObject"],
      "Resource": [
        "arn:aws:s3:::examplebucket",
        "arn:aws:s3:::examplebucket/*"
      ]
    }
  ]
}

Ejemplo: Permitir que todo el mundo tenga acceso de lectura y escritura a un bloque si un cliente se encuentra en el rango de IP

En este ejemplo, todos, incluido el anónimo, pueden enumerar el bloque y realizar cualquier operación Object en todos los objetos del bloque, siempre que las solicitudes provengan de un intervalo IP especificado (54.240.143.0 a 54.240.143.255, excepto 54.240.143.188). Se denegarán todas las demás operaciones y se denegarán todas las solicitudes que estén fuera del rango de IP.

{
  "Statement": [
    {
      "Sid": "AllowEveryoneReadWriteAccessIfInSourceIpRange",
      "Effect": "Allow",
      "Principal": "*",
      "Action": [ "s3:*Object", "s3:ListBucket" ],
      "Resource": ["arn:aws:s3:::examplebucket","arn:aws:s3:::examplebucket/*"],
      "Condition": {
        "IpAddress": {"aws:SourceIp": "54.240.143.0/24"},
        "NotIpAddress": {"aws:SourceIp": "54.240.143.188"}
      }
    }
  ]
}

Ejemplo: Permitir el acceso completo a un bloque exclusivamente por un usuario federado especificado

En este ejemplo, el usuario federado Alex tiene permiso de acceso completo al examplebucket cucharón y sus objetos. A todos los demás usuarios, incluido ''root'', se les deniega explícitamente todas las operaciones. Tenga en cuenta, sin embargo, que ''root'' nunca se le deniegan los permisos para poner/obtener/DeleteBucketPolicy.

{
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::95390887230002558202:federated-user/Alex"
      },
      "Action": [
        "s3:*"
      ],
      "Resource": [
        "arn:aws:s3:::examplebucket",
        "arn:aws:s3:::examplebucket/*"
      ]
    },
    {
      "Effect": "Deny",
      "NotPrincipal": {
        "AWS": "arn:aws:iam::95390887230002558202:federated-user/Alex"
      },
      "Action": [
        "s3:*"
      ],
      "Resource": [
        "arn:aws:s3:::examplebucket",
        "arn:aws:s3:::examplebucket/*"
      ]
    }
  ]
}

Ejemplo: Permiso PutOverwriteObject

En este ejemplo, la Deny Effect para PutOverwriteObject y DeleteObject garantiza que nadie puede sobrescribir ni eliminar los datos del objeto, los metadatos definidos por el usuario y el etiquetado de objetos S3.

{
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": [
        "s3:PutOverwriteObject",
        "s3:DeleteObject",
        "s3:DeleteObjectVersion"
      ],
      "Resource": "arn:aws:s3:::wormbucket/*"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::95390887230002558202:federated-group/SomeGroup"

},
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::wormbucket"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::95390887230002558202:federated-group/SomeGroup"

},
      "Action": "s3:*",
      "Resource": "arn:aws:s3:::wormbucket/*"
    }
  ]
}
Información relacionada

"Operaciones en bloques"

Ejemplos de políticas de grupo S3

Las directivas de grupo especifican los permisos de acceso para el grupo al que está asociada la directiva. No existe Principal elemento de la política, ya que está implícito. Las políticas de grupo se configuran con el administrador de inquilinos o la API.

Ejemplo: Establecer la directiva de grupo mediante el Administrador de inquilinos

Cuando utilice el Administrador de inquilinos para agregar o editar un grupo, puede seleccionar cómo desea crear la política de grupo que define qué miembros de permisos de acceso S3 de este grupo tendrán, de la siguiente manera:

  • Sin acceso S3: Opción predeterminada. Los usuarios de este grupo no tienen acceso a los recursos de S3, a menos que se conceda el acceso mediante una política de bloques. Si selecciona esta opción, de forma predeterminada, solo el usuario raíz tendrá acceso a recursos de S3.

  • Acceso de sólo lectura: Los usuarios de este grupo tienen acceso de sólo lectura a los recursos S3. Por ejemplo, los usuarios de este grupo pueden enumerar objetos y leer datos de objetos, metadatos y etiquetas. Cuando selecciona esta opción, la cadena JSON para una política de grupo de solo lectura aparece en el cuadro de texto. No puede editar esta cadena.

  • Acceso completo: Los usuarios de este grupo tienen acceso completo a los recursos S3, incluidos los bloques. Cuando selecciona esta opción, la cadena JSON para una política de grupo de acceso completo aparece en el cuadro de texto. No puede editar esta cadena.

  • Personalizado: A los usuarios del grupo se les conceden los permisos que especifique en el cuadro de texto.

    En este ejemplo, sólo se permite a los miembros del grupo que enumeren y tengan acceso a su carpeta específica (prefijo de clave) en el bloque especificado.

    Agregar una política de grupo personalizada a un grupo de inquilinos

Ejemplo: Permite el acceso total de grupos a todos los bloques

En este ejemplo, a todos los miembros del grupo se les permite el acceso completo a todos los segmentos que pertenecen a la cuenta de inquilino, a menos que la política de bloque lo deniegue explícitamente.

{
  "Statement": [
    {
      "Action": "s3:*",
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::*"
    }
  ]
}

Ejemplo: Permitir el acceso de solo lectura de grupo a todos los bloques

En este ejemplo, todos los miembros del grupo tienen acceso de solo lectura a recursos S3, a menos que la política de bloque lo deniegue explícitamente. Por ejemplo, los usuarios de este grupo pueden enumerar objetos y leer datos de objetos, metadatos y etiquetas.

{
  "Statement": [
    {
      "Sid": "AllowGroupReadOnlyAccess",
      "Effect": "Allow",
      "Action": [
        "s3:ListAllMyBuckets",
        "s3:ListBucket",
        "s3:ListBucketVersions",
        "s3:GetObject",
        "s3:GetObjectTagging",
        "s3:GetObjectVersion",
        "s3:GetObjectVersionTagging"
      ],
      "Resource": "arn:aws:s3:::*"
    }
  ]
}

Ejemplo: Permitir a los miembros del grupo el pleno acceso sólo a su «carpeta» en un cubo

En este ejemplo, sólo se permite a los miembros del grupo que enumeren y tengan acceso a su carpeta específica (prefijo de clave) en el bloque especificado. Tenga en cuenta que los permisos de acceso de otras políticas de grupo y la directiva de bloque deben tenerse en cuenta al determinar la privacidad de estas carpetas.

{
  "Statement": [
    {
      "Sid": "AllowListBucketOfASpecificUserPrefix",
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::department-bucket",
      "Condition": {
        "StringLike": {
          "s3:prefix": "${aws:username}/*"
        }
      }
    },
    {
      "Sid": "AllowUserSpecificActionsOnlyInTheSpecificUserPrefix",
      "Effect": "Allow",
      "Action": "s3:*Object",
      "Resource": "arn:aws:s3:::department-bucket/${aws:username}/*"
    }
  ]
}
Información relacionada

"Usar una cuenta de inquilino"