View a markdown version of this page

Tag-based Zugriffskontrolle für den Betrieb auf der Datenebene von Amazon Neptune - Amazon Neptune

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Tag-based Zugriffskontrolle für den Betrieb auf der Datenebene von Amazon Neptune

Tag-based Mit Access Control (TBAC) können Sie AWS Ressourcen-Tags und IAM-Principal-Tags als Bedingungen in IAM-Richtlinien und Service Control Policies (SCPs) verwenden, um den Zugriff auf Amazon Neptune-Datenebenenoperationen zu kontrollieren. Mit TBAC können Sie erzwingen, dass nur Principals, deren Tags mit den Tags auf einem Neptune-DB-Cluster übereinstimmen, neptune-db:* Aktionen gegen diesen Cluster ausführen können, ohne in jeder Richtlinie spezifische Cluster-Amazon-Ressourcennamen (ARNs) aufzulisten.

TBAC baut auf dem bestehenden Sicherheitsmodell von Neptune auf und ergänzt die aktionsbasierten Aktionen zur Zugriffskontrolle auf der Datenebene. IAM-Aktionen für den Datenzugriff in Amazon Neptune

So passt TBAC in die Sicherheitsebenen von Neptune

Neptune schützt Ihre Daten durch mehrere, sich überschneidende Sicherheitsmechanismen. TBAC fügt eine attributbasierte Autorisierungsebene hinzu, die mit allen zusammen funktioniert:

Die Sicherheitsebenen von Neptune und wie TBAC sie ergänzt
Ebene Mechanismus Scope
Netzwerkisolierung Virtuelle private Cloud (VPC), Sicherheitsgruppen, VPC-Endpunkte () PrivateLink Steuert, welche Hosts Neptune-Endpunkte erreichen können
Verschlüsselung Transport Layer Security (TLS) 1.3 bei der Übertragung; verwaltete Verschlüsselung im AWS KMS Ruhezustand Schützt die Vertraulichkeit von Daten
IAM-Authentifizierung AWS Mit Signature Version 4 (SigV4) signierte Anfragen an den Neptune-Datenendpunkt Authentifiziert den Anrufer
Action-based Zugriffskontrolle neptune-db:Aktionen (ReadDataViaQueryWriteDataViaQuery, usw.) Steuert, welche Operationen ein Schulleiter ausführen kann
Bedingungsschlüssel neptune-db:QueryLanguage, globale Kontextschlüssel Fügt Richtlinien kontextbezogene Einschränkungen hinzu
TBAC aws:ResourceTag/${TagKey}bewertet gegen aws:PrincipalTag/${TagKey} Schränkt den Zugriff auf Grundlage der Tag-Ausrichtung zwischen Principal und Ressource ein
Zugriff auf der Grundlage von Administrator-Tags aws:ResourceTagrds:cluster-tagusw. zu Aktionen auf Managementebene Steuert, wer die Neptune-Infrastruktur verwalten kann

Wichtige TBAC-Konzepte

Wichtigste Schlagworte

Tags, die IAM-Benutzern, -Rollen oder Verbundsitzungsprinzipalen zugeordnet sind. Sie können diese über die IAM-Konsole oder über die Attributzuordnungen Security Assertion Markup Language (SAML) /OpenID Connect (OIDC) des Identity Providers (IdP) festlegen. AWS CLI

Ressourcen-Tags

Tags, AddTagsToResource die mit Neptune DB-Clustern angehängt wurden. Diese werden zur Bewertung der Richtlinien auf Datenebene an alle Instances im Cluster weitergegeben.

Wichtige Variablen für Bedingungen
  • aws:PrincipalTag/TagKey— wird in den Tag-Wert auf dem aufrufenden Principal aufgelöst.

  • aws:ResourceTag/TagKey— wird in den Tag-Wert der Neptune-Zielressource aufgelöst.

Unterstützte Richtlinientypen
  • IAM-Identitätsrichtlinien — an Benutzer, Gruppen oder Rollen angehängt.

  • SCPs — werden auf der Ebene der AWS Organisationseinheit (OU) oder auf Kontoebene der Organisation angewendet, um Zugriffsberechtigungen festzulegen.

Voraussetzungen für die Verwendung von TBAC

Bevor Sie TBAC mit Neptune-Datenebenenoperationen verwenden können, müssen Sie über Folgendes verfügen:

  1. Neptune Engine Version 1.2.0.0 oder höher — erforderlich für die TBAC-Unterstützung auf der Datenebene.

  2. Die IAM-Authentifizierung ist auf dem Neptune DB-Cluster aktiviert.

  3. Auf Neptune DB-Cluster angewendete Tags — die Ressourcen-Tags, die Richtlinien auswerten.

  4. Auf IAM-Principals angewendete Tags — die Prinzipal-Tags, die mit Ressourcen-Tags verglichen werden.

