View a markdown version of this page

Tag-based contrôle d'accès pour les opérations du 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 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 :

Les couches de sécurité Neptune et comment 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 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. AddTagsToResource Elles se propagent à toutes les instances du cluster pour l'évaluation des politiques du plan de données.

Variables clés de condition
  • aws:PrincipalTag/TagKey— renvoie à la valeur du tag du 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é 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 :

  1. Version 1.2.0.0 ou ultérieure du moteur Neptune : requise pour la prise en charge du TBAC du plan de données.

  2. Authentification IAM activée sur le cluster de base de données Neptune.

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

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

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

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

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

Exemple de taxonomie de 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 : 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-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é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/Key}, 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).

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

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