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.
Tag-based contrôle d'accès pour les opérations du plan de données Amazon Neptune
Tag-based le contrôle d'accès (TBAC) vous permet d'utiliser AWS des balises de ressources et des balises principales IAM comme conditions dans les politiques IAM et les politiques de contrôle des services (SCP) pour contrôler l'accès aux opérations du plan de données Amazon Neptune. Avec le TBAC, vous pouvez faire en sorte que seuls les principaux dont les balises correspondent aux balises d'un cluster de base de données Neptune puissent effectuer des neptune-db:* actions sur ce cluster, sans énumérer les noms de ressources Amazon (ARN) spécifiques au cluster dans chaque politique.
Le TBAC s'appuie sur le modèle de sécurité existant de Neptune et complète les actions du plan de données de contrôle d'accès basées sur l'action.
Comment le TBAC s'intègre aux couches de sécurité de Neptune
Neptune protège vos données grâce à de multiples mécanismes de sécurité qui se chevauchent. Le TBAC ajoute une couche d'autorisation basée sur les attributs qui fonctionne avec chacun d'entre eux :
| Couche | Mécanisme | Scope |
|---|---|---|
| Isolement de réseau | Cloud privé virtuel (VPC), groupes de sécurité, points de terminaison VPC () PrivateLink | Contrôle quels hôtes peuvent accéder aux points de terminaison Neptune |
| Chiffrement | Transport Layer Security (TLS) 1.3 en transit ; AWS KMS chiffrement géré au repos | Protège la confidentialité des données |
| Authentification IAM | AWS Demandes signées par Signature Version 4 (SigV4) adressées au point de terminaison de données Neptune | Authentifie l'appelant |
| Action-based contrôle d'accès | neptune-db:actions (ReadDataViaQueryWriteDataViaQuery, etc.) |
Contrôle les opérations qu'un directeur peut effectuer |
| Clés de condition | neptune-db:QueryLanguage, clés contextuelles globales |
Ajoute des contraintes contextuelles aux politiques |
| TBAC | aws:ResourceTag/${TagKey}évalué par rapport à aws:PrincipalTag/${TagKey} |
Restreint l'accès en fonction de l'alignement des balises entre le principal et la ressource |
| Accès basé sur des balises administratives | aws:ResourceTagrds:cluster-tag, etc. sur les actions du plan de gestion |
Contrôle les personnes habilitées à gérer l'infrastructure Neptune |
Concepts clés du TBAC
- Tags principaux
-
Balises associées à des utilisateurs, à des rôles ou à des principes de session fédérée IAM. Vous pouvez les définir via la console IAM ou les mappages d' AWS CLI attributs SAML (Security Assertion Markup Language) /OpenID Connect (OIDC) du fournisseur d'identité (IdP).
- Balises de ressources
-
Tags attachés aux clusters de base de données Neptune à l'aide de.
AddTagsToResourceElles se propagent à toutes les instances du cluster pour l'évaluation des politiques du plan de données. - Variables clés de condition
-
-
aws:PrincipalTag/— renvoie à la valeur du tag du principal appelant.TagKey -
aws:ResourceTag/— correspond à la valeur de balise de la ressource Neptune cible.TagKey
-
- Types de politiques pris en charge
-
-
Politiques d'identité IAM : associées à des utilisateurs, à des groupes ou à des rôles.
-
SCP : appliqués au niveau de l'unité organisationnelle (UO) ou du compte des AWS Organisations pour définir des barrières en matière d'autorisations.
-
Conditions préalables à l'utilisation du TBAC
Avant de pouvoir utiliser le TBAC avec les opérations du plan de données Neptune, vous devez disposer des éléments suivants :
-
Version 1.2.0.0 ou ultérieure du moteur Neptune : requise pour la prise en charge du TBAC du plan de données.
-
Authentification IAM activée sur le cluster de base de données Neptune.
-
Balises appliquées aux clusters de base de données Neptune : balises de ressources que les politiques évalueront.
-
Balises appliquées aux principes IAM : principales balises qui seront comparées aux balises de ressources.
Modèles de politique TBAC
Les modèles suivants montrent les méthodes courantes d'utilisation du TBAC dans les politiques IAM pour les opérations du plan de données Neptune.
Refuser l'accès lorsque les balises principale et ressource ne correspondent pas
Il s'agit du modèle TBAC le plus courant. Il refuse toutes les actions du plan de données Neptune à moins que les balises du principal ne correspondent aux balises de la ressource. Vous pouvez l'appliquer en tant que SCP pour une application à l'échelle de l'organisation ou en tant que politique IAM pour un contrôle ciblé.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyNeptuneProjectMismatch", "Effect": "Deny", "Action": "neptune-db:*", "Resource": "*", "Condition": { "StringNotEquals": { "aws:ResourceTag/Project": "${aws:PrincipalTag/Project}" } } }, { "Sid": "DenyNeptuneDepartmentMismatch", "Effect": "Deny", "Action": "neptune-db:*", "Resource": "*", "Condition": { "StringNotEquals": { "aws:ResourceTag/Department": "${aws:PrincipalTag/Department}" } } } ] }
Fonctionnement : Chaque instruction utilise une StringNotEquals condition distincte pour une clé de balise unique. Le refus se déclenche indépendamment pour chaque balise : si la Project balise de la ressource ne correspond pas à la Project balise du principal, l'accès est refusé quelle que soit la Department balise. Cela garantit qu'un principal étiqueté avec ne Project=FraudDetection peut accéder qu'aux clusters Neptune également étiquetésProject=FraudDetection, et de même pour. Department
Refuser l'accès lorsque les balises de ressources requises sont manquantes
Ce modèle empêche l'accès aux clusters Neptune qui n'ont pas été correctement balisés, garantissant ainsi que tous les clusters sont inscrits dans le schéma TBAC :
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyNeptuneMissingProjectTag", "Effect": "Deny", "Action": "neptune-db:*", "Resource": "*", "Condition": { "Null": { "aws:ResourceTag/Project": "true" } } }, { "Sid": "DenyNeptuneMissingDepartmentTag", "Effect": "Deny", "Action": "neptune-db:*", "Resource": "*", "Condition": { "Null": { "aws:ResourceTag/Department": "true" } } } ] }
Fonctionnement : La Null condition est considérée comme vraie lorsque la clé de balise spécifiée n'existe pas sur la ressource. Cela oblige tous les clusters Neptune à porter les balises de classification requises avant que le principal puisse y accéder.
Combiner le TBAC avec le contrôle d'accès basé sur l'action
Le TBAC peut être associé à des neptune-db: actions spécifiques pour créer des politiques précises tenant compte des balises :
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowReadOnlyForMatchingTags", "Effect": "Allow", "Action": [ "neptune-db:ReadDataViaQuery", "neptune-db:GetQueryStatus", "neptune-db:GetEngineStatus" ], "Resource": "arn:aws:neptune-db:*:*:*/*", "Condition": { "StringEquals": { "aws:ResourceTag/Project": "${aws:PrincipalTag/Project}" } } } ] }
Restriction de langue de requête avec TBAC
Combinez le TBAC avec la clé de neptune-db:QueryLanguage condition pour restreindre à la fois les clusters auxquels un principal peut accéder et les langages de requête qu'il peut utiliser :
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowOpenCypherOnlyForMatchingProject", "Effect": "Allow", "Action": [ "neptune-db:ReadDataViaQuery", "neptune-db:WriteDataViaQuery" ], "Resource": "arn:aws:neptune-db:*:*:*/*", "Condition": { "StringEquals": { "aws:ResourceTag/Project": "${aws:PrincipalTag/Project}", "neptune-db:QueryLanguage": "OpenCypher" } } } ] }
Utilisation du TBAC avec les politiques de contrôle des services
Les SCP sont idéaux pour appliquer le TBAC car ils fixent des limites d'autorisation pour l'ensemble d'une unité organisationnelle (UO) ou d'un compte sans qu'il soit nécessaire de modifier les politiques IAM individuelles.
Nous recommandons la stratégie SCP suivante :
-
Appliquez un Deny-based SCP au niveau de l'UO qui bloque
neptune-db:*lorsque les balises ne correspondent pas. -
Appliquez une deuxième déclaration refusant l'accès aux ressources non balisées.
-
Vos comptes individuels peuvent conserver leurs politiques d'autorisation pour des
neptune-db:actions spécifiques. Le SCP fait office de garde-fou.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyNeptuneProjectMismatch", "Effect": "Deny", "Action": "neptune-db:*", "Resource": "*", "Condition": { "StringNotEquals": { "aws:ResourceTag/Project": "${aws:PrincipalTag/Project}" } } }, { "Sid": "DenyNeptuneDepartmentMismatch", "Effect": "Deny", "Action": "neptune-db:*", "Resource": "*", "Condition": { "StringNotEquals": { "aws:ResourceTag/Department": "${aws:PrincipalTag/Department}" } } }, { "Sid": "DenyNeptuneMissingProjectTag", "Effect": "Deny", "Action": "neptune-db:*", "Resource": "*", "Condition": { "Null": { "aws:ResourceTag/Project": "true" } } }, { "Sid": "DenyNeptuneMissingDepartmentTag", "Effect": "Deny", "Action": "neptune-db:*", "Resource": "*", "Condition": { "Null": { "aws:ResourceTag/Department": "true" } } } ] }
Implémentation du TBAC pour Neptune
Étape 1 : Définissez la taxonomie de vos balises
Choisissez des clés de balise qui représentent les limites de votre organisation. Modèles courants :
| Clé de balise | Objectif | Exemples de valeur |
|---|---|---|
Project |
Identifiant d'application ou de charge de travail | FraudDetection, RecommendationEngine |
Department |
Unité commerciale ou centre de coûts | Engineering, Finance, Analytics |
Environment |
Étape de déploiement | production, staging, development |
Team |
Équipe propriétaire | graph-platform, data-science |
Étape 2 : balisez vos clusters de base de données Neptune
Utilisez le AWS CLI pour ajouter les balises de classification requises à vos clusters de base de données Neptune :
aws neptune add-tags-to-resource \ --resource-name arn:aws:rds:us-east-1:123456789012:cluster:my-neptune-cluster\ --tags Key=Project,Value=FraudDetection Key=Department,Value=Engineering
Étape 3 : Marquez vos principaux IAM
Utilisez le AWS CLI pour étiqueter les rôles IAM avec les mêmes clés et valeurs que celles utilisées sur vos clusters Neptune. Pour les rôles IAM :
aws iam tag-role \ --role-nameNeptuneAppRole\ --tags Key=Project,Value=FraudDetection Key=Department,Value=Engineering
Pour les utilisateurs fédérés, transmettez des balises via des balises de SAML/OIDC session à l'aide aws:PrincipalTag des attributs de votre fournisseur d'identité.
Étape 4 : Déployer la politique TBAC
Associez-le en tant que SCP pour une application à l'échelle de l'organisation, ou en tant que politique IAM pour un contrôle ciblé.
Étape 5 : protéger l'intégrité des tags
Limitez les personnes autorisées à modifier les balises sur les ressources Neptune et les principaux IAM :
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyTagModification", "Effect": "Deny", "Action": [ "rds:AddTagsToResource", "rds:RemoveTagsFromResource" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": ["Project", "Department"] } } } ] }
Considérations importantes pour le TBAC
-
Délai de propagation : les modifications apportées aux politiques IAM prennent jusqu'à 10 minutes pour s'appliquer aux ressources Neptune. Les modifications apportées aux balises de cluster (ajout, modification ou suppression de balises) prennent environ 5 minutes pour être répercutées sur l'évaluation des politiques du plan de données. Prévoyez ce délai lors de la mise à jour des balises sur les clusters actifs.
-
Cluster-level granularité — Vous appliquez des balises aux clusters de base de données Neptune au niveau du cluster. Toutes les instances d'un cluster partagent la même évaluation des politiques. Le TBAC ne fournit pas de contrôle d'accès au vertex/edge niveau des sous-graphes ou des sous-graphes.
-
Authentification IAM requise — Le TBAC s'applique uniquement lorsque l'authentification IAM est activée sur le cluster. Les connexions sans authentification IAM contournent totalement ces politiques.
-
Immuabilité des balises — Sécurisez vos opérations de balisage. Si un principal peut modifier ses propres balises ou les balises de ressources, il peut contourner les contrôles TBAC. Utilisez des SCP ou des limites d'autorisation pour restreindre
iam:TagRoleiam:TagUser,rds:AddTagsToResource, etrds:RemoveTagsFromResource. -
Gestion des balises nulles — Si un principal ne dispose pas d'une balise via laquelle la politique fait référence
${aws:PrincipalTag/, la variable est résolue en une chaîne vide. Concevez vos politiques pour gérer ce cas (le modèle de refus des « balises manquantes » ci-dessus permet de résoudre ce problème pour les balises de ressources).Key} -
Clés de condition multiples : lorsque plusieurs clés de condition apparaissent dans le même
Conditionbloc, elles sont évaluées avec la logique AND. EnStringNotEqualseffet, un refus ne se déclenche que lorsque toutes les conditions spécifiées sont vraies simultanément. Pour nier toute incompatibilité de balise, utilisez des déclarations de politique distinctes pour chaque clé de balise (comme indiqué dans les modèles ci-dessus).
Relation avec les fonctionnalités de sécurité existantes de Neptune
| Fonctionnalité existante | Ce qu'il contrôle | Comment le TBAC le complète |
|---|---|---|
| VPC/Groupes de sécurité | Network-level accès au port 8182 | Le TBAC ajoute une autorisation basée sur l'identité en plus des contrôles réseau |
| Authentification IAM (SigV4) | Vérifie l'identité de l'appelant | Le TBAC utilise les tags de l'identité authentifiée pour les décisions d'autorisation |
| Action-based contrôle d'accès | Quelles opérations (read/write/delete/load) un directeur peut effectuer | Le TBAC ajoute les clusters qu'un principal peut cibler, en fonction de l'alignement des balises |
Clé de condition neptune-db:QueryLanguage |
Quels langages de requête (Gremlin, OpenCypher, SPARQL) sont autorisés | Peut être combiné avec le TBAC dans la même déclaration de politique |
Accès administratif basé sur des balises (rds:*actions) |
Qui peut gérer l'infrastructure Neptune | Le TBAC étend le même modèle basé sur des balises aux actions du plan de données () neptune-db:* |
| AWS KMS chiffrement | Confidentialité des données au repos | Orthogonal : le TBAC contrôle l'autorisation, pas le chiffrement |