Chaves de condição do Amazon S3 - Amazon Simple Storage Service

Chaves de condição do Amazon S3

A linguagem de políticas de acesso permite que especificar condições ao conceder permissões. Para especificar condições para quando uma política está em vigor, você pode usar o elemento opcional Condition ou o bloco Condition, para especificar condições para quando uma política está em vigor. Você pode usar chaves predefinidas de toda a AWS e chaves específicas do Amazon S3 para especificar condições em uma política de acesso do Amazon S3.

No elemento Condition, que é opcional, você cria expressões em que usa operadores boolianos (equal, less than, etc.) para fazer a correspondência da sua condição com os valores na solicitação. Por exemplo, ao conceder a um usuário permissão para fazer upload de um objeto, o proprietário do bucket pode exigir que o objeto seja publicamente legível adicionando a condição StringEquals conforme mostrado aqui:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::awsexamplebucket1/*" ], "Condition": { "StringEquals": { "s3:x-amz-acl": "public-read" } } } ] }

No exemplo, o bloco Condition especifica a condição StringEquals que é aplicada ao par de chave-valor especificado, "s3:x-amz-acl":["public-read"]. Existe um conjunto de chaves predefinidas que pode ser usado para expressar uma condição. O exemplo usa a chave de condição s3:x-amz-acl. Essa condição exige que o usuário inclua o cabeçalho x-amz-acl com o valor public-read em cada solicitação de objeto PUT.

Chaves de condição de toda a AWS

A AWS fornece um conjunto de chaves comuns que recebe o suporte de todos serviços da AWS que, por sua vez, dão suporte às políticas. Essas chaves são chamadas chaves de toda a AWS e usam o prefixo aws:. Para obter uma lista completa de chaves de condição em toda a AWS, consulte Chaves da AWS disponíveis para condições no Guia do usuário do IAM. Você pode usar chaves de condição de toda a AWS no Amazon S3. O exemplo de política de bucket a seguir concede a usuários autenticados permissão para usar a ação s3:GetObject, se a solicitação for proveniente de um intervalo específico de endereços IP (192.0.2.0.*), a menos que o endereço IP seja 192.0.2.188. No bloco de condição, IpAddress e NotIpAddress são condições, e cada condição recebe um par chave-valor para avaliação. Neste exemplo os dois pares de chave-valor usam a chave de toda a AWS aws:SourceIp.

nota

Os valores de chave IPAddress e NotIpAddress especificados na condição usam notação CIDR conforme descrito na RFC 4632. Para obter mais informações,consulte http://www.rfc-editor.org/rfc/rfc4632.txt.

{ "Version": "2012-10-17", "Id": "S3PolicyId1", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Principal": "*", "Action":"s3:GetObject", "Resource": "arn:aws:s3:::awsexamplebucket1/*", "Condition" : { "IpAddress" : { "aws:SourceIp": "192.0.2.0/24" }, "NotIpAddress" : { "aws:SourceIp": "192.0.2.188/32" } } } ] }

Você também pode usar outras chaves de condição de toda a AWS nas políticas do Amazon S3. Por exemplo, você pode especificar o aws:SourceVpce e as chaves de condição aws:SourceVpc em políticas de bucket para VPC endpoints. Para obter exemplos específicos, consulte Controlar o acesso a partir de VPC endpoints com políticas de bucket.

nota

Em relação a algumas chaves de condição globais da AWS, somente certos tipos de recurso são compatíveis. Portanto, confira se o Amazon S3 é compatível com a chave de condição global e o tipo de recurso que você deseja usar ou se você precisará usar uma chave de condição específica do Amazon S3. Para obter uma lista completa de tipos de recurso e chaves de condição compatíveis com o Amazon S3, consulte Ações, recursos e condições.

Chaves de condição específicas do Amazon S3

Você pode usar chaves de condição do Amazon S3 com ações específicas do Amazon S3. Cada chave de condição mapeia para o mesmo cabeçalho de solicitação de nome permitido pela API na qual a condição pode ser definida. As chaves de condição específicas do Amazon S3 ditam o comportamento dos cabeçalhos de solicitação de mesmo nome. Para obter uma lista completa de chaves de condição específicas do Amazon S3, consulte Ações, recursos e chaves de condição do Amazon S3.

Por exemplo, a chave de condição s3:x-amz-acl usada para conceder permissão de condição para a permissão s3:PutObject define o comportamento do cabeçalho de solicitação x-amz-acl para o qual a API do objeto PUT oferece suporte. A chave de condição s3:VersionId que você usa para conceder permissão condicional para a permissão s3:GetObjectVersion define o comportamento do parâmetro de consulta versionId que você define em uma solicitação de objeto GET.

A política de bucket a seguir concederá a permissão s3:PutObject a duas Contas da AWS se a solicitação incluir o cabeçalho x-amz-acl, tornando o objeto publicamente legível. O bloco Condition usa a condição StringEquals e recebe um par de chave/valor, "s3:x-amz-acl":["public-read", para avaliação. No par de chave-valor, s3:x-amz-acl é uma chave específica do Amazon S3, conforme indicado pelo prefixo s3:.

{ "Version":"2012-10-17", "Statement": [ { "Sid":"AddCannedAcl", "Effect":"Allow", "Principal": { "AWS": [ "arn:aws:iam::Account1-ID:root", "arn:aws:iam::Account2-ID:root" ] }, "Action":"s3:PutObject", "Resource": ["arn:aws:s3:::awsexamplebucket1/*"], "Condition": { "StringEquals": { "s3:x-amz-acl":["public-read"] } } } ] }
Importante

Nem todas as condições fazem sentido para todas as ações. Por exemplo, faz sentido incluir uma condição s3:LocationConstraint em uma política que concede a permissão s3:CreateBucket do Amazon S3. No entanto, não faz sentido incluir essa condição em uma política que conceda a permissão s3:GetObject. O Amazon S3 pode testar erros de semântica para esse tipo que envolve condições específicas do Amazon S3. Contudo, se você estiver criando uma política para um usuário do IAM e incluir uma condição do Amazon S3 semanticamente inválida, nenhum erro será reportado porque o IAM não pode validar condições do Amazon S3.