Sessões de acesso direto
Sessões de acesso direto (FAS) é uma tecnologia do IAM usada pelos serviços da AWS para transmitir sua identidade, permissões e atributos de sessão quando um serviço da AWS faz uma solicitação em seu nome. O FAS usa as permissões da identidade que chama um serviço da AWS, combinadas com a identidade de um serviço da AWS, para fazer solicitações aos serviços subsequentes. As solicitações de FAS só são feitas aos serviços da AWS em nome de uma entidade principal do IAM depois que um serviço recebe uma solicitação que requeira interações com outros serviços ou recursos da AWS para ser atendida. Quando uma solicitação de FAS é feita:
-
O serviço que recebe a solicitação inicial de uma entidade principal do IAM verifica as permissões da entidade principal do IAM.
-
O serviço que recebe uma solicitação de FAS subsequente também verifica as permissões da mesma entidade principal do IAM.
Por exemplo, o FAS é usado pelo Amazon S3 para fazer chamadas ao AWS Key Management Service para descriptografar um objeto quando o SSE-KMS foi usado para criptografá-lo. Ao baixar um objeto criptografado com o SSE-KMS, um perfil denominado data-reader chama getObject no objeto do Amazon S3, não chama o AWS KMS diretamente. Depois de receber a solicitação getObject e autorizar o data-reader, o Amazon S3 faz uma solicitação de FAS ao AWS KMS para descriptografar o objeto do Amazon S3. Quando o KMS recebe a solicitação de FAS, ele verifica as permissões do perfil e só autoriza a solicitação de descriptografia se o data-reader tem as permissões corretas na chave do KMS. As solicitações para o Amazon S3 e o AWS KMS são autorizadas usando as permissões do perfil, e elas só são bem-sucedidas se o leitor de dados tem permissões tanto para o objeto do Amazon S3 quanto para a chave do AWS KMS.
nota
Solicitações de FAS adicionais podem ser feitas pelos serviços que receberam uma solicitação de FAS. Nesses casos, a entidade principal solicitante deve ter permissões para todos os serviços chamados por FAS.
Solicitações de FAS e condições de política do IAM
Quando as solicitações de FAS são feitas, as chaves de condição aws:CalledVia, aws:CalledViaFirst e aws:CalledViaLast são preenchidas com a entidade principal do serviço que iniciou a chamada de FAS. O valor da chave de condição aws:ViaAWSService é definido como true
sempre que uma solicitação de FAS é feita. No diagrama a seguir, a solicitação feita diretamente ao CloudFormation ainda não tem uma chave de condição aws:CalledVia
ou aws:ViaAWSService
configurada. Quando o CloudFormation e o DynamoDB fazem solicitações de FAS subsequentes em nome do perfil, os valores dessas chaves de condição são preenchidos.
Para permitir que uma solicitação de FAS seja feita, quando normalmente seria negada por uma instrução de política de negação com uma chave de condição testando os endereços IP ou as VPCs de origem, você deve usar chaves de condição para prever uma exceção para as solicitações de FAS em sua política de negação. Isso pode ser feito para todas as solicitações de FAS usando a chave de condição aws:ViaAWSService
. Para permitir que apenas serviços específicos da AWS façam solicitações de FAS, use aws:CalledVia
.
Importante
Quando uma solicitação de FAS é feita após uma solicitação inicial ser ter sido feita por meio de um endpoint da VPC, os valores da chave de condição para aws:SourceVpce
, aws:SourceVpc
e aws:VpcSourceIp
da solicitação inicial não são usados nas solicitações de FAS. Ao escrever políticas usando aws:VPCSourceIP
ou aws:SourceVPCE
para conceder acesso condicionalmente, você também deve usar aws:ViaAWSService
ou aws:CalledVia
permitir solicitações de FAS. Quando uma solicitação de FAS for feita depois que uma solicitação inicial for recebida por um endpoint público do serviço da AWS, as solicitações de FAS subsequentes serão feitas com o mesmo valor de chave de condição aws:SourceIP
.
Exemplo: permitir acesso ao Amazon S3 a partir de uma VPC ou com FAS
No exemplo de política do IAM a seguir, as solicitações GetObject e as solicitações do Athena do Amazon S3 só serão permitidas se forem originadas de endpoints da VPC conectados a example_vpc
ou se a solicitação for uma solicitação de FAS feita pelo Athena.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "OnlyAllowMyIPs", "Effect": "Allow", "Action": [ "s3:GetObject*", "athena:StartQueryExecution", "athena:GetQueryResults", "athena:GetWorkGroup", "athena:StopQueryExecution", "athena:GetQueryExecution" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceVPC": [ "
example_vpc
" ] } } }, { "Sid": "OnlyAllowFAS", "Effect": "Allow", "Action": [ "s3:GetObject*" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia": "athena.amazonaws.com" } } } ] }
Para obter exemplos adicionais do uso de chaves de condição para permitir acesso de FAS, consulte o repositório de exemplos de políticas de perímetro de dados