View a markdown version of this page

Amazon Neptune データプレーンオペレーションのタグベースのアクセスコントロール - Amazon Neptune

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon Neptune データプレーンオペレーションのタグベースのアクセスコントロール

タグベースのアクセスコントロール (TBAC) を使用すると、 AWS リソースタグと IAM プリンシパルタグを IAM ポリシーとサービスコントロールポリシー (SCPs) の条件として使用して、Amazon Neptune データプレーンオペレーションへのアクセスを制御できます。TBAC では、Neptune DB クラスターのタグと一致するタグを持つプリンシパルのみが、すべてのポリシーで特定のクラスターの Amazon リソースネーム (ARNs) を列挙することなく、そのクラスターに対してneptune-db:*アクションを実行できるように強制できます。

TBAC は Neptune の既存のセキュリティモデルに基づいて構築され、アクションベースのアクセスコントロールデータプレーンアクションを補完します。

TBAC が Neptune のセキュリティレイヤーにどのように適合するか

Neptune は、重複する複数のセキュリティメカニズムを通じてデータを保護します。TBAC は、すべての属性と連携する属性ベースの認可レイヤーを追加します。

Neptune セキュリティレイヤーとその TBAC による補完方法
レイヤー メカニズム スコープ
ネットワークの隔離 Virtual Private Cloud (VPC)、セキュリティグループ、VPC エンドポイント (PrivateLink) Neptune エンドポイントに到達できるホストを制御する
暗号化 転送中の Transport Layer Security (TLS) 1.3、保管中の AWS KMSマネージド暗号化 データの機密性を保護する
IAM 認証 AWS Neptune データエンドポイントへの署名バージョン 4 (SigV4) 署名付きリクエスト 発信者を認証します
アクションベースのアクセスコントロール neptune-db: アクション (ReadDataViaQueryWriteDataViaQueryなど) プリンシパルが実行できるオペレーションを制御する
条件キー neptune-db:QueryLanguage、グローバルコンテキストキー ポリシーにコンテキスト制約を追加します
TBAC aws:ResourceTag/${TagKey} に対する評価 aws:PrincipalTag/${TagKey} プリンシパルとリソース間のタグ配置に基づいてアクセスを制限します
管理タグベースのアクセス aws:ResourceTag管理プレーンアクションの rds:cluster-tag、 など Neptune インフラストラクチャを管理できるユーザーを制御する

TBAC の主要な概念

プリンシパルタグ

IAM ユーザー、ロール、またはフェデレーティッドセッションプリンシパルにアタッチされたタグ。これらは、IAM コンソール AWS CLI、または ID プロバイダー (IdP) Security Assertion Markup Language (SAML) / OpenID Connect (OIDC) 属性マッピングを介して設定できます。

リソースタグ

を使用して Neptune DB クラスターにアタッチされたタグAddTagsToResource。これらは、データプレーンポリシー評価のためにクラスター内のすべてのインスタンスに伝播されます。

条件キー変数
  • aws:PrincipalTag/TagKey — 呼び出し元のプリンシパルのタグ値に解決されます。

  • aws:ResourceTag/TagKey — ターゲット Neptune リソースのタグ値に解決されます。

サポートされているポリシータイプ
  • IAM ID ポリシー — ユーザー、グループ、またはロールにアタッチされます。

  • SCPs Organizations AWS 組織単位 (OU) またはアカウントレベルで適用され、アクセス許可ガードレールを設定します。

TBAC を使用するための前提条件

Neptune データプレーンオペレーションで TBAC を使用する前に、以下を設定する必要があります。

  1. Neptune エンジンバージョン 1.2.0.0 以降 — データプレーン TBAC サポートに必要です。

  2. Neptune DB クラスターで有効になっている IAM 認証

  3. Neptune DB クラスターに適用されるタグ — ポリシーが評価するリソースタグ。

  4. IAM プリンシパルに適用されるタグ — リソースタグと比較されるプリンシパルタグ。

TBAC ポリシーパターン

次のパターンは、Neptune データプレーンオペレーションの IAM ポリシーで TBAC を使用する一般的な方法を示しています。

プリンシパルタグとリソースタグが一致しない場合のアクセスを拒否する

これは最も一般的な TBAC パターンです。プリンシパルのタグがリソースのタグと一致しない限り、すべての Neptune データプレーンアクションを拒否します。これは、組織全体の強制のための SCP として、またはターゲットを絞ったコントロールのための IAM ポリシーとして適用できます。

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

仕組み: 各ステートメントは、単一のタグキーに個別のStringNotEquals条件を使用します。拒否はタグごとに個別にトリガーされます。リソースのProjectタグがプリンシパルのProjectタグと一致しない場合、アクセスはDepartmentタグに関係なく拒否されます。これにより、 でタグ付けされたプリンシパルProject=FraudDetectionProject=FraudDetection、同様に でタグ付けされた Neptune クラスターにのみアクセスできますDepartment

必要なリソースタグがない場合のアクセスの拒否

このパターンにより、適切にタグ付けされていない Neptune クラスターへのアクセスが防止され、すべてのクラスターが 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" } } } ] }

仕組み: 指定されたタグキーがリソースに存在しない場合、 Null条件は true に評価されます。これにより、プリンシパルがアクセスする前に、すべての Neptune クラスターに必要な分類タグを強制的に持ち込むことができます。

