mcpField
C
cloud-network-security

cloud-network-security

github.com/elasticセキュリティ6022.8k 回インストール今日更新
リポジトリ

cloud-network-security について

cloud-network-security は、Elastic Cloud Serverless のネットワークセキュリティポリシーを管理するスキルです。IP フィルターと AWS PrivateLink の VPC フィルターをリージョン単位で扱い、PrivateLink のメタデータも参照できます。

主な機能

  1. 01IP フィルターと VPC フィルターの作成
  2. 02フィルターの一覧・確認・更新・削除
  3. 03PrivateLink のリージョンメタデータ参照
  4. 04組織のネットワークセキュリティ状況の確認

活用シーン

  1. 01オフィスの IP 範囲にプロジェクトのアクセスを制限
  2. 02指定した VPC エンドポイントに通信を限定
  3. 03リージョン内の既存フィルターを確認
  4. 04組織のネットワークセキュリティポリシーを監査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/elastic/agent-skills --skill cloud-network-security

インストール後、Claude Code で/cloud-network-securityを入力して読み込まれたか確認します。

同梱ファイルreferences/api-reference.mdscripts/cloud_network_security.py

詳細

クラウドネットワークセキュリティ

Elastic Cloud Serverless プロジェクトのネットワークセキュリティポリシーを管理します。特定の IP または CIDR を許可リストに登録する IP フィルターと、特定の VPC エンドポイントへのトラフィックを制限する VPC フィルター(AWS PrivateLink)を管理できます。

前提条件: このスキルを使用するには、cloud-setup スキルがすでに実行されており、環境内に EC_API_KEY が設定され、組織のコンテキストが確立されている必要があります。EC_API_KEY が設定されていない場合は、エージェントに先に cloud-setup を実行するよう指示してください。ユーザーに API キーを直接入力するよう求めないでください。

プロジェクトの作成と 2 日目以降の運用(プロジェクトへのフィルターの関連付けを含む)については、cloud-create-project および cloud-manage-project を参照してください。ID とアクセス管理(ユーザー、ロール、API キー)については、cloud-access-management を参照してください。

API エンドポイントとリクエストスキーマの詳細については、references/api-reference.md を参照してください。

用語

このスキルでは、Elastic Cloud UI の方向性に合わせた包括的な用語として ネットワークセキュリティ を使用します。基盤となる API では トラフィックフィルター が使用されます。エンドポイントのパスには traffic-filters、JSON フィールドには traffic_filters が使われています。ユーザーまたはエージェントが「トラフィックフィルター」と言う場合、「ネットワークセキュリティポリシー」と同じものを指します。フィルターの種類は IP フィルター(タイプ ip)と VPC フィルター(タイプ vpce)の 2 つです。

実現できること

  • 特定の IP または CIDR ブロックへの受信を制限する IP フィルターを作成する
  • 特定の VPC エンドポイント ID へのトラフィックを制限する VPC フィルター(AWS PrivateLink)を作成する
  • ネットワークセキュリティポリシーを一覧表示、確認、更新、削除する
  • PrivateLink のリージョンメタデータ(サービス名、ドメイン名、アベイラビリティーゾーン)を検索する
  • Serverless プロジェクトにフィルターを関連付ける、または関連付けを解除する(cloud-manage-project に委任)
  • 組織の現在のネットワークセキュリティ状況を監査する

前提条件と権限

項目説明
EC_API_KEYCloud API キー(cloud-setup によって設定)。すべての操作に必要です。
リージョンフィルターはリージョン単位です。フィルターの作成時に対象リージョンを指定する必要があります。
プロジェクト IDフィルターをプロジェクトに関連付ける場合にのみ必要です(cloud-manage-project が処理します)。

python3 skills/cloud/network-security/scripts/cloud_network_security.py list-filters を実行し、操作を開始する前に EC_API_KEY が有効であることを確認してください。

操作ごとに必要な権限

Elastic Cloud Serverless で一般的なネットワークセキュリティ操作を行うには、次の権限が必要です。

操作必要な権限
フィルターの一覧表示/メタデータの取得組織のメンバーであれば可
フィルターの作成/更新/削除組織オーナー(organization-admin)
フィルターのプロジェクトへの関連付け組織オーナーまたはプロジェクト管理者

このスキルでは、ロールの事前確認は個別に行いません。要求された操作を試行し、認可は API に委ねてください。API が認可エラー(例:403 Forbidden)を返した場合は処理を中止し、提供された API キーの権限を確認するようユーザーに依頼してください。

手動セットアップのフォールバック(cloud-setup が利用できない場合)

このスキルがスタンドアロンでインストールされており、cloud-setup が利用できない場合は、コマンドを実行する前に Cloud の環境変数を手動で設定するようユーザーに指示してください。ユーザーにチャットで API キーを貼り付けるよう求めないでください。

