Skip to main content
Uma versão mais recente deste produto está disponível.
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.

Como StorageGRID usa políticas da AWS para controlar o acesso a buckets e objetos do S3

StorageGRID usa a linguagem de políticas da Amazon Web Services (AWS) para permitir que os clientes S3 controlem o acesso a buckets e objetos dentro desses buckets. O sistema StorageGRID implementa um subconjunto da linguagem de políticas da API REST do S3. As políticas de acesso para a API S3 são escritas em JSON.

Visão geral da política de acesso

StorageGRID suporta três tipos de políticas de acesso:

  • Políticas de bucket, que são gerenciadas usando as operações da API S3 GetBucketPolicy, PutBucketPolicy e DeleteBucketPolicy ou pelo Tenant Manager ou Tenant Management API. As políticas de bucket são associadas aos buckets, então são configuradas para controlar o acesso de usuários da conta proprietária do bucket ou de outras contas ao bucket e aos objetos nele. Uma política de bucket se aplica a apenas um bucket e, possivelmente, a vários grupos.

  • Políticas de grupo, que são configuradas usando o Tenant Manager ou a Tenant Management API. As políticas de grupo são associadas a um grupo na conta, então são configuradas para permitir que esse grupo acesse recursos específicos pertencentes a essa conta. Uma política de grupo se aplica a apenas um grupo e possivelmente a vários buckets.

  • Políticas de sessão, que são incluídas ao fazer uma solicitação AssumeRole. As políticas de sessão aplicam-se apenas à sessão em questão, definindo com mais detalhes as permissões que o usuário possui, além daquelas concedidas pelas políticas de grupo e de bucket.

Observação Não há diferença de prioridade entre as políticas de grupo, bucket e sessão.

As políticas de bucket e grupo do StorageGRID seguem uma gramática específica definida pela Amazon. Dentro de cada política há uma matriz de declarações de política, e cada declaração contém os seguintes elementos:

  • ID da declaração (Sid) (opcional)

  • Efeito

  • Principal/NotPrincipal

  • Recurso/NotResource

  • Ação/NotAction

  • Condição (opcional)

As declarações de política são construídas usando esta estrutura para especificar permissões: conceder <Effect> para permitir/negar <Principal> executar <Action> em <Resource> quando <Condition> se aplica.

Cada elemento da política é usado para uma função específica:

Elemento Descrição

Sid

O elemento Sid é opcional. O Sid serve apenas como uma descrição para o usuário. Ele é armazenado, mas não interpretado pelo sistema StorageGRID.

Efeito

Use o elemento Effect para determinar se as operações especificadas são permitidas ou negadas. Você deve identificar as operações que permite (ou nega) em buckets ou objetos usando as palavras-chave do elemento Action.

Principal/NotPrincipal

Você pode permitir que usuários, grupos e contas acessem recursos específicos e executem ações específicas. Se nenhuma assinatura S3 estiver incluída na solicitação, o acesso anônimo será permitido especificando o caractere curinga (*) como o principal. Por padrão, somente o root da conta tem acesso aos recursos pertencentes à conta.

Você só precisa especificar o elemento Principal em uma política de bucket. Para políticas de grupo, o grupo ao qual a política está associada é o elemento Principal implícito.

Recurso/NotResource

O elemento Resource identifica buckets e objetos. Você pode conceder ou negar permissões a buckets e objetos usando o Nome de Recurso da Amazon (ARN) para identificar o recurso.

Ação/NotAction

Os elementos Ação e Efeito são os dois componentes das permissões. Quando um grupo solicita um recurso, o acesso a ele é concedido ou negado. O acesso é negado a menos que você atribua permissões especificamente, mas você pode usar a negação explícita para substituir uma permissão concedida por outra política.

Condição

O elemento Condição é opcional. As condições permitem criar expressões para determinar quando uma política deve ser aplicada.

No elemento Action, você pode usar o caractere curinga (*) para especificar todas as operações ou um subconjunto de operações. Por exemplo, esta Action corresponde a permissões como s3:GetObject, s3:PutObject e s3:DeleteObject.

