このページでは、組織、フォルダ、プロジェクトを保護するために階層型セキュリティ ポリシーを構成する方法について説明します。階層型セキュリティ ポリシーを構成する前に、階層型セキュリティ ポリシーの概要の情報をよく理解しておいてください。
階層型セキュリティ ポリシーの IAM 権限を設定する
次の操作を行うには、ターゲット リソース階層ノードまたはポリシー自体(すでに存在する場合)に対する Identity and Access Management(IAM)ロールの Compute 組織セキュリティ ポリシー管理者のロール(roles/compute.orgSecurityPolicyAdmin)が必要です。
- 新しい階層型セキュリティ ポリシーを作成する
- ルールを追加、更新、削除して階層型セキュリティ ポリシーを変更する
- 階層型セキュリティ ポリシーを削除する
次の操作では、ターゲット リソース階層ノードに対する IAM の Compute 組織リソース管理者ロール(roles/compute.orgSecurityResourceAdmin)に加えて、ターゲット リソース階層ノードまたはポリシー自体に対する Compute 組織セキュリティ ポリシー管理者ロール(roles/compute.orgSecurityPolicyAdmin)または Compute 組織セキュリティ ポリシー ユーザー ロール(roles/compute.orgSecurityPolicyUser)が必要です。
- 階層型セキュリティ ポリシーをリソース階層ノードに関連付ける
最後に、次の表に、リストされているロールのいずれかを持っている場合に実行できるその他の操作の一覧を示します。
| 操作 | ロール |
|---|---|
| バックエンド リソースに対して有効なすべての Cloud Armor ルールを表示する |
|
organizationSecurityPolicy の対象となる有効なバックエンド リソースを表示する |
階層型セキュリティ ポリシーを構成する
以降のセクションでは、階層型セキュリティ ポリシーの作成方法、リソース階層ノードへの関連付け方法、ノード間の移動方法、削除方法、保護されたリソースに適用されるすべての Cloud Armor セキュリティ ポリシー ルールの表示方法について説明します。
階層型セキュリティ ポリシーを作成する
階層型セキュリティ ポリシーは、gcloud compute org-security-policies create コマンドを使用して作成します。階層型セキュリティ ポリシーは、--organization または --folder フラグと、対応する ORGANIZATION_ID または FOLDER_ID を使用して、組織またはフォルダの下に作成します。次の例を使用して、階層型セキュリティ ポリシーを作成します。POLICY_NAME は、新しいセキュリティ ポリシーに付ける名前に置き換えます。
組織レベルの階層型セキュリティ ポリシーを作成する
gcloud compute org-security-policies create \ --organization=ORGANIZATION_ID \ --type=CLOUD_ARMOR \ --short-name=POLICY_NAMEフォルダレベルの階層型セキュリティ ポリシーを作成する
gcloud compute org-security-policies create \ --folder=FOLDER_ID \ --type=CLOUD_ARMOR \ --short-name=POLICY_NAME
既存のセキュリティ ポリシーをリソース階層ノードに関連付ける
既存のセキュリティ ポリシーがある場合は、gcloud compute org-security-policies associations create コマンドを使用して、リソース階層ノードに関連付けることができます。
階層型セキュリティ ポリシーを組織に関連付けます。
gcloud compute org-security-policies associations create \ --security-policy=POLICY_ID \ --organization=ORGANIZATION_ID \ --name=ASSOCIATION_NAME階層型セキュリティ ポリシーをフォルダに関連付けます。
gcloud compute org-security-policies associations create \ --security-policy=POLICY_ID \ --folder=FOLDER_ID \ --name=ASSOCIATION_NAME階層型セキュリティ ポリシーをプロジェクトに関連付けます。
gcloud compute org-security-policies associations create \ --security-policy=POLICY_ID \ --project-number=PROJECT_ID \ --name=ASSOCIATION_NAME
次のように置き換えます。
POLICY_ID: セキュリティ ポリシーの IDORGANIZATION_ID: 組織の IDASSOCIATION_NAME: 関連付けの名前FOLDER_ID: フォルダの IDPROJECT_ID: プロジェクトの ID
階層型セキュリティ ポリシーからプロジェクトを除外する
また、フォルダレベルの階層型セキュリティ ポリシーからプロジェクトを除外したり、組織レベルの階層型セキュリティ ポリシーからプロジェクトとフォルダの両方を除外したりすることもできます。
階層型セキュリティ ポリシーからプロジェクトを除外するには、
--excluded-projectsフラグを指定してgcloud compute org-security-policies associations createコマンドを使用します。次のコマンド例では、セキュリティ ポリシー
example-policyを組織10000001に関連付け、ID2000000002のプロジェクトを除外します。gcloud compute org-security-policies associations create \ --security-policy=example-policy \ --excluded-projects="projects/2000000002" \ --organization=10000001組織レベルの階層型セキュリティ ポリシーからフォルダを除外するには、
--excluded-foldersフラグを指定してgcloud compute org-security-policies associations createコマンドを使用します。次のコマンド例では、セキュリティ ポリシー
example-policyを組織10000001に関連付け、ID3000000003でフォルダを除外します。gcloud compute org-security-policies associations create \ --security-policy=example-policy \ --excluded-folders="folders/3000000003" \ --organization=10000001
階層型セキュリティ ポリシーを移動する
階層型セキュリティ ポリシーの親を変更するには、gcloud compute org-security-policies move コマンドを使用して、階層型セキュリティ ポリシーを別の親リソース階層ノードに移動します。ソースを最初のフラグとして指定し、宛先を 2 番目のフラグとして指定します。階層型セキュリティ ポリシーを移動すると、関連付けられているリソースではなく、所有権が変更されます。階層型セキュリティ ポリシーを所有できるのは組織とフォルダのみであるため、プロジェクトの下に移動することはできません。
次の例では、階層型セキュリティ ポリシーを組織 ORGANIZATION_ID からフォルダ FOLDER_ID に移動します。
gcloud compute org-security-policies move policy-1 \
--organization ORGANIZATION_ID \
--folder FOLDER_ID
階層型セキュリティ ポリシーを削除する
階層型セキュリティ ポリシーを削除する前に、ポリシーとリソース階層ノードのすべての関連付けを削除する必要があります。次の例では、gcloud compute org-security-policies associations delete コマンドを使用して、名前が POLICY_NAME の階層型セキュリティ ポリシーと組織 ORGANIZATION_ID の間の ASSOCIATION_NAME という名前の関連付けを削除します。
gcloud compute org-security-policies associations delete ASSOCIATION_NAME \
--security-policy=POLICY_NAME \
--organization=ORGANIZATION_ID
セキュリティ ポリシーに関連付けられているのがこれだけではない場合は、関連付けごとに前の手順を繰り返します。階層型セキュリティ ポリシーに関連付けがない場合は、次の例のように gcloud compute org-security-policies delete コマンドを使用して削除できます。
gcloud compute org-security-policies delete POLICY_NAME \
--organization=ORGANIZATION_ID
保護されたリソースに対して有効なすべての Cloud Armor ルールを表示する
保護されたリソースに適用されるすべての Cloud Armor セキュリティ ポリシー ルールを表示するには、gcloud compute backend-services get-effective-security-policies コマンドを使用します。
gcloud compute backend-services get-effective-security-policies PROTECTED_RESOURCE
PROTECTED_RESOURCE は、確認する保護されたリソースの名前に置き換えます。
階層型セキュリティ ポリシーを継承するプロジェクト内のバックエンド サービスに対して gcloud compute backend-services get-effective-security-policies コマンドを実行すると、その特定のバックエンド サービスのタイプが階層型セキュリティ ポリシーでサポートされていない場合でも、レスポンスに階層型セキュリティ ポリシーが含まれることがあります。階層型セキュリティ ポリシーでサポートされているバックエンド構成のリストについては、階層型セキュリティ ポリシーの概要をご覧ください。
ユースケース
以降のセクションでは、階層型セキュリティ ポリシーのユースケースについて説明します。
一連の IP アドレスから組織内のすべてのアプリケーション ロードバランサへのトラフィックを拒否する
階層型セキュリティ ポリシーを使用すると、組織のネットワーク全体へのアクセスが許可されていない IP アドレスのリストを管理したり、特定の地域や国からのトラフィックを拒否したりできます。これにより、会社固有のセキュリティ上の懸念に対処したり、コンプライアンスを維持したりできます。次の手順は、IP アドレス範囲 192.0.2.0/24 からのトラフィックを拒否する組織レベルの階層型セキュリティ ポリシーを作成する方法を示しています。
ID 1000000001 の組織に接続された
org-level-deny-ip-policyという名前の階層型セキュリティ ポリシーを作成します。gcloud compute org-security-policies create \ --organization=1000000001 \ --type=CLOUD_ARMOR \ --description= "this org policy denies a set of IP addresses for all resources" \ --short-name=org-level-deny-ip-policy優先度
1000で、IP アドレス範囲192.0.2.0/24の一致条件とdenyアクションを含むルールを追加します。gcloud compute org-security-policies rules create 1000 \ --action=deny \ --security-policy=org-level-deny-ip-policy \ --organization=1000000001 \ --description "Deny traffic from 192.0.2.0/24" \ --src-ip-ranges "192.0.2.0/24"最後に、セキュリティ ポリシーを組織に関連付け、
192.0.2.0/24IP アドレスからのリクエストを組織内のすべてのサービスに対して拒否します。gcloud compute org-security-policies associations create \ --security-policy=org-level-deny-ip-policy \ --organization=ORGANIZATION_ID
組織内の特定のプロジェクトへのアクセス権を特定の送信元 IP アドレスに付与する
組織内の特定のプロジェクトへのアクセス権を 1 つまたは複数の IP アドレスに付与できます。これは、信頼できるアップストリーム プロキシがあり、一部のプロジェクトのルール評価から除外する場合に便利です。次の Cloud CDN ベースの例では、フォルダレベルの階層型セキュリティ ポリシーを使用して、IP アドレス範囲 192.0.2.0/24 に、組織 10000001 の project-1、project-2、project-3 という名前のプロジェクトへのアクセス権を付与します。
次のコマンドを使用して、
project-1、project-2、project-3を ID が20000002のフォルダに移動します。gcloud projects move project-1 --folder=20000002 gcloud projects move project-2 --folder=20000002 gcloud projects move project-3 --folder=20000002
次のコマンドを使用して、
org-level-proxy-filteringという名前のセキュリティ ポリシーを作成します。gcloud compute org-security-policies create \ --folder=20000002 \ --type=CLOUD_ARMOR \ --short-name=org-level-proxy-filteringIP アドレス範囲
192.0.2.0/24の一致条件とgoto_nextルール アクションを使用して、優先度1000のルールを追加します。リクエストがこの条件と一致すると、このセキュリティ ポリシー内のルールの評価は中止されます。gcloud compute org-security-policies rules create 1000 \ --action=goto_next \ --security-policy=org-level-proxy-filtering \ --organization=10000001 \ --src-ip-ranges="192.0.2.0/24"省略可:
192.0.2.0/24以外のリクエストに対してこれらのプロジェクトにセキュリティ ポリシー ルールを適用する場合は、1000よりも優先度の低いルールを追加します。この手順は後で行うこともできます。次のコマンドを使用して、手順 1 でプロジェクトを移動した ID
20000002のフォルダにポリシーを関連付けます。gcloud compute org-security-policies associations create \ --security-policy=org-level-proxy-filtering \ --folder=20000002