サービス アカウントは特別なタイプのアカウントで、通常はユーザーではなく、アプリケーションや Compute Engine インスタンスなどのコンピューティング ワークロードで使用されます。このアカウントは、アカウント固有のメールアドレスで識別されます。
アプリケーションはサービス アカウントを使用して、承認された API 呼び出しを行います。これは、サービス アカウント自体として承認されるか、ドメイン全体の委任により Google Workspace または Cloud Identity ユーザーとして承認されます。 アプリケーションがサービス アカウントとして認証されると、アプリケーションはサービス アカウントにアクセス権が付与されているすべてのリソースにアクセスできます。
サービス アカウントを使用して、トラフィック ソースを識別し、必要に応じて Secure Web Proxy ポリシーを構成できます。
このガイドでは、次の方法について説明します。
- 空のポリシーを使用して Secure Web Proxy インスタンスを作成します。
- サービス アカウントを作成してリソースに接続します。
- サービス アカウントを使用して、Secure Web Proxy ポリシーを作成します。
- Secure Web Proxy インスタンスを作成します。
- VM からの接続をテストします。
準備
初期設定の手順を完了します。
組織の管理者にサービス アカウントへのアクセス権を付与してもらいます。
Google Cloud CLI バージョン 406.0.0 以降がインストールされていることを確認します。
gcloud version | head -n1以前のバージョンの gcloud CLI がインストールされている場合は、バージョンを更新します。
gcloud components update --version=406.0.0
空のポリシーを使用して Secure Web Proxy インスタンスを作成する
Secure Web Proxy インスタンスを作成するには、まず空のセキュリティ ポリシーを作成してから、そのポリシーを使用するウェブプロキシを作成する必要があります。
空のセキュリティ ポリシーを作成する
コンソール
Google Cloud コンソールで、[SWP ポリシー] ページに移動します。
[ポリシーを作成] をクリックします。
[名前] フィールドに、ポリシーの名前(
myswppolicyなど)を入力します。[説明] フィールドに、ポリシーの説明(
My new swp policyなど)を入力します。[リージョン] で、ポリシーを作成するリージョン(
us-central1など)を選択します。[作成] をクリックします。
Cloud Shell
任意のテキスト エディタを使用して、
policy.yamlファイルを作成します。作成した
policy.yamlファイルに次の内容を追加します。name: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME description: POLICY_DESCRIPTION次のように置き換えます。
PROJECT_NAME: プロジェクトの名前REGION: ポリシーが作成されるリージョン(us-central1など)POLICY_NAME: ポリシーの名前POLICY_DESCRIPTION: ポリシーの説明
gcloud network-security gateway-security-policies importコマンドを使用して、セキュリティ ポリシーをインポートします。gcloud network-security gateway-security-policies import POLICY_NAME \ --source=POLICY_FILE.yaml \ --location=REGION
ウェブプロキシを作成する
コンソール
Google Cloud コンソールで、[ウェブ プロキシ] ページに移動します。
[セキュア ウェブプロキシを作成] をクリックします。
[名前] フィールドに、ウェブ プロキシの名前(例:
myswp)を入力します。[説明] フィールドに、ウェブプロキシの説明(
My new swpなど)を入力します。[ルーティング モード] で、[明示的] オプションを選択します。
[リージョン] で、ウェブプロキシを作成するリージョン(
us-central1など)を選択します。[ネットワーク] で、ウェブプロキシを作成するネットワークを選択します。
省略可: [ウェブプロキシの IP アドレス] フィールドに、Secure Web Proxy の IP アドレスを入力します。
前の手順で作成したサブネットワークに存在する Secure Web Proxy IP アドレスの範囲から IP アドレスを入力できます。IP アドレスを入力しない場合、Secure Web Proxy インスタンスは選択したサブネットワークから IP アドレスを自動的に選択します。
[証明書] で、ウェブプロキシの作成に使用する証明書を選択します。
[ポリシー] で、ウェブプロキシに関連付けるために作成したポリシーを選択します。
[作成] をクリックします。
Cloud Shell
任意のテキスト エディタを使用して、
gateway.yamlファイルを作成します。gateway.yamlファイルに以下を追加します。name: projects/PROJECT_NAME/locations/REGION/gateways/GATEWAY_NAME type: SECURE_WEB_GATEWAY ports: [GATEWAY_PORT_NUMBERS] certificateUrls: [CERTIFICATE_URLS] gatewaySecurityPolicy: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME network: projects/PROJECT_NAME/global/networks/NETWORK_NAME subnetwork: projects/PROJECT_NAME/regions/REGION/subnetworks/SUBNETWORK addresses: [GATEWAY_IP_ADDRESS] scope: samplescope次のように置き換えます。
GATEWAY_NAME: この Secure Web Proxy インスタンスの名前GATEWAY_PORT_NUMBERS: このゲートウェイのポート番号のリスト(例:[80,443])CERTIFICATE_URLS: SSL 証明書の URL のリストGATEWAY_IP_ADDRESS: 初期設定手順で以前に作成したプロキシ サブネット内の Secure Web Proxy インスタンスの IP アドレスのオプションのリストIP アドレスを一覧表示しない場合は、フィールドを省略して、ウェブプロキシによって IP アドレスが選択されるようにします。
gcloud network-services gateways importコマンドを使用して、Secure Web Proxy インスタンスを作成します。gcloud network-services gateways import GATEWAY_NAME \ --source=gateway.yaml \ --location=REGION
接続をテストする
接続をテストするには、Virtual Private Cloud(VPC)ネットワーク内の任意の仮想マシン(VM)インスタンスから curl コマンドを使用します。
curl -x https://GATEWAY_IP_ADDRESS:PORT_NUMBER https://www.example.com --proxy-insecure
すべてが正しく機能している場合、Secure Web Proxy インスタンスは 403 Forbidden ステータス コードを返します。このエラーは、次のことを確認します。
Secure Web Proxy インスタンスが正常にデプロイされ、トラフィックをアクティブに受信しています。
Secure Web Proxy ポリシーは、次のセクションで特定の
allowルールを定義するまで、すべてのトラフィックを拒否するというデフォルトのセキュリティ ポスチャーを正しく適用しています。
サービス アカウントを作成してリソースに接続する
サービス アカウントを作成して関連付けるには、次の操作を行います。
Secure Web Proxy ルールを作成する
Secure Web Proxy ルールを作成する手順は次のとおりです。
任意のテキスト エディタを使用して、
RULE_FILE.yaml ファイルを作成します。RULE_FILEは、選択したファイル名に置き換えます。選択したサービス アカウントから URL へのアクセスを許可するには、YAML ファイルに次の行を追加します。
name: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME/rules/RULE_NAME description: RULE_DESCRIPTION enabled: true priority: RULE_PRIORITY sessionMatcher: CEL_EXPRESSION basicProfile: ALLOW以下を置き換えます。
RULE_NAME: このルールの名前RULE_DESCRIPTION: 作成するルールの説明RULE_PRIORITY: このルールの優先度。数値が小さいほど優先度が高くなります。CEL_EXPRESSION: Common Expression Language(CEL)式詳細については、CEL マッチャーの言語リファレンスをご覧ください。
たとえば、目的のサービス アカウントが設定されたリソースから
example.comへのアクセスを許可するには、sessionMatcher用に作成した YAML ファイルに以下を追加します。sessionMatcher: "source.matchServiceAccount('SERVICE_ACCOUNT') && host() == 'example.com'"SERVICE_ACCOUNTは、許可するサービス アカウントに置き換えます。これはサービス アカウントのメールアドレスである必要があります。
作成したルールをインポートします。
gcloud network-security gateway-security-policies rules import RULE_NAME \ --source=RULE_FILE.yaml \ --location=REGION \ --gateway-security-policy=POLICY_NAME
接続をテストする
接続をテストするには、アタッチされた SERVICE_ACCOUNT を使用して、リソースから curl コマンドを使用します。
curl -x https://IPv4_ADDRESS:443 http://example.com
--proxy-insecure
IPv4_ADDRESS は、Secure Web Proxy インスタンスの IPv4 アドレスに置き換えます。