Skip to main content
StorageGRID solutions and resources
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 y permisos en StorageGRID

Colaboradores netapp-aronk

Aquí hay ejemplos de políticas y permisos en StorageGRID S3.

La estructura de una política

En StorageGRID, las políticas de grupo son las mismas que las políticas de servicio S3 del usuario de AWS (IAM).

Las políticas de grupo son necesarias en StorageGRID. Un usuario con claves de acceso S3 pero no asignadas a un grupo de usuarios, o asignado a un grupo sin una política que otorgue algunos permisos, no podrá acceder a ningún dato.

Las políticas de bloque y de grupo comparten la mayoría de los mismos elementos. Las políticas se crean en formato json y se pueden generar mediante "Generador de políticas de AWS"

Todas las políticas definirán el efecto, las acciones y los recursos. Las políticas de bloque también definirán un principal.

El efecto será permitir o denegar la solicitud.

El Principal

  • Solo se aplica a políticas de bloques.

  • El principal es la(s) cuenta(s)/usuario(s) que se está otorgando o denegando los permisos.

  • Se puede definir como:

    • Un comodín «*»

      "Principal":"*"
      "Principal":{"AWS":"*"}
    • Un ID de inquilino para todos los usuarios de un inquilino (equivalente a la cuenta de AWS).

      "Principal": { "AWS": "27233906934684427525" }
    • Un usuario (local o federado desde dentro del inquilino que reside el bloque (o bien, otro inquilino en el grid)

      "Principal": { "AWS": "arn:aws:iam::76233906934699427431:user/tenant1user1" }
      "Principal": { "AWS": "arn:aws:iam::27233906934684427525:federated-user/tenant2user1" }
    • Un grupo (local o federado desde dentro del inquilino que reside el bloque (o bien, otro inquilino en la cuadrícula).

      "Principal": { "AWS": "arn:aws:iam::76233906934699427431:group/DevOps"  }
      "Principal": { "AWS": "arn:aws:iam::27233906934684427525:federated-group/Managers"  }

La Acción es el conjunto de S3 operaciones que se otorgan o se deniegan al usuario(s).

Nota Para las políticas de grupo, la acción S3:ListBucket Permitido es necesaria para que los usuarios realicen cualquier acción S3.

El Recurso es el cubo o cubetas en los que los principales se otorgan o se les niega la capacidad de realizar las acciones. Opcionalmente puede haber una condición para cuando la acción de política es válida.

El formato de la política JSON se verá así:

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

Uso del generador de políticas de AWS

El generador de políticas de AWS es una gran herramienta para ayudar a obtener el código json con el formato correcto y la información que está tratando de implementar.

Para generar los permisos para una directiva de grupo de StorageGRID: * Seleccione la política de IAM para el tipo de política. * Seleccione el botón para el efecto deseado - Permitir o Denegar. Es recomendable iniciar las directivas con los permisos de denegación y, a continuación, agregar los permisos de permiso * en el menú desplegable de acciones. Haga clic en el cuadro junto a tantas acciones de S3 que desee incluir en este permiso o en el cuadro Todas las acciones. * Escriba las rutas de acceso del depósito en el cuadro Nombre del recurso de Amazon (arn). Incluya “arn:aws:S3::” antes del nombre del depósito. «arn:aws:s3:::example_bucket»

Generar una política de grupo

Para generar los permisos para una política de depósito: * Elija la política de bloques de S3 para el tipo de política. * Seleccione el botón para el efecto deseado - Permitir o Denegar. Es una buena práctica iniciar las políticas con los permisos de denegación y, a continuación, agregar los permisos de permiso * Tipo en la información de usuario o grupo para el Principal. * En el menú desplegable de acciones haz clic en el cuadro junto a tantas de las S3 acciones que quieras incluir en este permiso o en el cuadro “Todas las acciones”. * Escriba las rutas de acceso del depósito en el cuadro Nombre del recurso de Amazon (arn). Incluya “arn:aws:S3::” antes del nombre del depósito. «arn:aws:s3:::example_bucket»

Generar una política de bloque

Por ejemplo, si desea generar una política de depósito para permitir que todos los usuarios realicen operaciones GetObject en todos los objetos del depósito, mientras que solo los usuarios que pertenecen al grupo Marketing en la cuenta especificada tienen acceso completo.

  • Seleccione S3 Bucket Policy como tipo de política.

  • Elija el efecto Permitir

  • Introduzca la información del grupo de Marketing: arn:aws:iam::95390887230002558202:federated-group/Marketing

  • Haga clic en la casilla de «Todas las acciones»

  • Introduzca la información del bloque: arn:aws:S3:::example_bucket,arn:aws:S3:::example_bucket/*

Genere el primer permiso en la política

  • Haga clic en el botón «Agregar declaración»

Primer permiso de la política introducida

  • Elija el efecto Permitir

  • Introduzca el asterisco * para todos

  • Haga clic en el cuadro junto a las acciones GetObject y ListBucket.

Seleccione GetObject Seleccione ListBucket

  • Introduzca la información del bloque: arn:aws:S3:::example_bucket,arn:aws:S3:::example_bucket/*

Genere el segundo permiso en la política

  • Haga clic en el botón «Agregar declaración»

Segundo permiso en la política

  • Haga clic en el botón “Generar Política” y aparecerá una ventana emergente con su política generada.

La salida final

  • Copie el texto json completo que debería tener el siguiente aspecto:

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

Este json se puede utilizar tal cual, o puede eliminar las líneas de ID y versión encima de la línea de “Declaración” y puede personalizar el Sid para cada permiso con un título más significativo para cada permiso o también se pueden eliminar.

Por ejemplo:

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

Políticas de grupo (IAM)

Acceso a bloque de estilo de directorio de casa

Esta política de grupo sólo permitirá a los usuarios acceder a los objetos del depósito denominado nombre de usuario de los usuarios.

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

  ]
}

Denegar creación de bloque de bloqueo de objetos

Esta política de grupo restringirá a los usuarios a crear un bloque con el bloqueo de objeto habilitado en el bloque.

Nota

Esta política no se aplica en la interfaz de usuario de StorageGRID, sino que solo se aplica mediante la API de S3.

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

Límite de retención de bloqueo de objetos

Esta política de depósito restringirá la duración de la retención de bloqueo de objetos a 10 días o menos

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

Restringir a los usuarios la supresión de objetos por versionID

Esta política de grupo restringirá a los usuarios la supresión de objetos versionados por versionID

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

Restrinja un grupo a un único subdirectorio (prefijo) con acceso de solo lectura

Esta política permite a los miembros del grupo tener acceso de solo lectura a un subdirectorio (prefijo) dentro de un bloque. El nombre del depósito es «study» y el subdirectorio es «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/*"
            ]
        }
    ]
}

Políticas de bloques

Restringir bloque a un solo usuario con acceso de sólo lectura

Esta directiva permite a un solo usuario tener acceso de sólo lectura a un bloque y denys explícitamente acceso a todos los demás usuarios. La agrupación de las declaraciones denegadas en la parte superior de la directiva es una buena práctica para una evaluación más rápida.

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

restringe un bloque a algunos usuarios con acceso de solo lectura.

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

Restringir las eliminaciones de objetos versionados por el usuario en un depósito

Esta política de depósito restringirá a un usuario (identificado por el ID de usuario «56622399308951294926») de eliminar objetos versionados por versionID

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