変数必須説明
EC_API_KEYはいElastic Cloud API キー(操作に必要なロールは上記の権限表を参照してください)。
EC_BASE_URLいいえCloud API のベース URL(デフォルト: https://api.elastic-cloud.com)。

Note: EC_API_KEY が存在しない場合、またはユーザーがまだ Cloud API キーを持っていない場合は、Elastic Cloud API keys でキーを生成するようユーザーに案内し、以下の手順でローカルに設定してもらってください。

推奨される方法(エージェントに優しい): プロジェクトルートに .env ファイルを作成します:

EC_API_KEY=your-api-key
EC_BASE_URL=https://api.elastic-cloud.com

すべての cloud/* スクリプトは、作業ディレクトリの .env を自動的に読み込みます。

代替方法: ターミナルで直接エクスポートします:

export EC_API_KEY="<your-cloud-api-key>"
export EC_BASE_URL="https://api.elastic-cloud.com"

ターミナルでのエクスポートは、別のシェルセッションで実行されているサンドボックス化されたエージェントからは見えない可能性があるため、エージェントを使用する場合は .env を推奨します。

ネットワークセキュリティリクエストの分解

ユーザーがネットワークセキュリティのニーズを自然言語で説明した場合(たとえば、「検索プロジェクトをオフィスの IP に制限したい」)、実行する前にリクエストを個別のタスクに分解してください。

ステップ 1 — 構成要素を特定する
構成要素答えるべき質問
フィルターの種類IP フィルター(パブリック IP/CIDR)または VPC フィルター(AWS PrivateLink エンドポイント)?
リージョン対象のプロジェクトはどの AWS リージョンにありますか?
ルールどの送信元 IP、CIDR、または VPC エンドポイント ID を許可すべきですか?
スコープデフォルトですべての新規プロジェクトに適用しますか、それとも特定のプロジェクトのみですか?
プロジェクトこのフィルターをどの既存プロジェクトに関連付けるべきですか?
ステップ 2 — 既存の状態を確認する

新しいフィルターを作成する前に、すでに存在するものを確認してください:

python3 skills/cloud/network-security/scripts/cloud_network_security.py list-filters --region us-east-1

フィルターの衛生管理: 既存のフィルターが 同じ目的 で同じ送信元ルールをすでにカバーしている場合は、重複を作成するのではなく再利用してください。フィルターはリージョン単位でスコープされ、複数のプロジェクトに関連付けることができるため、適切なルールを持つ 1 つのフィルターで多くのプロジェクトに対応できます。同一の送信元ルールを持つ 2 つのフィルターは、異なる目的を果たす場合(たとえば、異なるチームがそれぞれ独自のポリシーを管理する場合)は問題ありませんが、同じ目的のために 2 つ目のフィルターを作成するのは不要です。

ステップ 3 — フィルターを作成する

skills/cloud/network-security/scripts/cloud_network_security.py から適切なコマンドを実行してください。

ステップ 4 — プロジェクトに関連付ける

フィルターの関連付けは、プロジェクトの PATCH エンドポイントを使用して管理します。フィルターの関連付けまたは関連付け解除には cloud-manage-project を使用してください:

PATCH /api/v1/serverless/projects/{type}/{id}
Body: { "traffic_filters": [{ "id": "filter-id-1" }, { "id": "filter-id-2" }] }

関連付けを更新するときは、フィルター ID の 完全なリスト を指定してください。リストに含まれていないフィルターは、プロジェクトから関連付けが解除されます。

ステップ 5 — 検証する

実行後、フィルターを再度一覧表示するか、プロジェクトを GET して変更が反映されたことを確認してください。

IP フィルターと VPC フィルターの比較

項目IP フィルター(ip)VPC フィルター(vpce)
目的パブリック IP アドレスまたは CIDR ブロックを許可リストに登録します特定の AWS VPC エンドポイント ID にトラフィックを制限します
ユースケースオフィスの IP、CI/CD ランナー、パートナーアクセスパブリックインターネットに公開せずにプライベート接続します
ソース形式IP アドレスまたは CIDR(例:203.0.113.0/24)AWS VPC エンドポイント ID(例:vpce-0abc123def456)
ネットワーク経路パブリックインターネットAWS PrivateLink(プライベートで、AWS ネットワークの外に出ません)
前提条件なし先に AWS コンソールで VPC エンドポイントと DNS レコードを作成します

重要な概念: AWS のプライベート接続は、デフォルトで Elastic Cloud に許可されています。VPC フィルターの作成が必要なのは、特定の VPC エンドポイント ID にトラフィックを制限する場合のみです。プライベート接続だけが必要な場合(フィルタリングは不要な場合)は、AWS で VPC エンドポイントと DNS レコードを作成してください。Elastic Cloud 側でフィルターを作成する必要はありません。

例

オフィスの IP 範囲を許可リストに登録する

プロンプト:「us-east-1 のプロジェクトへのトラフィックを、オフィスのネットワーク 203.0.113.0/24 からのみに許可してください。」

python3 skills/cloud/network-security/scripts/cloud_network_security.py create-filter \
  --name "Office IP allowlist" \
  --type ip \
  --region us-east-1 \
  --rules '[{"source": "203.0.113.0/24", "description": "Office network"}]'

次に、cloud-manage-project を使用して、フィルターを特定のプロジェクトに関連付けます。

VPC エンドポイントへのトラフィックを制限する

プロンプト:「オブザーバビリティプロジェクトへのアクセスを制限し、VPC エンドポイントからのトラフィックのみを受け付けるようにしてください。」

python3 skills/cloud/network-security/scripts/cloud_network_security.py create-filter \
  --name "Production VPC" \
  --type vpce \
  --region us-east-1 \
  --rules '[{"source": "vpce-0abc123def456", "description": "Production VPC endpoint"}]'
リージョン内のすべてのフィルターを一覧表示する

プロンプト:「eu-west-1 のネットワークセキュリティポリシーをすべて表示してください。」

python3 skills/cloud/network-security/scripts/cloud_network_security.py list-filters --region eu-west-1
新しい IP を追加するようにフィルターを更新する

プロンプト:「既存のオフィス用フィルターに、VPN の IP 198.51.100.5 を追加してください。」

python3 skills/cloud/network-security/scripts/cloud_network_security.py get-filter --filter-id tf-12345
# Review current rules, then update with the complete rule set:
python3 skills/cloud/network-security/scripts/cloud_network_security.py update-filter \
  --filter-id tf-12345 \
  --body '{"rules": [{"source": "203.0.113.0/24", "description": "Office network"}, {"source": "198.51.100.5", "description": "VPN"}]}'
リージョンの PrivateLink メタデータを確認する

プロンプト:「us-east-1 で必要な PrivateLink サービス名を教えてください。」

python3 skills/cloud/network-security/scripts/cloud_network_security.py get-metadata --region us-east-1
使用していないフィルターを削除する

プロンプト:「古いステージング用 IP フィルターを削除してください。」

python3 skills/cloud/network-security/scripts/cloud_network_security.py delete-filter --filter-id tf-67890 --dry-run
# Review what would be deleted, then confirm:
python3 skills/cloud/network-security/scripts/cloud_network_security.py delete-filter --filter-id tf-67890

ガイドライン

  • EC_API_KEY が設定されていない場合、ユーザーに尋ねず、エージェントにまず cloud-setup を実行するよう指示してください。
  • 破壊的な操作(フィルターの削除)を実行する前に、必ずユーザーの確認を取ってください。
  • フィルターはリージョン単位です。us-east-1 で作成したフィルターは、そのリージョンのプロジェクトにのみ関連付けられます。
  • フィルターの適切な管理 — 再利用、スコープ設定、クリーンアップ:
    • フィルターを作成する前に、必ず list-filters を実行し、同じ目的で既存のフィルターに必要なソースルールがあるか確認してください。フィルターは複数のプロジェクトに関連付けられるため、適切なルールを持つフィルターを重複して作成するより、再利用する方が適切です。
    • 重複フィルターとは、IP アドレスの範囲が一部重なるだけのフィルターではなく、同じ目的でソースルールが同一のフィルターを指します。同じ CIDR を対象としていても、異なるプロジェクトグループをカバーする 2 つのフィルターは正当です。
    • 使用されていないフィルターを定期的に確認してください。フィルターがどのプロジェクトにも関連付けられていない場合は、整理のためユーザーに削除を促してください。
  • ルールを更新すると、ルールセット全体が置き換えられます。 PATCH を使ってルールを追加する際は、既存のすべてのルールと新しいルールを含めてください。既存のルールを省略すると、そのルールは削除されます。
  • プロジェクトに関連付けられているフィルターは削除できません。 先に cloud-manage-project を使って関連付けを解除してください(プロジェクトに PATCH を実行し、traffic_filters リストからフィルターを削除します)。その後、フィルターを削除してください。
  • include_by_default を設定すると、リージョン内のすべての新規プロジェクトにフィルターが自動的に関連付けられます。今後作成されるすべてのプロジェクトに影響するため、慎重に使用してください。
  • プロジェクトの関連付けと解除は、cloud-manage-project スキルに委任してください。このスキルが管理するのはフィルター定義のみです。
  • ID とアクセス管理(ユーザー、ロール、API キー)については、cloud-access-management を参照してください。
  • Elasticsearch レベルのセキュリティ(ネイティブユーザー、ロールマッピング、DLS/FLS)については、elasticsearch-authz を参照してください。

コメント