TBAC-Richtlinienmuster

Die folgenden Muster zeigen gängige Methoden zur Verwendung von TBAC in IAM-Richtlinien für Neptune-Datenebenenoperationen.

Zugriff verweigern, wenn Principal- und Resource-Tags nicht übereinstimmen

Dies ist das häufigste TBAC-Muster. Es verweigert alle Neptune-Datenebenenaktionen, es sei denn, die Tags des Prinzipals stimmen mit den Tags der Ressource überein. Sie können dies als SCP zur unternehmensweiten Durchsetzung oder als IAM-Richtlinie für gezielte Kontrolle verwenden.

{ "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}" } } } ] }

So funktioniert es: Jede Anweisung verwendet eine separate StringNotEquals Bedingung für einen einzelnen Tag-Schlüssel. Die Option Verweigern wird für jedes Tag unabhängig ausgelöst. Wenn das Project Tag der Ressource nicht mit dem Project Tag des Principals übereinstimmt, wird der Department Zugriff unabhängig vom Tag verweigert. Dadurch wird sichergestellt, dass ein mit markierter Principal nur auf Neptune-Cluster zugreifen Project=FraudDetection kannProject=FraudDetection, für die auch und in ähnlicher Weise die entsprechenden Tags gelten. Department

Verweigern Sie den Zugriff, wenn die erforderlichen Ressourcen-Tags fehlen

Dieses Muster verhindert den Zugriff auf Neptune-Cluster, die nicht richtig markiert wurden, und stellt sicher, dass alle Cluster im TBAC-Schema registriert sind:

{ "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" } } } ] }

So funktioniert es: Die Null Bedingung wird als wahr ausgewertet, wenn der angegebene Tag-Schlüssel in der Ressource nicht existiert. Dadurch müssen alle Neptun-Cluster die erforderlichen Klassifizierungs-Tags tragen, bevor ein Principal darauf zugreifen kann.

Kombination von TBAC mit aktionsbasierter Zugriffskontrolle

TBAC kann mit spezifischen neptune-db: Aktionen kombiniert werden, um feinkörnige, tagspezifische Richtlinien zu erstellen:

{ "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}" } } } ] }

Sprachbeschränkung mit TBAC abfragen

Kombinieren Sie TBAC mit dem neptune-db:QueryLanguage Bedingungsschlüssel, um einzuschränken, auf welche Cluster ein Principal zugreifen kann und welche Abfragesprachen er verwenden kann:

{ "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" } } } ] }

Verwenden von TBAC mit Dienststeuerungsrichtlinien

SCPs eignen sich ideal zur Durchsetzung von TBAC, da sie Berechtigungsgrenzen für eine gesamte Organisationseinheit (OU) oder ein Konto festlegen, ohne dass Änderungen an einzelnen IAM-Richtlinien erforderlich sind.

Wir empfehlen die folgende SCP-Strategie:

  1. Wenden Sie auf OU-Ebene einen Deny-based SCP an, der blockiert, neptune-db:* wenn die Tags nicht übereinstimmen.

  2. Wenden Sie eine zweite Anweisung an, die den Zugriff auf Ressourcen ohne Tags verweigert.

  3. Ihre individuellen Konten können ihre Zulassungsrichtlinien für bestimmte neptune-db: Aktionen beibehalten — der SCP dient als Leitplanke.

{ "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" } } } ] }

Implementierung von TBAC für Neptune

Schritt 1: Definieren Sie Ihre Tag-Taxonomie

Wählen Sie Tag-Schlüssel, die Ihre Unternehmensgrenzen repräsentieren. Allgemeine Muster:

Beispiel für eine Tag-Taxonomie
Tag-Schlüssel Zweck Beispielwerte
Project Anwendungs- oder Workload-ID FraudDetection, RecommendationEngine
Department Geschäftseinheit oder Kostenstelle Engineering, Finance, Analytics
Environment Phase der Bereitstellung production, staging, development
Team Besitzerteam graph-platform, data-science

Schritt 2: Taggen Sie Ihre Neptune-DB-Cluster

Verwenden Sie das AWS CLI , um die erforderlichen Klassifizierungs-Tags zu Ihren Neptune-DB-Clustern hinzuzufügen:

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

Schritt 3: Taggen Sie Ihre IAM-Principals

Verwenden Sie das AWS CLI , um IAM-Rollen mit denselben Schlüsseln und Werten zu taggen, die in Ihren Neptune-Clustern verwendet werden. Für IAM-Rollen:

aws iam tag-role \ --role-name NeptuneAppRole \ --tags Key=Project,Value=FraudDetection Key=Department,Value=Engineering