TBAC とアクションベースのアクセスコントロールの組み合わせ

TBAC を特定のneptune-db:アクションと組み合わせて、きめ細かなタグ対応ポリシーを作成できます。

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

TBAC を使用したクエリ言語の制限

TBAC を neptune-db:QueryLanguage条件キーと組み合わせて、プリンシパルがアクセスできるクラスターと使用できるクエリ言語の両方を制限します。

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

サービスコントロールポリシーでの TBAC の使用

SCPsは、個々の IAM ポリシーを変更することなく、組織単位 (OU) またはアカウント全体のアクセス許可の境界を設定するため、TBAC の適用に最適です。

次の SCP 戦略をお勧めします。

  1. neptune-db:* タグが一致しない場合にブロックする拒否ベースの SCP を OU レベルで適用します。

  2. タグのないリソースへのアクセスを拒否する 2 番目のステートメントを適用します。

  3. 個々のアカウントは、特定のneptune-db:アクションの許可ポリシーを保持できます。SCP はガードレールとして機能します。

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

Neptune の TBAC の実装

ステップ 1: タグ分類を定義する

組織の境界を表すタグキーを選択します。一般的なパターン:

タグ分類の例
タグキー 目的 値の例
Project アプリケーションまたはワークロードの識別子 FraudDetection, RecommendationEngine
Department ビジネスユニットまたはコストセンター Engineering, Finance, Analytics
Environment デプロイステージ production, staging, development
Team 所有チーム graph-platform, data-science

ステップ 2: Neptune DB クラスターにタグを付ける

を使用して AWS CLI 、必要な分類タグを Neptune DB クラスターに追加します。

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

ステップ 3: IAM プリンシパルにタグを付ける

を使用して AWS CLI 、Neptune クラスターで使用されているのと同じキーと値で IAM ロールにタグ付けします。IAM ロールの場合:

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

フェデレーティッドユーザーの場合は、ID プロバイダーのaws:PrincipalTag属性を使用して SAML/OIDC セッションタグを介してタグを渡します。

ステップ 4: TBAC ポリシーをデプロイする

を組織全体の強制のための SCP として、またはターゲットを絞ったコントロールのための IAM ポリシーとしてアタッチします。

ステップ 5: タグの整合性を保護する

Neptune リソースと IAM プリンシパルのタグを変更できるユーザーを制限します。

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

TBAC に関する重要な考慮事項

  • 伝達の遅延 — IAM ポリシーの変更が Neptune リソースに適用されるまでに最大 10 分かかります。クラスタータグの変更 (タグの追加、変更、または削除) がデータプレーンポリシー評価に反映されるまでに約 5 分かかります。アクティブなクラスターのタグを更新するときは、この遅延に備えてください。

  • クラスターレベルの粒度 — クラスターレベルで Neptune DB クラスターにタグを適用します。クラスター内のすべてのインスタンスは、同じポリシー評価を共有します。TBAC は、サブグラフまたは頂点/エッジレベルのアクセスコントロールを提供しません。

  • IAM 認証が必要 — TBAC は、クラスターで IAM 認証が有効になっている場合にのみ適用されます。IAM 認証のない接続は、これらのポリシーを完全にバイパスします。

  • タグのイミュータビリティ — タグ付けオペレーションを保護します。プリンシパルが独自のタグまたはリソースタグを変更できる場合、TBAC コントロールをバイパスできます。SCPsまたはアクセス許可の境界を使用して、iam:TagRole、、iam:TagUserrds:AddTagsToResource、および を制限しますrds:RemoveTagsFromResource

  • Null タグ処理 — ポリシーが を介して参照するタグがプリンシパルにない場合${aws:PrincipalTag/Key}、変数は空の文字列に解決されます。このケースを処理するようにポリシーを設計します (上記の「タグの欠落」拒否パターンは、リソースタグの場合にこれに対処します)。

  • 複数の条件キー — 複数の条件キーが同じConditionブロックに表示されると、AND ロジックで評価されます。の場合StringNotEquals、拒否は、指定されたすべての条件が同時に true である場合にのみトリガーされます。単一のタグ不一致を拒否するには、タグキーごとに個別のポリシーステートメントを使用します (上記のパターンを参照)。

既存の Neptune セキュリティ機能との関係

TBAC が既存の Neptune セキュリティ機能を補完する方法
既存の機能 コントロールするもの TBAC がそれを補完する方法
VPC/セキュリティグループ ポート 8182 へのネットワークレベルのアクセス TBAC がネットワークコントロール上にアイデンティティ対応認可を追加
IAM 認証 (SigV4) 発信者 ID を検証する TBAC は、認証された ID のタグを認可の決定に使用します
アクションベースのアクセスコントロール プリンシパルが実行できるオペレーション (read/write/delete/ロード) TBAC は、タグの配置に基づいて、プリンシパルがターゲットにできるクラスターを追加します。
neptune-db:QueryLanguage 条件キー 許可されるクエリ言語 (Gremlin、openCypher、SPARQL) 同じポリシーステートメントで TBAC と組み合わせることができます
管理タグベースのアクセス (rds:* アクション) Neptune インフラストラクチャを管理できるユーザー TBAC は、同じタグベースのパターンをデータプレーン (neptune-db:*) アクションに拡張します
AWS KMS 暗号化 保管時のデータの機密性 直交 — TBAC は暗号化ではなく認可を制御します