翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon Neptune データプレーンオペレーションのタグベースのアクセスコントロール
タグベースのアクセスコントロール (TBAC) を使用すると、 AWS リソースタグと IAM プリンシパルタグを IAM ポリシーとサービスコントロールポリシー (SCPs) の条件として使用して、Amazon Neptune データプレーンオペレーションへのアクセスを制御できます。TBAC では、Neptune DB クラスターのタグと一致するタグを持つプリンシパルのみが、すべてのポリシーで特定のクラスターの Amazon リソースネーム (ARNs) を列挙することなく、そのクラスターに対してneptune-db:*アクションを実行できるように強制できます。
TBAC は Neptune の既存のセキュリティモデルに基づいて構築され、アクションベースのアクセスコントロールデータプレーンアクションを補完します。
TBAC が Neptune のセキュリティレイヤーにどのように適合するか
Neptune は、重複する複数のセキュリティメカニズムを通じてデータを保護します。TBAC は、すべての属性と連携する属性ベースの認可レイヤーを追加します。
| レイヤー | メカニズム | スコープ |
|---|---|---|
| ネットワークの隔離 | Virtual Private Cloud (VPC)、セキュリティグループ、VPC エンドポイント (PrivateLink) | Neptune エンドポイントに到達できるホストを制御する |
| 暗号化 | 転送中の Transport Layer Security (TLS) 1.3、保管中の AWS KMSマネージド暗号化 | データの機密性を保護する |
| IAM 認証 | AWS Neptune データエンドポイントへの署名バージョン 4 (SigV4) 署名付きリクエスト | 発信者を認証します |
| アクションベースのアクセスコントロール | neptune-db: アクション (ReadDataViaQuery、 WriteDataViaQueryなど) |
プリンシパルが実行できるオペレーションを制御する |
| 条件キー | 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/— ターゲット Neptune リソースのタグ値に解決されます。TagKey
-
- サポートされているポリシータイプ
-
-
IAM ID ポリシー — ユーザー、グループ、またはロールにアタッチされます。
-
SCPs Organizations AWS 組織単位 (OU) またはアカウントレベルで適用され、アクセス許可ガードレールを設定します。
-
TBAC を使用するための前提条件
Neptune データプレーンオペレーションで TBAC を使用する前に、以下を設定する必要があります。
-
Neptune エンジンバージョン 1.2.0.0 以降 — データプレーン TBAC サポートに必要です。
-
Neptune DB クラスターで有効になっている IAM 認証。
-
Neptune DB クラスターに適用されるタグ — ポリシーが評価するリソースタグ。
-
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=FraudDetectionはProject=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 戦略をお勧めします。
-
neptune-db:*タグが一致しない場合にブロックする拒否ベースの SCP を OU レベルで適用します。 -
タグのないリソースへのアクセスを拒否する 2 番目のステートメントを適用します。
-
個々のアカウントは、特定の
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-nameNeptuneAppRole\ --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 がそれを補完する方法 |
|---|---|---|
| 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 は暗号化ではなく認可を制御します |