Für Verbundbenutzer geben Sie Tags mithilfe von aws:PrincipalTag Attributen Ihres Identitätsanbieters über SAML/OIDC Sitzungs-Tags weiter.

Schritt 4: Stellen Sie die TBAC-Richtlinie bereit

Fügen Sie sie als SCP zur unternehmensweiten Durchsetzung oder als IAM-Richtlinie zur gezielten Kontrolle hinzu.

Schritt 5: Schützen Sie die Tag-Integrität

Schränken Sie ein, wer Tags auf Neptune-Ressourcen und IAM-Principals ändern kann:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyTagModification", "Effect": "Deny", "Action": [ "rds:AddTagsToResource", "rds:RemoveTagsFromResource" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": ["Project", "Department"] } } } ] }

Wichtige Überlegungen für TBAC

  • Verzögerung bei der Übertragung — Es dauert bis zu 10 Minuten, bis Änderungen an IAM-Richtlinien auf Neptune-Ressourcen angewendet werden. Es dauert ungefähr 5 Minuten, bis Änderungen an Cluster-Tags (Hinzufügen, Ändern oder Entfernen von Tags) in der Bewertung der Richtlinien auf Datenebene übertragen werden. Berücksichtigen Sie diese Verzögerung, wenn Sie Tags auf aktiven Clustern aktualisieren.

  • Cluster-level Granularität — Sie wenden Tags auf Neptune-DB-Cluster auf Cluster-Ebene an. Alle Instances in einem Cluster verwenden dieselbe Richtlinienbewertung. TBAC bietet keine Zugriffskontrolle auf Untergraphenebene oder vertex/edge -ebene.

  • IAM-Authentifizierung erforderlich — TBAC gilt nur, wenn die IAM-Authentifizierung auf dem Cluster aktiviert ist. Verbindungen ohne IAM-Authentifizierung umgehen diese Richtlinien vollständig.

  • Unveränderlichkeit von Tags — Schützen Sie Ihre Tagging-Operationen. Wenn ein Principal seine eigenen Tags oder die Resource-Tags ändern kann, kann er die TBAC-Steuerelemente umgehen. Verwenden Sie SCPs oder Berechtigungsgrenzen, um iam:TagRoleiam:TagUser, rds:AddTagsToResource und einzuschränken. rds:RemoveTagsFromResource

  • Behandlung von Null-Tags — Wenn einem Principal ein Tag fehlt, über das die Richtlinie verweist${aws:PrincipalTag/Key}, wird die Variable in eine leere Zeichenfolge aufgelöst. Entwerfen Sie Ihre Richtlinien so, dass sie diesen Fall behandeln (das obige Ablehnungsmuster „fehlende Tags“ behebt dies für Ressourcen-Tags).

  • Mehrere Bedingungsschlüssel — Wenn mehrere Bedingungsschlüssel im selben Condition Block vorkommen, werden sie mit der UND-Logik ausgewertet. Denn StringNotEquals ein Ablehnen wird nur ausgelöst, wenn alle angegebenen Bedingungen gleichzeitig erfüllt sind. Verwenden Sie separate Richtlinienanweisungen für jeden Tag-Schlüssel (wie in den obigen Mustern dargestellt), um den Vorgang bei Nichtübereinstimmung eines einzelnen Tags abzulehnen.

Beziehung zu bestehenden Neptune-Sicherheitsfunktionen

Wie TBAC die bestehenden Sicherheitsfunktionen von Neptune ergänzt
Bestehende Funktion Was es steuert Wie ergänzt TBAC es
VPC/Sicherheitsgruppen Network-level Zugriff auf Port 8182 TBAC fügt zusätzlich zu den Netzwerksteuerungen eine identitätsbewusste Autorisierung hinzu
IAM-Authentifizierung (SigV4) Überprüft die Identität des Anrufers TBAC verwendet die Tags der authentifizierten Identität für Autorisierungsentscheidungen
Action-based Zugriffskontrolle Welche Operationen (read/write/delete/load) kann ein Schulleiter ausführen TBAC fügt auf der Grundlage der Tag-Ausrichtung hinzu, auf welche Cluster ein Principal abzielen kann
neptune-db:QueryLanguage-Bedingungsschlüssel Welche Abfragesprachen (Gremlin, OpenCypher, SPARQL) sind zulässig Kann mit TBAC in derselben Grundsatzerklärung kombiniert werden
Zugriff auf Administrator-Tags (Aktionen) rds:* Wer kann die Neptune-Infrastruktur verwalten TBAC erweitert dasselbe tagbasierte Muster auf Aktionen auf Datenebene () neptune-db:*
AWS KMS Verschlüsselung Vertraulichkeit der Daten im Ruhezustand Orthogonal — TBAC steuert die Autorisierung, nicht die Verschlüsselung