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 sur le 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) afin de contrôler l'accès aux opérations du plan de données Amazon Neptune. Avec 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 contre ce cluster, sans énumérer les Amazon Resource Names (ARN) de cluster spécifiques 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 parallèlement à 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 atteindre les points de terminaison Neptune |
| Chiffrement | Transport Layer Security (TLS) 1.3 en transit ; chiffrement AWS KMS géré au repos | Protège la confidentialité des données |
| Authentification IAM | AWS Requêtes signées 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 de contexte 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 administratif basé sur des balises | aws:ResourceTagrds:cluster-tag, etc. sur les actions du plan de gestion |
Contrôle qui peut gérer l'infrastructure Neptune |
Concepts clés du TBAC
- Tags principaux
-
Balises associées à des utilisateurs, à des rôles ou à des principaux de sessions fédérées IAM. Vous pouvez les définir via la console IAM ou les mappages d' AWS CLI attributs SAML (Security Assertion Markup Language) et OpenID Connect (OIDC) du fournisseur d'identité (IdP).
- Balises de ressources
-
Tags attachés aux clusters de base de données Neptune à l'aide
AddTagsToResourcede. Elles se propagent à toutes les instances du cluster pour l'évaluation de la politique du plan de données. - Variables clés de condition
-
-
aws:PrincipalTag/— se résout à la valeur de la balise sur le 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é AWS organisationnelle (UO) ou du compte de l'organisation pour définir des barrières d'autorisation.
-
Conditions préalables à l'utilisation du TBAC
Avant de pouvoir utiliser le TBAC avec les opérations sur le 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 sur le plan de données.
-
L'authentification IAM est activée sur le cluster de base de données Neptune.
-
Tags appliqués aux clusters de base de données Neptune : balises de ressources que les politiques évalueront.
-
Balises appliquées aux balises IAM : balises principales qui seront comparées aux balises de ressources.
Modèles de politique TBAC
Les modèles suivants montrent des manières courantes d'utiliser le TBAC dans les politiques IAM pour les opérations sur le plan de données Neptune.
Refuser l'accès lorsque les balises principale et ressource ne correspondent pas
Il s'agit du schéma 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}" } } } ] }
Comment cela fonctionne : chaque instruction utilise une StringNotEquals condition distincte pour une seule clé de balise. Le Refus se déclenche indépendamment pour chaque balise : si la Project balise de la ressource ne correspond pas à celle du principal, l'accès est refusé quelle que soit la Project Department balise. Cela garantit qu'un principal étiqueté avec ne Project=FraudDetection peut accéder qu'aux clusters Neptune également balisésProject=FraudDetection, et de même pourDepartment.
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 prend la valeur true lorsque la clé de balise spécifiée n'existe pas sur la ressource. Cela oblige tous les amas de Neptune à porter les étiquettes de classification requises avant qu'un principal puisse y accéder.
Combiner le TBAC avec un 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 TBAC avec la clé de neptune-db:QueryLanguage condition pour limiter à 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 (OU) ou d'un compte sans nécessiter de modifier les politiques IAM individuelles.
Nous recommandons la stratégie SCP suivante :
-
Appliquez un Deny-based SCP au niveau de l'unité d'organisation qui bloque
neptune-db:*lorsque les balises ne correspondent pas. -
Appliquez une deuxième instruction refusant l'accès aux ressources non balisées.
-
Vos comptes individuels peuvent conserver leur politique 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 mots-clés 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 : identifiez vos principaux IAM
Utilisez le AWS CLI pour baliser 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éploiement de la politique TBAC
Joignez-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égez l'intégrité des balises
Restreignez les personnes autorisées à modifier les balises sur les ressources Neptune et les principes 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 concernant le TBAC
-
Délai de propagation : les modifications apportées aux politiques IAM peuvent prendre 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 se propager à 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 Neptune DB 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 ne s'applique que 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 marquage. 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 n'a pas de balise à laquelle la politique fait référence
${aws:PrincipalTag/, la variable est résolue en une chaîne vide. Concevez vos politiques de manière à gérer ce cas (le schéma de refus des « balises manquantes » ci-dessus répond à 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 à l'aide de la logique AND. EnStringNotEqualseffet, un refus ne se déclenche que lorsque toutes les conditions spécifiées sont remplies simultanément. Pour refuser 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 balises 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 | La confidentialité des données au repos | Orthogonal : le TBAC contrôle l'autorisation, pas le chiffrement |