s3:*Object

No elemento Resource, você pode usar os caracteres curinga (*) e (?). Enquanto o asterisco (*) corresponde a 0 ou mais caracteres, o ponto de interrogação (?) corresponde a qualquer caractere único.

No elemento Principal, caracteres curinga não são suportados, exceto para definir acesso anônimo, que concede permissão a todos. Por exemplo, você define o curinga (*) como o valor Principal.

"Principal":"*"
"Principal":{"AWS":"*"}

No exemplo a seguir, a declaração utiliza os elementos Efeito, Principal, Ação e Recurso. Este exemplo mostra uma declaração de política de bucket completa que usa o Efeito "Permitir" para conceder aos Principais, ao grupo de administradores federated-group/admin e ao grupo de finanças federated-group/finance, permissões para executar a Ação s3:ListBucket no bucket nomeado mybucket e a Ação s3:GetObject em todos os objetos dentro desse 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/*"
      ]
    }
  ]
}

A política de bucket tem um limite de tamanho de 20.480 bytes e a política de grupo tem um limite de tamanho de 5.120 bytes.

Consistência para políticas

Por padrão, todas as atualizações feitas nas políticas de grupo são eventualmente consistentes. Quando uma política de grupo se torna consistente, as alterações podem levar até 15 minutos adicionais para entrar em vigor devido ao armazenamento em cache. Por padrão, todas as atualizações feitas nas políticas de bucket são fortemente consistentes.

Conforme necessário, você pode alterar as garantias de consistência para atualizações de políticas de bucket. Por exemplo, você pode querer que uma alteração em uma política de bucket esteja disponível durante uma falha no local.

Nesse caso, você pode definir o Consistency-Control cabeçalho na solicitação PutBucketPolicy ou pode usar a solicitação de consistência PUT Bucket. Quando uma política de bucket se torna consistente, as alterações podem levar até 8 segundos adicionais para entrar em vigor devido ao armazenamento em cache.

Observação Se você definir a consistência para um valor diferente para contornar uma situação temporária, certifique-se de definir a configuração do bucket de volta ao valor original quando terminar. Caso contrário, todas as solicitações futuras ao bucket usarão a configuração modificada.

O que é política de sessão?

Uma política de sessão é uma política de acesso que restringe temporariamente as permissões disponíveis durante uma sessão específica, como quando um usuário assume um grupo. Uma política de sessão só pode permitir um subconjunto de permissões e não pode conceder permissões adicionais. O próprio grupo pode ter permissões mais amplas.

Use o ARN em declarações de política

Nas declarações de política, o ARN é usado nos elementos Principal e Resource.

  • Use esta sintaxe para especificar o ARN do recurso S3:

    arn:aws:s3:::bucket-name
    arn:aws:s3:::bucket-name/object_key
  • Use esta sintaxe para especificar o ARN do recurso de identidade (usuários e 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

Outras considerações:

  • Você pode usar o asterisco (*) como um caractere curinga para corresponder a zero ou mais caracteres dentro da chave do objeto.

  • Caracteres internacionais, que podem ser especificados na chave do objeto, devem ser codificados usando JSON UTF-8 ou usando sequências de escape JSON \u. A codificação percentual não é suportada.

    O corpo da requisição HTTP para a operação PutBucketPolicy deve ser codificado com charset=UTF-8.

Especifique recursos em uma política

Nas declarações de política, você pode usar o elemento Resource para especificar o bucket ou objeto para o qual as permissões são permitidas ou negadas.

  • Cada declaração de política requer um elemento Resource. Em uma política, os recursos são indicados pelo elemento Resource, ou, alternativamente, NotResource para exclusão.

  • Você especifica recursos com um ARN de recurso S3. Por exemplo:

    "Resource": "arn:aws:s3:::mybucket/*"
  • Você também pode usar variáveis de política dentro da chave do objeto. Por exemplo:

    "Resource": "arn:aws:s3:::mybucket/home/${aws:username}/*"
  • O valor do recurso pode especificar um bucket que ainda não existe quando uma política de grupo é criada.

Especifique os principais em uma política

Utilize o elemento Principal para identificar o usuário, grupo ou conta de locatário que tem permissão/negação de acesso ao recurso pela declaração de política.

  • Cada declaração de política em uma política de bucket deve incluir um elemento Principal. Declarações de política em uma política de grupo não precisam do elemento Principal porque o grupo é entendido como o principal.

  • Em uma política, os principais são designados pelo elemento "Principal" ou, alternativamente, "NotPrincipal" para exclusão.

  • As identidades baseadas em contas devem ser especificadas usando um ID ou um ARN:

    "Principal": { "AWS": "account_id"}
    "Principal": { "AWS": "identity_arn" }
  • Este exemplo usa o ID da conta de locatário 27233906934684427525, que inclui a raiz da conta e todos os usuários da conta:

     "Principal": { "AWS": "27233906934684427525" }
  • Você pode especificar apenas a raiz da conta:

    "Principal": { "AWS": "arn:aws:iam::27233906934684427525:root" }
  • Você pode especificar um usuário federado específico ("Alex"):

    "Principal": { "AWS": "arn:aws:iam::27233906934684427525:federated-user/Alex" }
  • Você pode especificar um grupo federado específico ("Managers"):

    "Principal": { "AWS": "arn:aws:iam::27233906934684427525:federated-group/Managers"  }
  • Você pode especificar um principal anônimo:

    "Principal": "*"
  • Para evitar ambiguidade, você pode usar o UUID do usuário em vez do nome de usuário:

    arn:aws:iam::27233906934684427525:user-uuid/de305d54-75b4-431b-adb2-eb6b9e546013

    Por exemplo, suponha que Alex deixe a organização e o nome de usuário Alex seja excluído. Se um novo Alex entrar na organização e receber o mesmo Alex nome de usuário, o novo usuário poderá herdar involuntariamente as permissões concedidas ao usuário original.

  • O valor principal pode especificar um nome de grupo/usuário que ainda não existe quando uma política de bucket é criada.

Especifique as permissões em uma política

Em uma política, o elemento Action é usado para permitir/negar permissões a um recurso. Há um conjunto de permissões que você pode especificar em uma política, que são indicadas pelo elemento "Action" ou, alternativamente, por "NotAction" para exclusão. Cada um desses elementos corresponde a operações específicas da API REST do S3.

A tabela lista as permissões que se aplicam aos buckets e as permissões que se aplicam aos objetos.

Observação Amazon S3 agora usa a permissão s3:PutReplicationConfiguration tanto para as ações PutBucketReplication e DeleteBucketReplication. StorageGRID usa permissões separadas para cada ação, o que corresponde à especificação original do Amazon S3.
Observação Uma exclusão é realizada quando uma operação de inserção (put) é usada para sobrescrever um valor existente.

Permissões que se aplicam aos buckets

Permissões Operações da API REST do S3 Personalizado para StorageGRID

s3:CreateBucket

CreateBucket

Sim.

Nota: use somente em políticas de grupo.

s3:DeleteBucket

DeleteBucket

s3:DeleteBucketMetadataNotification

EXCLUIR configuração de notificação de metadados do bucket

Sim

s3:DeleteBucketPolicy

DeleteBucketPolicy

s3:DeleteReplicationConfiguration

DeleteBucketReplication

Sim, permissões separadas para PUT e DELETE

s3:GetBucketAcl

GetBucketAcl

s3:GetBucketCompliance

GET conformidade do bucket (obsoleto)

Sim

s3:GetBucketConsistency

GET consistência do bucket

Sim

s3:GetBucketCORS

GetBucketCors

s3:GetEncryptionConfiguration

GetBucketEncryption

s3:GetBucketLastAccessTime

Obter o último tempo de acesso do bucket

Sim

s3:GetBucketLocation

GetBucketLocation

s3:GetBucketMetadataNotification

GET Configuração de notificação de metadados do bucket

Sim

s3:GetBucketNotification

GetBucketNotificationConfiguration

s3:GetBucketObjectLockConfiguration

GetObjectLockConfiguration

s3:GetBucketPolicy

GetBucketPolicy

s3:GetBucketTagging

GetBucketTagging

s3:GetBucketVersioning

GetBucketVersioning

s3:GetLifecycleConfiguration

GetBucketLifecycleConfiguration

s3:GetReplicationConfiguration

GetBucketReplication

s3:ListAllMyBuckets

  • ListBuckets

  • GET Uso de Armazenamento

Sim, para GET Storage Usage.

Nota: use somente em políticas de grupo.

s3:ListBucket

  • ListObjects

  • HeadBucket

  • RestoreObject

s3:ListBucketMultipartUploads

  • ListMultipartUploads

  • RestoreObject

s3:ListBucketVersions

GET versões do Bucket

s3:PutBucketCompliance

PUT Bucket compliance (obsoleto)

Sim

s3:PutBucketConsistency

Consistência de PUT Bucket

Sim

s3:PutBucketCORS

  • DeleteBucketCors†

  • PutBucketCors

s3:PutEncryptionConfiguration

  • DeleteBucketEncryption

  • PutBucketEncryption

s3:PutBucketLastAccessTime

Último tempo de acesso do PUT Bucket

Sim

s3:PutBucketMetadataNotification

PUT Configuração de notificação de metadados do bucket

Sim

s3:PutBucketNotification

PutBucketNotificationConfiguration

s3:PutBucketObjectLockConfiguration

  • CreateBucket com o x-amz-bucket-object-lock-enabled: true cabeçalho da solicitação (também requer a permissão s3:CreateBucket)

  • PutObjectLockConfiguration

s3:PutBucketPolicy

PutBucketPolicy

s3:PutBucketTagging

  • DeleteBucketTagging†

  • PutBucketTagging

s3:PutBucketVersioning

PutBucketVersioning

s3:PutLifecycleConfiguration

  • DeleteBucketLifecycle†

  • PutBucketLifecycleConfiguration

s3:PutReplicationConfiguration

PutBucketReplication

Sim, permissões separadas para PUT e DELETE

Permissões que se aplicam a objetos

Permissões Operações da API REST do S3 Personalizado para StorageGRID

s3:AbortMultipartUpload

  • AbortMultipartUpload

  • RestoreObject

s3:BypassGovernanceRetention

  • DeleteObject

  • DeleteObjects

  • PutObjectRetention

s3:DeleteObject

  • DeleteObject

  • DeleteObjects

  • RestoreObject

s3:DeleteObjectTagging

DeleteObjectTagging

s3:DeleteObjectVersionTagging

DeleteObjectTagging (uma versão específica do objeto)

s3:DeleteObjectVersion

DeleteObject (uma versão específica do objeto)

s3:GetObject

  • GetObject

  • HeadObject

  • RestoreObject

  • SelectObjectContent

s3:GetObjectAcl

GetObjectAcl

s3:GetObjectLegalHold

GetObjectLegalHold

s3:GetObjectRetention

GetObjectRetention

s3:GetObjectTagging

GetObjectTagging

s3:GetObjectVersionTagging

GetObjectTagging (uma versão específica do objeto)

s3:GetObjectVersion

GetObject (uma versão específica do objeto)

s3:ListMultipartUploadParts

ListParts, RestoreObject

s3:PutObject

  • PutObject

  • CopyObject

  • RestoreObject

  • CreateMultipartUpload

  • CompleteMultipartUpload

  • UploadPart

  • UploadPartCopy

s3:PutObjectLegalHold

PutObjectLegalHold

s3:PutObjectRetention

PutObjectRetention

s3:PutObjectTagging

PutObjectTagging

s3:PutObjectVersionTagging

PutObjectTagging (uma versão específica do objeto)

s3:PutOverwriteObject

  • PutObject

  • CopyObject

  • PutObjectTagging

  • DeleteObjectTagging

  • CompleteMultipartUpload

Sim

s3:RestoreObject

RestoreObject

Use a permissão PutOverwriteObject

A permissão s3:PutOverwriteObject é uma permissão personalizada do StorageGRID que se aplica a operações que criam ou atualizam objetos. A configuração dessa permissão determina se o cliente pode sobrescrever os dados de um objeto, metadados definidos pelo usuário ou as tags de objetos S3.

As configurações possíveis para essa permissão incluem:

  • Permitir: O cliente pode sobrescrever um objeto. Esta é a configuração padrão.

  • Negar: O cliente não pode sobrescrever um objeto. Quando definido como Negar, a permissão PutOverwriteObject funciona da seguinte forma:

    • Se um objeto existente for encontrado no mesmo caminho:

      • Os dados do objeto, metadados definidos pelo usuário ou as etiquetas do objeto S3 não podem ser sobrescritos.

      • Todas as operações de ingestão em andamento são canceladas e um erro é retornado.

      • Se o versionamento do S3 estiver ativado, a configuração Deny impede que as operações PutObjectTagging ou DeleteObjectTagging modifiquem o TagSet de um objeto e suas versões não atuais.

    • Se um objeto existente não for encontrado, esta permissão não terá efeito.

  • Quando essa permissão não está presente, o efeito é o mesmo que se Allow estivesse definido.

Observação Se a política atual do S3 permitir sobrescrever e a permissão PutOverwriteObject estiver definida como Negar, o cliente não poderá sobrescrever os dados de um objeto, metadados definidos pelo usuário ou a marcação do objeto. Além disso, se a caixa de seleção Impedir modificação pelo cliente estiver marcada (Configuração > Configurações de segurança > Rede e objetos), essa configuração substituirá a configuração da permissão PutOverwriteObject.

Especificar condições em uma política

As condições definem quando uma política entrará em vigor. As condições consistem em operadores e pares de chave-valor.

As condições utilizam pares de chave-valor para avaliação. Um elemento de condição pode conter múltiplas condições, e cada condição pode conter múltiplos pares de chave-valor. O bloco de condição utiliza o seguinte formato:

Condition: {
     condition_type: {
          condition_key: condition_values

No exemplo a seguir, a condição IpAddress usa a chave de condição SourceIp.

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

Operadores de condição suportados

Os operadores condicionais são categorizados da seguinte forma:

  • String

  • Numérico

  • Booleano

  • Endereço IP

  • Verificação de valor nulo

Operadores de condição Descrição

StringEquals

Compara uma chave com um valor de string com base na correspondência exata (diferencia maiúsculas de minúsculas).

StringNotEquals

Compara uma chave com um valor de string com base na correspondência negada (diferencia maiúsculas de minúsculas).

StringEqualsIgnoreCase

Compara uma chave com um valor de string com base em uma correspondência exata (ignora maiúsculas e minúsculas).

StringNotEqualsIgnoreCase

Compara uma chave com um valor de string com base na correspondência negada (ignora maiúsculas e minúsculas).

StringLike

Compara uma chave com um valor de string com base na correspondência exata (diferencia maiúsculas de minúsculas). Pode incluir os caracteres curinga * e ?.

StringNotLike

Compara uma chave com um valor de string com base na correspondência negada (diferencia maiúsculas de minúsculas). Pode incluir os caracteres curinga * e ?.

NumericEquals

Compara uma chave a um valor numérico com base em uma correspondência exata.

NumericNotEquals

Compara uma chave a um valor numérico com base na correspondência negada.

NumericGreaterThan

Compara uma chave a um valor numérico com base na correspondência "maior que".

NumericGreaterThanEquals

Compara uma chave a um valor numérico com base na correspondência "maior ou igual a".

NumericLessThan

Compara uma chave a um valor numérico com base na correspondência "menor que".

NumericLessThanEquals

Compara uma chave a um valor numérico com base na correspondência "menor ou igual a".

Bool

Compara uma chave a um valor booleano com base na correspondência "verdadeiro ou falso".

IpAddress

Compara uma chave a um endereço IP ou intervalo de endereços IP.

NotIpAddress

Compara uma chave a um endereço IP ou intervalo de endereços IP com base na correspondência negada.

Nulo

Verifica se uma chave de condição está presente no contexto da solicitação atual.

IfExists

Adicionado a qualquer operador de condição, exceto a condição Null, para verificar a ausência da chave de condição. Retorna VERDADEIRO se a chave de condição não estiver presente.

Chaves de condição suportadas

Chaves de condição Ações Descrição

aws:SourceIp

Operadores de IP

Será comparado ao endereço IP de onde a solicitação foi enviada. Pode ser usado para operações de bucket ou objeto.

Nota: Se a solicitação S3 foi enviada através do serviço Load Balancer nos nós Admin e Gateway, ela será comparada com o endereço IP upstream do serviço Load Balancer.

Nota: Se um balanceador de carga de terceiro não transparente for utilizado, a comparação será feita com o endereço IP desse balanceador de carga. Qualquer X-Forwarded-For cabeçalho será ignorado, pois sua validade não pode ser verificada.

aws:username

Recurso/Identidade

Será comparado ao nome de usuário do remetente da solicitação. Pode ser usado para operações de bucket ou objeto.

s3:delimitador

s3:ListBucket e

s3:ListBucketVersions permissões

Será comparado ao parâmetro delimitador especificado em uma solicitação ListObjects ou 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

Será necessário que o objeto existente possua a chave e o valor de tag específicos.

s3:max-keys

s3:ListBucket e

s3:ListBucketVersions permissões

Será comparado ao parâmetro max-keys especificado em uma solicitação ListObjects ou ListObjectVersions.

s3:modo de bloqueio de objeto

s3:PutObject

Compara com o object-lock-mode expandido do cabeçalho da solicitação nas solicitações PutObject, CopyObject e CreateMultipartUpload.

s3:modo de bloqueio de objeto

s3:PutObjectRetention

Compara com a object-lock-mode expandida do corpo XML na solicitação PutObjectRetention.

s3:object-lock-remaining-retention-days

s3:PutObject

Compara com a data de retenção especificada no `x-amz-object-lock-retain-until-date`cabeçalho da solicitação ou calculada a partir do período de retenção padrão do bucket para garantir que esses valores estejam dentro do intervalo permitido para as seguintes solicitações:

  • PutObject

  • CopyObject

  • CreateMultipartUpload

s3:object-lock-remaining-retention-days

s3:PutObjectRetention

Compara com a data de retenção especificada na solicitação PutObjectRetention para garantir que esteja dentro do intervalo permitido.

s3:prefix

s3:ListBucket e

s3:ListBucketVersions permissões

Será comparado ao parâmetro de prefixo especificado em uma solicitação ListObjects ou ListObjectVersions.

s3:RequestObjectTag/<tag-key>

s3:PutObject

s3:PutObjectTagging

s3:PutObjectVersionTagging

Será necessário especificar uma chave e um valor de tag quando a solicitação do objeto incluir tagging.

s3:x-amz-server-side-encryption-customer-algorithm

s3:PutObject

Compara com o sse-customer-algorithm ou com o copy-source-sse-customer-algorithm expandido do cabeçalho da solicitação nas solicitações PutObject, CopyObject, CreateMultipartUpload, UploadPart, UploadPartCopy e CompleteMultipartUpload.

Especifique variáveis em uma política

Você pode usar variáveis em políticas para preencher informações de política quando elas estiverem disponíveis. Você pode usar variáveis de política no elemento Resource e em comparações de strings no elemento Condition.

Neste exemplo, a variável ${aws:username} faz parte do elemento Resource:

"Resource": "arn:aws:s3:::bucket-name/home/${aws:username}/*"

Neste exemplo, a variável ${aws:username} faz parte do valor da condição no bloco de condição:

"Condition": {
    "StringLike": {
      "s3:prefix": "${aws:username}/*"
		...
},
		...
Variável Descrição

${aws:SourceIp}

Utiliza a chave SourceIp como a variável fornecida.

${aws:username}

Utiliza a chave de nome de usuário como a variável fornecida.

${s3:prefix}

Utiliza a chave de prefixo específica do serviço como variável fornecida.

${s3:max-keys}

Utiliza a chave max-keys específica do serviço como variável fornecida.

${*}

Caractere especial. Usa o caractere como um caractere literal *.

${?}

Caractere especial. Usa o caractere como um caractere literal "?"

${$}

Caractere especial. Usa o caractere como um caractere $ literal.

Criar políticas que exigem tratamento especial

Às vezes, uma política pode conceder permissões que são perigosas para a segurança ou para a continuidade das operações, como bloquear o usuário raiz da conta. A implementação da API REST do StorageGRID S3 é menos restritiva durante a validação da política do que a da Amazon, mas igualmente rigorosa durante a avaliação da política.

Descrição da política Tipo de política Comportamento da Amazon Comportamento do StorageGRID

Negue a si mesmo quaisquer permissões para a conta root

Bucket

Válido e aplicado, mas a conta de usuário raiz mantém permissão para todas as operações de política do bucket S3

Mesmo

Negar a si mesmo quaisquer permissões para usuário/grupo

Grupo

Válido e em vigor

Mesmo

Permitir que um grupo de contas estrangeiras tenha qualquer permissão

Bucket

Principal inválido

Válido, mas as permissões para todas as operações de política do bucket S3 retornam um erro 405 Method Not Allowed quando permitidas por uma política

Permitir que o usuário raiz ou usuário de uma conta estrangeira tenha qualquer permissão

Bucket

Válido, mas as permissões para todas as operações de política do bucket S3 retornam um erro 405 Method Not Allowed quando permitidas por uma política

Mesmo

Permitir que todos tenham permissão para realizar todas as ações

Bucket

Válido, mas as permissões para todas as operações de política do bucket S3 retornam um erro 405 Method Not Allowed para o usuário raiz e usuários da conta externa

Mesmo

Negar permissões a todos para todas as ações

Bucket

Válido e aplicado, mas a conta de usuário raiz mantém permissão para todas as operações de política do bucket S3

Mesmo

Principal é um usuário ou grupo inexistente

Bucket

Principal inválido

Válido

O recurso é um bucket S3 inexistente

Grupo

Válido

Mesmo

Principal é um grupo local

Bucket

Principal inválido

Válido

A política concede permissões a contas que não são proprietárias (incluindo contas anônimas) para colocar objetos.

Bucket

Válido. Os objetos pertencem à conta do criador e a política do bucket não se aplica. A conta do criador deve conceder permissões de acesso ao objeto usando ACLs de objeto.

Válido. Os objetos pertencem à conta proprietária do bucket. A política do bucket se aplica.

Proteção WORM (gravação única e leitura múltipla)

Você pode criar buckets WORM (write-once-read-many) para proteger dados, metadados de objetos definidos pelo usuário e a marcação de objetos S3. Você configura os buckets WORM para permitir a criação de novos objetos e impedir a sobrescrita ou exclusão de conteúdo existente. Use uma das abordagens descritas aqui.

Para garantir que as sobrescritas sejam sempre negadas, você pode:

  • No Grid Manager, acesse Configuração > Segurança > Configurações de segurança > Rede e objetos e selecione a caixa de seleção Impedir modificação do cliente.

  • Aplique as seguintes regras e políticas do S3:

    • Adicione uma operação DENY PutOverwriteObject à política do S3.

    • Adicione uma operação DENY DeleteObject à política do S3.

    • Adicione uma operação ALLOW PutObject à política do S3.

Observação Configurar DeleteObject como NEGAR em uma política do S3 não impede que o ILM exclua objetos quando existe uma regra como "zero cópias após 30 dias".
Observação Mesmo quando todas essas regras e políticas são aplicadas, elas não impedem gravações simultâneas (veja a Situação A). Elas impedem sobrescritas sequenciais concluídas (veja a Situação B).

Situação A: Escritas simultâneas (sem proteção)

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

Situação B: Sobrescritas sequenciais concluídas (protegidas contra)

/mybucket/important.doc
PUT#1 -------> PUT#2 ---X (denied)