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 perfil ou usuário do IAM e incluir uma condição do Amazon S3 semanticamente inválida, nenhum erro será relatado porque o IAM não pode validar condições do Amazon S3.