Skip to main content
StorageGRID solutions and resources
O português é fornecido por meio de tradução automática para sua conveniência. O inglês precede o português em caso de inconsistências.

Políticas e permissões no StorageGRID

Colaboradores netapp-aronk

Aqui estão exemplos de políticas e permissões no StorageGRID S3.

A estrutura de uma política

No StorageGRID, as políticas de grupo são as mesmas que as políticas de serviço do AWS user (IAM) S3.

As políticas de grupo são necessárias no StorageGRID. Um usuário com S3 chaves de acesso, mas não atribuído a um grupo de usuários, ou atribuído a um grupo sem uma política que conceda algumas permissões, não poderá acessar nenhum dado.

As políticas de bucket e grupo compartilham a maioria dos mesmos elementos. As políticas são construídas no formato json e podem ser geradas usando o. "Gerador de políticas da AWS"

Todas as políticas definirão o efeito, a(s) ação(ões) e o(s) recurso(s). As políticas de bucket também definirão um principal.

O efeito será permitir ou negar o pedido.

O principal

  • Aplica-se apenas a políticas de bucket.

  • O principal é a(s) conta(s)/usuário(s) que está sendo concedido(s) ou negado(s) as permissões.

  • Pode ser definido como:

    • Um curinga

      "Principal":"*"
      "Principal":{"AWS":"*"}
    • Um ID de locatário para todos os usuários em um locatário (equivalente à conta da AWS)

      "Principal": { "AWS": "27233906934684427525" }
    • Um usuário (local ou federado de dentro do locatário o bucket reside, ou outro locatário na grade)

      "Principal": { "AWS": "arn:aws:iam::76233906934699427431:user/tenant1user1" }
      "Principal": { "AWS": "arn:aws:iam::27233906934684427525:federated-user/tenant2user1" }
    • Um grupo (local ou federado de dentro do locatário o bucket reside, ou outro inquilino na grade).

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

A Ação é o conjunto de S3 operações que estão sendo concedidas ou negadas ao(s) usuário(s).

Observação Para políticas de Grupo, a ação S3:ListBucket permitida é necessária para que os usuários executem quaisquer ações S3D.

O recurso é o bucket ou buckets em que os princípios estão sendo concedidos ou negados a capacidade de executar as ações. Opcionalmente, pode haver uma condição para quando a ação da política é válida.

O formato da política JSON será assim:

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

Usando o gerador de políticas da AWS

O gerador de políticas da AWS é uma ótima ferramenta para ajudar a obter o código json com o formato correto e as informações que você está tentando implementar.

Para gerar as permissões para uma política de grupo do StorageGRID: * Escolha a política do IAM para o tipo de política. * Selecione o botão para o efeito desejado - permitir ou negar. É uma boa prática iniciar suas políticas com as permissões de negação e, em seguida, adicionar as permissões de permissão * na caixa suspensa ações clique na caixa ao lado de quantas das ações S3 que você deseja incluir nesta permissão ou na caixa "todas as ações". * Digite os caminhos de intervalo na caixa Nome de recurso do Amazon (ARN). Inclua "ARN:aws:S3:::" antes do nome do intervalo. Ex. "arn:aws:s3:::example_bucket"

Gerar uma política de grupo

Para gerar as permissões para uma política de bucket: * Escolha a Política de bucket do S3 para o tipo de diretiva. * Selecione o botão para o efeito desejado - permitir ou negar. É uma boa prática iniciar suas políticas com as permissões de negação e, em seguida, adicionar as permissões de permissão * tipo nas informações de usuário ou grupo para o principal. * Na lista suspensa ações, clique na caixa ao lado de tantas das S3 ações que você deseja incluir nesta permissão ou na caixa "todas as ações". * Digite os caminhos de intervalo na caixa Nome de recurso do Amazon (ARN). Inclua "ARN:aws:S3:::" antes do nome do intervalo. Ex. "arn:aws:s3:::example_bucket"

Gerar uma política de bucket

Por exemplo, se você quiser gerar uma política de bucket para permitir que todos os usuários executem operações GetObject em todos os objetos no bucket, enquanto somente os usuários pertencentes ao grupo "Marketing" na conta especificada terão acesso total.

  • Selecione S3 Bucket Policy como o tipo de política.

  • Escolha o efeito permitir

  • Insira as informações do grupo Marketing - ARN:aws:iam::95390887230002558202:grupo federado/Marketing

  • Clique na caixa "todas as ações"

  • Insira as informações do bucket - ARN:aws:S3:::example_bucket,arn:aws:S3:::example_bucket/*

Gere a primeira permissão na política

  • Clique no botão "Adicionar declaração"

Primeira permissão na política inserida

  • Escolha o efeito permitir

  • Digite o asterisco (*) para todos

  • Clique na caixa ao lado de ações GetObject e ListBucket"

Selecione GetObject Selecione ListBucket

  • Insira as informações do bucket - ARN:aws:S3:::example_bucket,arn:aws:S3:::example_bucket/*

Gere a segunda permissão na política

  • Clique no botão "Adicionar declaração"

Segunda permissão na política

  • Clique no botão "gerar política" e uma janela pop-up aparecerá com a política gerada.

A saída final

  • Copie o texto json completo que deve ser assim:

{
  "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 pode ser usado como está, ou você pode remover as linhas ID e versão acima da linha "Statement" e você pode personalizar o Sid para cada permissão com um título mais significativo para cada permissão, ou estes podem ser removidos também.

Por exemplo:

{
  "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)

Acesso ao bucket do estilo do Home Directory

Essa política de grupo só permitirá que os usuários acessem objetos no intervalo chamado nome de usuário do usuário.

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

  ]
}

Negar criação de bucket de bloqueio de objetos

Esta política de grupo restringirá os usuários a criar um bucket com o bloqueio de objetos ativado no bucket.

Observação

Esta política não é aplicada na IU do StorageGRID, ela só é aplicada pela API S3.

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

Limite de retenção de bloqueio de objetos

Esta política de bucket restringirá a duração de retenção de bloqueio de objetos a 10 dias ou 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"
      }
    }
   }
  ]
}

Restrinja os usuários de excluir objetos por versionID

Esta política de grupo irá restringir os usuários de excluir objetos versionados por versionID

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

Restrinja um grupo a um subdiretório único (prefixo) com acesso somente leitura

Essa diretiva permite que os membros do grupo tenham acesso somente leitura a um subdiretório (prefixo) dentro de um intervalo. O nome do intervalo é "estudo" e o subdiretório é "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 do bucket

Restrinja o bucket a um único usuário com acesso somente leitura

Essa política permite que um único usuário tenha acesso somente leitura a um bucket e explicitamente o acesso da denys a todos os outros usuários. Agrupar as declarações deny no topo da política é uma boa prática para uma avaliação mais 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/*"
            ]
        }
    ]
}

restrinja um intervalo a alguns usuários com acesso somente leitura.

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

Restrinja as exclusões do usuário de objetos versionados em um bucket

Esta política de bucket irá restringir um usuário(identificado pelo UserId "56622399308951294926") de excluir 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"
        ]
      }
    }
  ]
}