Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Prévention du problème de l’adjoint confus entre services
Important
Avis de fin de support : les clients existants pourront utiliser Amazon QLDB jusqu'à la fin du support le 31 juillet 2025. Pour plus de détails, consultez Migrer un Amazon QLDB Ledger vers Amazon Aurora SQL Postgre
Le problème de député confus est un problème de sécurité dans lequel une entité qui n’est pas autorisée à effectuer une action peut contraindre une entité plus privilégiée à le faire. En AWS, l'usurpation d'identité interservices peut entraîner la confusion des adjoints.
L’usurpation d’identité entre services peut se produire lorsqu’un service (le service appelant) appelle un autre service (le service appelé). Le service appelant peut être manipulé et ses autorisations utilisées pour agir sur les ressources d’un autre client auxquelles on ne serait pas autorisé d’accéder autrement. Pour éviter le problème de confusion des adjoints, AWS fournit des outils qui vous aident à protéger vos données pour tous les services, les responsables de service ayant accès aux ressources de votre compte.
Nous recommandons d'utiliser les clés de contexte de condition aws:SourceAccount
globale aws:SourceArn
et les clés contextuelles dans les politiques relatives aux ressources afin de limiter les autorisations qu'Amazon QLDB accorde à un autre service sur la ressource. Si vous utilisez les deux clés contextuelles de condition globale, la aws:SourceAccount
valeur et le compte figurant dans la aws:SourceArn
valeur doivent utiliser le même identifiant de compte lorsqu'ils sont utilisés dans la même déclaration de politique.
Le tableau suivant répertorie les valeurs possibles des StreamsJournalToKinesis
QLDBAPIopérations aws:SourceArn
for ExportJournalToS3
et. Ces opérations sont concernées par ce problème de sécurité car elles appellent AWS Security Token Service (AWS STS) pour assumer un IAM rôle que vous spécifiez.
APIopération | Service appelé | lois : SourceArn |
---|---|---|
ExportJournalToS3 |
AWS STS (AssumeRole ) |
Permet QLDB d'assumer le rôle de toutes QLDB les ressources du compte :
Actuellement, ce caractère générique QLDB n'est pris en charge que ARN pour les exportations de journaux. |
StreamsJournalToKinesis |
AWS STS (AssumeRole ) |
Permet QLDB d'assumer le rôle d'un QLDB flux spécifique :
Remarque : Vous ne pouvez spécifier un ID de flux qu'ARNaprès la création de la ressource de flux. Vous pouvez ainsi autoriser l'utilisation du rôle uniquement pour un seul QLDB flux. ARN Permet QLDB d'assumer le rôle de n'importe quel QLDB flux d'un registre :
Permet QLDB d'assumer le rôle de tous QLDB les flux du compte :
Permet QLDB d'assumer le rôle de toutes QLDB les ressources du compte :
|
Le moyen le plus efficace de se protéger contre le problème de confusion des adjoints consiste à utiliser la clé de contexte de la condition aws:SourceArn
globale avec l'intégralité ARN de la ressource. Si vous ne connaissez pas l'intégralité ARN de la ressource ou si vous spécifiez plusieurs ressources, utilisez la clé de condition contextuelle aws:SourceArn
globale avec des caractères génériques (*
) pour les parties inconnues duARN, par exemple,. arn:aws:qldb:us-east-1:
123456789012
:*
L'exemple de politique de confiance suivant pour un IAM rôle montre comment vous pouvez utiliser les touches aws:SourceArn
contextuelles et de condition aws:SourceAccount
globale pour éviter le problème de confusion des adjoints. Avec cette politique de confiance, QLDB vous pouvez assumer le rôle de n'importe quel QLDB flux du compte myExampleLedger
uniquement 123456789012
pour le registre.
Pour utiliser cette politique, remplacez us-east-1
,
123456789012
, et myExampleLedger
dans l'exemple avec vos propres informations.
{ "Version": "2012-10-17", "Statement": { "Sid": "ConfusedDeputyPreventionExamplePolicy", "Effect": "Allow", "Principal": { "Service": "qldb.amazonaws.com" }, "Action": [ "sts:AssumeRole" ], "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:qldb:
us-east-1
:123456789012
:stream/myExampleLedger
/*" }, "StringEquals": { "aws:SourceAccount": "123456789012
" } } } }