View a markdown version of this page

Tag-based contrôle d'accès pour les opérations sur le plan de données Amazon Neptune - Amazon Neptune

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 :

Les couches de sécurité de Neptune et la manière dont le TBAC les complète
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 AddTagsToResource de. 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/TagKey— se résout à la valeur de la balise sur le principal appelant.

  • aws:ResourceTag/TagKey— correspond à la valeur de balise de la ressource Neptune cible.

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 :

  1. 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.

  2. L'authentification IAM est activée sur le cluster de base de données Neptune.

  3. Tags appliqués aux clusters de base de données Neptune  : balises de ressources que les politiques évalueront.

  4. 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 :

  1. Appliquez un Deny-based SCP au niveau de l'unité d'organisation qui bloque neptune-db:* lorsque les balises ne correspondent pas.

  2. Appliquez une deuxième instruction refusant l'accès aux ressources non balisées.

  3. 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 :

Exemple de taxonomie des balises
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-name NeptuneAppRole \ --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/Key}, 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).

  • Clés de condition multiples  : lorsque plusieurs clés de condition apparaissent dans le même Condition bloc, elles sont évaluées à l'aide de la logique AND. En StringNotEquals effet, 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

Comment le TBAC complète 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