As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Prevenção contra “confused deputy” entre serviços no Amazon AppStream 2.0
O problema de “confused deputy” é um problema de segurança em que uma entidade que não tem permissão para executar uma ação coage outra entidade mais privilegiada a executar a ação. Na AWS, a personificação entre serviços pode deixar os recursos da conta vulneráveis ao problema de “confused deputy”. A personificação entre serviços ocorre quando um serviço (o serviço de chamada) chama outro serviço (o serviço chamado). O serviço de chamada pode manipular o serviço chamado para que ele use as respectivas permissões com o objetivo de acessar os recursos do cliente de uma forma na qual o serviço de chamada não tem permissão para atuar sozinho. Para evitar isso, o AWS fornece ferramentas que ajudam você a proteger os dados para todos os serviços com entidades principais de serviço que têm acesso aos recursos em sua conta.
Recomendamos o uso das chaves globais de contexto de condição aws:SourceArn
e aws:SourceAccount
em políticas de recursos para limitar as permissões ao acessar esses recursos. As diretrizes a seguir detalham as recomendações e os requisitos ao usar essas chaves para proteger recursos:
-
Use
aws:SourceArn
se quiser apenas um recurso associado ao acesso entre serviços. -
Use
aws:SourceAccount
se quiser permitir que todos os recursos na conta especificada sejam associados ao uso entre serviços. -
Se a chave
aws:SourceArn
não contiver um ID de conta, você deverá usar ambas as chaves globais de contexto de condição (aws:SourceArn
eaws:SourceAccount
) para limitar as permissões. -
Se você utilizar ambas as chaves globais de contexto de condição e o valor
aws:SourceArn
contiver um ID de conta, a chaveaws:SourceAccount
deverá usar o mesmo ID de conta quando usada na mesma instrução de política.
A maneira mais eficaz de se proteger contra o problema de “confused deputy” é usar o nome do recurso da Amazon (ARN) exato do recurso que deseja permitir. Se você não souber o ARN completo do recurso, use a chave global de contexto de condição aws:SourceArn
com curingas (como *) para as partes desconhecidas do ARN. Também é possível usar um curinga no ARN se quiser especificar vários recursos. Por exemplo, você pode formatar o ARN como arn:aws:
.servicename
::region-name
::your
Conta da AWS ID
:*
Exemplo: prevenção contra “confused deputy” entre serviços em perfil de serviço do Amazon AppStream 2.0
O AppStream 2.0 assume um perfil de serviço usando uma variedade de ARNs de recurso, o que leva a uma instrução condicional complicada. Recomendamos usar um tipo de recurso curinga para evitar falhas inesperadas nos recursos do AppStream 2.0.
exemplo Condicional aws:SourceAccount
:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "appstream.amazonaws.com" ] }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "
your Conta da AWS ID
" } } } ] }
exemplo Condicional aws:SourceArn
:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "appstream.amazonaws.com" ] }, "Action": "sts:AssumeRole", "Condition": { "ArnLike": { "aws:SourceArn": "arn:{aws partition}:appstream:{
your region name
}:{your Conta da AWS ID
}:*" } } } ] }
Exemplo: prevenção contra “confused deputy” entre serviços em perfil de máquina de frota do Amazon AppStream 2.0
exemplo Condicional aws:SourceAccount
:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "appstream.amazonaws.com" ] }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "
your Conta da AWS ID
" } } } ] }
exemplo Condicional aws:SourceArn
:
nota
Se você quiser usar um perfil do IAM para várias frotas, recomendamos usar a chave global de contexto de condição aws:SourceArn
com curingas (*) para corresponder a vários recursos de frota do AppStream 2.0.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "appstream.amazonaws.com" ] }, "Action": "sts:AssumeRole", "Condition": { "ArnLike": { "aws:SourceArn": "arn:{aws partition}:appstream:{
your region name
}:{your Conta da AWS ID
}:fleet/{your fleet name
}" } } } ] }
Exemplo: prevenção contra “confused deputy” entre serviços em política de bucket do Amazon S3 para script de sessão de frotas elásticas do AppStream 2.0
exemplo Condicional aws:SourceAccount
:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "appstream.amazonaws.com" ] }, "Action": "s3:GetObject", "Resource": "
your session script S3 path
", "Condition": { "StringEquals": { "aws:SourceAccount": "your Conta da AWS ID
" } } } ] }
exemplo Condicional aws:SourceArn
:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "appstream.amazonaws.com" ] }, "Action": "s3:GetObject", "Resource": "
your session script S3 path
", "Condition": { "ArnLike": { "aws:SourceArn": "arn:{aws partition}:appstream:{your region name
}:{your Conta da AWS ID
}:fleet/{your fleet name
}" } } } ] }
Exemplo: prevenção contra “confused deputy” entre serviços em política de bucket do Amazon S3 para aplicações do AppStream 2.0
Quando você armazena dados em um bucket do Amazon S3, o bucket pode ser exposto a problemas de “confused deputy”. Isso pode deixar dados, como frotas elásticas, blocos de aplicações, scripts de configuração, ícones de aplicações e scripts de sessão, vulneráveis a agentes mal-intencionados.
Para evitar problemas de “confused deputy”, você pode especificar a condição aws:SourceAccount
ou a condição aws:SourceArn
na política de bucket do Amazon S3 para ELASTIC-FLEET-EXAMPLE-BUCKET
.
As políticas de recursos a seguir mostram como evitar o problema de “confused deputy” com uma das seguintes opções:
-
O
aws:SourceAccount
com o ID da sua conta AWS -
A chave global de contexto de condição
aws:SourceArn
O AppStream 2.0 ainda não oferece suporte à prevenção contra “confused deputy” para ícones de aplicações. O serviço só oferece suporte a arquivos VHD e scripts de configuração. Se você tentar incluir condições adicionais para os ícones de aplicação, os ícones não serão exibidos para os usuários finais.
No exemplo a seguir, a política de bucket só permite o acesso aos recursos da frota elástica do AppStream 2.0 na conta do proprietário para acessar ELASTIC_FLEET_EXAMPLE_BUCKET
.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ConfusedDeputyPreventionExamplePolicy", "Effect": "Allow", "Principal": { "Service": "appstream.amazonaws.com" }, "Action": "s3:GetObject", "Resource": [ "arn:aws:s3:::
ELASTIC-FLEET-EXAMPLE-BUCKET
/vhd-folder/*", "arn:aws:s3:::ELASTIC-FLEET-EXAMPLE-BUCKET
/scripts/*" ], "Condition": { "StringEquals": { "aws:SourceAccount": "your Conta da AWS ID
" } } }, { "Sid": "AllowRetrievalPermissionsToS3AppIconsForAppStream", "Effect": "Allow", "Principal": { "Service": "appstream.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::ELASTIC-FLEET-EXAMPLE-BUCKET
/app-icons/*" } ] }
Você também pode usar a condição aws:SourceArn
para limitar o acesso a recursos específicos.
nota
Se você não souber o ARN completo do recurso ou se quiser especificar vários recursos, use a chave global de contexto de condição aws:SourceArn
com curingas (*) para as partes desconhecidas do ARN.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ConfusedDeputyPreventionExamplePolicy", "Effect": "Allow", "Principal": { "Service": "appstream.amazonaws.com" }, "Action": "s3:GetObject", "Resource": [ "arn:aws:s3:::
ELASTIC-FLEET-EXAMPLE-BUCKET
/vhd-folder/*", "arn:aws:s3:::ELASTIC-FLEET-EXAMPLE-BUCKET
/scripts/*" ], "Condition": { "ArnLike": { "aws:SourceArn": "arn:{aws-partition}:appstream:{your region name
}:{your AWS account ID
}:app-block/*" } } }, { "Sid": "AllowRetrievalPermissionsToS3AppIconsForAppStream", "Effect": "Allow", "Principal": { "Service": "appstream.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::ELASTIC-FLEET-EXAMPLE-BUCKET
/app-icons/*" } ] }
Você também pode usar as condições aws:SourceArn
e aws:SourceAccount
para limitar o acesso a contas e recursos específicos.
nota
Se você não souber o ARN completo dos recursos ou se quiser especificar vários recursos, use a chave global de contexto de condição aws:SourceArn
com curingas (*) para as partes desconhecidas do ARN.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ConfusedDeputyPreventionExamplePolicy", "Effect": "Allow", "Principal": { "Service": "appstream.amazonaws.com" }, "Action": "s3:GetObject", "Resource": [ "arn:aws:s3:::
ELASTIC-FLEET-EXAMPLE-BUCKET
/vhd-folder/*", "arn:aws:s3:::ELASTIC-FLEET-EXAMPLE-BUCKET
/scripts/*" ], "Condition": { "ArnLike": { "aws:SourceArn": "arn:{aws partition}:appstream:{your region name
}:{your AWS account ID
}:app-block/*" }, "StringEquals": { "aws:SourceAccount": "your AWS account ID
" } } }, { "Sid": "AllowRetrievalPermissionsToS3AppIconsForAppStream", "Effect": "Allow", "Principal": { "Service": "appstream.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::ELASTIC-FLEET-EXAMPLE-BUCKET
/app-icons/*" } ] }