このドキュメントでは、プライベート ウェブ アプリケーションへのアクセスを保護するために Chrome Enterprise Premium セキュア ゲートウェイを設定する方法について説明します。
Chrome Enterprise Premium セキュア ゲートウェイは、フォワード プロキシとして機能し、ゼロトラスト アクセス フレームワークを適用して、社内向けウェブ アプリケーションにアクセスするユーザーをきめ細かくコンテキストアウェアに制御します。
限定公開ウェブ アプリケーションへのアクセスを保護する仕組み
安全なトンネルを確立し、コンテキストアウェア アクセス ポリシーを適用することで、安全なゲートウェイは社内向けアプリケーションを限定公開にし、公共のインターネットに公開されないように保護します。これらのアプリケーションのトラフィックは、クライアントサイドのブラウザ設定によって、セキュア ゲートウェイのプロキシ エンドポイントを経由するよう制御されます。次に、セキュア ゲートウェイは関連するアクセス ポリシーを適用し、許可されている場合は、リクエストを宛先アプリケーションにルーティングします。
セキュア ゲートウェイは、次の環境でホストされている限定公開のウェブ アプリケーションを保護できます。
Google Cloud プロジェクト: セキュア ゲートウェイは、 Google Cloud VPC ネットワークで実行されているアプリケーションに直接アクセスできます。
非Google Cloud (オンプレミス データセンターまたは他のクラウド): まず、Google Cloud のプライベート VPC ネットワークと非Google Cloud ネットワークの間に接続を確立する必要があります。通常、これは Cloud VPN または Cloud Interconnect を使用して行われます。次に、セキュア ゲートウェイはこの接続を使用して、トラフィックを社内向け VPC ネットワークに送信します。このネットワークは、トラフィックを非Google Cloud 環境に転送します。
始める前に
セキュア ゲートウェイを設定する前に、次のことを確認してください。
- Chrome Enterprise Premium ライセンス
- 管理者アカウントで Google 管理コンソールにアクセスできること
- 請求先アカウントが割り当てられ、次の API が有効になっている Google Cloud プロジェクト: BeyondCorp API
設定を行う管理者に付与される次の Identity and Access Management(IAM)ロール: プロジェクト レベル: Cloud BeyondCorp 管理者(
beyondcorp.admin)。Google Cloud 以外の環境のプライベート アプリケーションの場合、Google Cloud 環境とアプリケーションが存在するGoogle Cloud 以外の環境間の Cloud VPN または Cloud Interconnect 接続。ネットワーク接続の設定について詳しくは、次のリソースをご覧ください。
シェル環境の設定
作業シェルで次の環境変数を定義して、設定プロセスを合理化し、セキュア ゲートウェイ API と通信できるようにします。
一般的なパラメータ
API="beyondcorp.googleapis.com" API_VERSION=v1 PROJECT_ID=
PROJECT_ID次のように置き換えます。
PROJECT_ID: セキュア ゲートウェイが作成されるプロジェクトの ID。
セキュア ゲートウェイのパラメータ
SECURITY_GATEWAY_ID=
SECURITY_GATEWAY_IDSECURITY_GATEWAY_DISPLAY_NAME="SECURITY_GATEWAY_DISPLAY_NAME"次のように置き換えます。
SECURITY_GATEWAY_ID: 作成するセキュア ゲートウェイの ID。ID は 63 文字以内で、小文字、数字、ハイフンを使用できます。最初の文字は英字にする必要があり、最後の文字は英字または数字にできます。SECURITY_GATEWAY_DISPLAY_NAME: セキュア ゲートウェイの人が読める形式の名前。名前は最大 63 文字で、印刷可能な文字を含めることができます。
セキュア ゲートウェイを作成する
Chrome Enterprise Premium セキュア ゲートウェイは、アプリケーションへの安全な接続を確立するための基本的な構成要素です。
gcloud
gcloud beyondcorp security-gateways create ${SECURITY_GATEWAY_ID} \ --project=${PROJECT_ID} \ --location=global \ --display-name="${SECURITY_GATEWAY_DISPLAY_NAME}"
REST
curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-X POST \
-d '{ "display_name": "SECURITY_GATEWAY_DISPLAY_NAME" }' \
"https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways?security_gateway_id=${SECURITY_GATEWAY_ID}"
プライベート ウェブ アプリケーションを構成する
セキュア ゲートウェイで特定アプリケーションのリソースを定義する前に、接続と適切なルーティングを有効にするために必要な権限とネットワーク設定を構成する必要があります。
サービス アカウントに権限を付与する
VPC ネットワークにトラフィックを正常に送信するには、セキュリティ ゲートウェイの委任サービス アカウントに特定の IAM 権限が付与されている必要があります。これにより、 Google Cloud VPC 内でホストされているか、Cloud VPN または Cloud Interconnect を介して接続されたGoogle Cloud 環境でホストされているかに関係なく、セキュア ゲートウェイがプライベート アプリケーションにアクセスできるようになります。
-
セキュア ゲートウェイの詳細を取得して、委任するサービス アカウントのメールアドレスを特定します。メールアドレスはレスポンスの
delegatingServiceAccountフィールドにあります。gcloud
gcloud beyondcorp security-gateways describe ${SECURITY_GATEWAY_ID} \ --project=${PROJECT_ID} \ --location=global
REST
curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}"
-
サービス アカウントとターゲット VPC プロジェクトの環境変数を設定します。
DELEGATING_SERVICE_ACCOUNT="security-gateway@my-gateway-service-account.iam.gserviceaccount.com" # Replace with actual value
-
プライベート VPC プロジェクトの委任サービス アカウントに
roles/beyondcorp.upstreamAccessIAM ロールを付与します。gcloud projects add-iam-policy-binding
PRIVATE_VPC_PROJECT_ID\ --role=roles/beyondcorp.upstreamAccess \ --member=serviceAccount:${DELEGATING_SERVICE_ACCOUNT}PRIVATE_VPC_PROJECT_IDは、プライベート ウェブアプリがデプロイされている VPC ネットワークのプロジェクト ID、または Cloud VPN/Interconnect が構成されている VPC ネットワークのプロジェクト ID に置き換えます。
ロールを付与したら、Identity and Access Management ポリシーが適用されるまで約 2 分待ちます。
ネットワーク ルーティングとファイアウォール ルールを構成する
セキュア ゲートウェイからのトラフィックがプライベート ウェブ アプリケーションに到達できるように、ファイアウォール ルール、ネットワーク ルーティング、DNS 設定を構成します。
Google Cloudのアプリケーションのファイアウォール ルール
プライベート ウェブ アプリケーションが Google Cloud VPC ネットワーク内(Compute Engine VM、内部 IP を使用する Google Kubernetes Engine サービス、内部 TCP/UDP ロードバランサの背後など)でホストされている場合は、Google Cloud VPC ファイアウォール ルールを構成します。これにより、セキュア ゲートウェイの IP 範囲(34.158.8.0/21 と 136.124.16.0/20)からの上り(内向き)TCP トラフィックが許可されます。
非Google Cloud 環境のアプリケーションのファイアウォール ルール
プライベート ウェブ アプリケーションがオンプレミス データセンターまたは別のクラウド プロバイダのネットワークに存在し、Cloud VPN または Cloud Interconnect を使用して Google CloudVPC に接続されている場合は、オンプレミス ファイアウォールまたは同等のネットワーク セキュリティ制御(セキュリティ グループやネットワーク ACL など)でファイアウォール ルールを構成します。これにより、セキュア ゲートウェイの IP 範囲からの上り(内向き)TCP トラフィックが許可されます。
非Google Cloud 環境からセキュア ゲートウェイへのルーティングを構成する
オンプレミスや他のクラウドなど、Google Cloud 以外の環境でホストされているプライベート アプリケーションの双方向通信を容易にするには、外部ネットワークで次のセキュア ゲートウェイ IP 範囲(34.158.8.0/21 と 136.124.16.0/20)への戻りパスを作成する必要があります。
プライベート ネットワークが Cloud VPN または Cloud Interconnect を介してセキュア ゲートウェイの IP 範囲に到達できることを確認します。
動的ルーティング: Cloud Router で Border Gateway Protocol(BGP)などの動的ルーティングを使用している場合は、 Google Cloud の Cloud Router がオンプレミス BGP デバイスにセキュア ゲートウェイの IP 範囲を明示的にアドバタイズしていることを確認します。BGP は多くのルートを動的に交換しますが、セキュア ゲートウェイの IP 範囲には明示的なアドバタイズが必要です。
静的ルーティング: 静的ルートを使用している場合は、ルーターやファイアウォールなどのオンプレミス ネットワーク機器で、セキュア ゲートウェイの各 IP 範囲のルートを手動で追加する必要があります。これらの静的ルートでは、セキュア ゲートウェイの IP 範囲宛てのトラフィックが Cloud VPN または Cloud Interconnect 接続を介して送信されるように指定する必要があります。
静的ルーティングを使用する場合、Cloud VPN は次のサポートされているリージョンのいずれかに存在する必要があります。
africa-south1asia-east1asia-south1asia-south2asia-southeast1europe-central2europe-north1europe-southwest1europe-west1europe-west2europe-west3europe-west4europe-west8europe-west9northamerica-northeast1northamerica-northeast2northamerica-south1southamerica-east1southamerica-west1us-central1us-east1us-east4us-east5us-west1
セキュア ゲートウェイのプライベート ホスト名解決の DNS 構成
セキュア ゲートウェイでプライベート アプリケーションのホスト名を解決するには、Google Cloud VPC ネットワークで Cloud DNS を使用してホスト名を解決できる必要があります。Cloud DNS の具体的な構成は、プライベート DNS レコードが権威的にホストされている場所によって異なります。
Google Cloud 内のアプリケーションで Cloud DNS 限定公開ゾーンを使用している場合: 限定公開アプリケーションが Google Cloud でホストされ、その DNS レコードが VPC ネットワークに関連付けられている Cloud DNS 限定公開ゾーン内で管理されている場合は、ゾーンが正しく構成され、アクセス可能であることを確認します。セキュア ゲートウェイは、VPC の既存の Cloud DNS 解決機能を使用します。
Google Cloud 以外の環境または外部 DNS サーバーを使用するアプリケーション: プライベート アプリケーションがGoogle Cloud以外の環境(オンプレミスまたは他のクラウド)にある場合、または DNS レコードが VPC の Cloud DNS 限定公開ゾーンの外部にある DNS サーバーによって管理されている場合は、これらのプライベート ドメインのクエリを転送するように Cloud DNS を構成する必要があります。通常、これには VPC 内に Cloud DNS 転送ゾーンを作成する必要があります。これらのゾーンは、指定された限定公開ドメインの DNS クエリを、オンプレミスや他のクラウドなどの権威限定公開 DNS サーバーに転送します。
DNS 構成の詳細な手順については、転送ゾーンを作成するをご覧ください。
アプリケーション リソースを作成する
プライベート ウェブ アプリケーションへのアクセスを提供するには、アプリケーション リソースを作成して、セキュリティ ゲートウェイ フレームワーク内にアプリケーションを確立する必要があります。このリソースは、セキュア ゲートウェイがアプリケーションのトラフィックを識別する方法(ホスト名に基づく)と、そのトラフィックのルーティング先を定義します。
-
次のコマンドを実行して、必要な環境変数を設定します。
次のように置き換えます。APPLICATION_ID=
APPLICATION_IDAPP_DISPLAY_NAME="APP_DISPLAY_NAME" HOST_NAME=HOST_NAMEPRIVATE_NETWORK_RESOURCE_NAME=PRIVATE_NETWORK_RESOURCE_NAMEAPPLICATION_ID: アプリケーション リソースの一意の ID。APP_DISPLAY_NAME: 表示する人が読める形式の名前。HOST_NAME: ユーザーがアクセスするプライマリ ホスト名(例:private.local)。PRIVATE_NETWORK_RESOURCE_NAME: VPC ネットワークの完全なリソース名(例:projects/my-project/global/networks/my-network)。
-
アプリケーション リソースを作成します。
gcloud
次のコマンドを実行して、アプリケーション リソースを作成します。
gcloud beyondcorp security-gateways applications create ${APPLICATION_ID} \ --project=${PROJECT_ID} \ --security-gateway=${SECURITY_GATEWAY_ID} \ --location=global \ --display-name="${APP_DISPLAY_NAME}" \ --endpoint-matchers="hostname=${HOST_NAME},ports=[443]" \ --upstreams=network=name="${PRIVATE_NETWORK_RESOURCE_NAME}"
下り(外向き)リージョンを指定するには(たとえば、静的ルートを使用する場合)、
--egress-regionsフラグを追加します。gcloud beyondcorp security-gateways applications create ${APPLICATION_ID} \ --project=${PROJECT_ID} \ --security-gateway=${SECURITY_GATEWAY_ID} \ --location=global \ --display-name="${APP_DISPLAY_NAME}" \ --endpoint-matchers="hostname=${HOST_NAME},ports=[443]" \ --upstreams=network=name="${PRIVATE_NETWORK_RESOURCE_NAME}",egressPolicy=regions=us-central1
us-central1は、リージョン静的ルーティングの設定と一致する Google Cloud リージョン(europe-west1やasia-northeast1など)に置き換えます。特定のリージョン静的ルーティング要件がない場合は、構成から下り(外向き)ポリシーを省略できます。REST
API を使用してアプリケーション リソースを作成する手順は次のとおりです。
application.jsonという名前のファイルを作成します。{ "display_name": "
APP_DISPLAY_NAME", "endpoint_matchers": [ {"hostname": "HOST_NAME", "ports": [443]} ], "upstreams": [{ "network": { "name": "PRIVATE_NETWORK_RESOURCE_NAME" } }] }下り(外向き)リージョンを指定するには(静的ルートを使用する場合など)、アップストリーム構成に
egress_policyを追加します。{ "display_name": "
APP_DISPLAY_NAME", "endpoint_matchers": [ {"hostname": "HOST_NAME", "ports": [443]} ], "upstreams": [{ "network": { "name": "PRIVATE_NETWORK_RESOURCE_NAME" }, "egress_policy": { "regions": [ "us-central1" ] } }] }us-central1は、リージョン静的ルーティングの設定と一致する Google Cloud リージョン(europe-west1やasia-northeast1など)に置き換えます。特定のリージョン静的ルーティング要件がない場合は、構成から下り(外向き)ポリシーを省略できます。CreateAPI メソッドを呼び出します。curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -X POST \ -d @application.json \ "https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}/applications?application_id=${APPLICATION_ID}"
Google Chrome のプロキシモードを設定する
Google 管理コンソールの Chrome 設定で PAC ファイルを適用することで、アプリケーションのトラフィックを安全なゲートウェイ経由でルーティングできます。PAC ファイルを適用する手順は次のとおりです。
PAC ファイルを作成または更新します。
次の PAC ファイルの例を使用して
pac_config.jsファイルを作成し、最初のアプリケーションを作成します。既存の
pac_config.jsファイルを更新し、次の PAC ファイルの例に示すように、新しいアプリケーションのドメインをサイト配列に追加します。
function FindProxyForURL(url, host) { const PROXY = "HTTPS ingress.cloudproxy.app:443"; const sites = ["HOST_NAME"]; for (const site of sites) { if (shExpMatch(url, 'https://' + site + '/*') || shExpMatch(url, '*.' + site + '/*')) { return PROXY; } } return 'DIRECT'; }
HOST_NAME は、アプリケーションのホスト名(
myapp.example.comなど)に置き換えます。セキュア ゲートウェイに固有ではない既存の PAC ファイルを使用している場合は、アプリケーションのドメインをサイト配列に追加して、PAC ファイルを統合します。
ファイルをアップロードして、公開でダウンロードできるようにします。たとえば、ファイルを Cloud Storage にアップロードし、バケットでユーザー全員に Storage オブジェクトのユーザーロールを付与して、ファイルを公開でダウンロードできるようにします。
アップロードしたファイルが最新バージョンであることを確認するには、
Cache-Controlヘッダーをno-cacheに設定して、キャッシュ動作を調整します。この設定により、ブラウザと中間サーバーでファイルのコピーが保存されなくなり、Chrome で常に最新のバージョンがダウンロードされるようになります。Cache-Controlとブラウザ キャッシュへの影響について詳しくは、Cache-Control ヘッダーをご覧ください。アップロードしたファイルの公開 URL をコピーします。
プロキシモードの設定を更新する
- Google 管理コンソールに移動します。
- [デバイス> Chrome > 設定] をクリックします。
- 組織部門またはグループを選択し、[プロキシモード] をクリックします。
- [プロキシモード] で、[常に下記に指定したプロキシの自動設定を使用する] を選択し、Cloud Storage の PAC ファイルの URL を入力します。
- プロキシモードの設定を保存するには、[保存] をクリックします。
アクセス ポリシーを構成する
アクセス ポリシーを適用して、関連付けられているすべてのアプリケーションに影響するセキュア ゲートウェイ レベルでアクセスを制御することも、よりきめ細かい制御を行うために個々のアプリケーション レベルでアクセスを制御することもできます。
アクセス ポリシーを安全に更新する
setIamPolicy コマンドは、既存のポリシー全体を指定したポリシーに置き換えます。既存の権限を誤って削除しないように、次の「読み取り、変更、書き込み」パターンを使用することをおすすめします。このパターンは、既存の権限が誤って削除されるのを防ぐのに役立ちます。
読み取り: まず、現在のアクセス ポリシーを取得します。
変更: ポリシー ファイルをローカルで編集して、権限を追加または変更します。
書き込み: 更新したポリシー ファイルを適用します。
現在のポリシーを取得する
変更を行う前に、現在のポリシーを取得します。
ポリシーの etag フィールドは、バージョン識別子として機能します。これにより、複数の管理者が同時に変更を行った場合に発生する更新の競合を防ぐことができます。
次のコマンドは、ポリシーを取得して policy.json という名前のファイルに保存します。
gcloud
gcloud beta beyondcorp security-gateways applications get-iam-policy APPLICATION_ID \ --security-gateway=SECURITY_GATEWAY_ID \ --project=PROJECT_ID \ --location=global > policy.json
次のように置き換えます。
APPLICATION_ID: アプリケーション リソースの IDSECURITY_GATEWAY_ID: セキュリティ ゲートウェイの IDPROJECT_ID: セキュリティ ゲートウェイが構成されているプロジェクトの ID
REST
curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://${API}/${API_VERSION}/projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID/applications/APPLICATION_ID:getIamPolicy" > policy.json
次のように置き換えます。
PROJECT_ID: セキュリティ ゲートウェイが構成されているプロジェクトの IDSECURITY_GATEWAY_ID: セキュリティ ゲートウェイの IDAPPLICATION_ID: アプリケーション リソースの ID
このコマンドは、現在のポリシーを含む policy.json ファイルを作成します。
ポリシー ファイルを変更する
テキスト エディタで policy.json ファイルを開きます。 グループにセキュア ゲートウェイの使用権限を付与するには、roles/beyondcorp.securityGatewayUser ロールの members リストにグループを追加します。
policy.json ファイルは次のようになります。
{
"version": 3,
"bindings": [
{
"role": "roles/beyondcorp.securityGatewayUser",
"members": [
"group:existing-group@example.com"
]
}
],
"etag": "BwXN8_d-bOM="
}
グループを追加するには、members 配列に新しいエントリを追加します。前のエントリの後にカンマを含めます。
次の例では、new-group@example.com を追加します。
{
"version": 3,
"bindings": [
{
"role": "roles/beyondcorp.securityGatewayUser",
"members": [
"group:existing-group@example.com",
"group:new-group@example.com"
]
}
],
"etag": "BwXN8_d-bOM="
}
ポリシー バインディングで、serviceAccount、user、group、principal、principalSet などの他のタイプのメンバーを追加することもできます。詳細については、IAM プリンシパルをご覧ください。
更新されたポリシーを適用する
policy.json ファイルを編集して保存したら、setIamPolicy コマンドを使用してリソースに適用します。このコマンドは、ファイルから etag を使用して、正しいバージョンを更新します。
gcloud
gcloud beta beyondcorp security-gateways applications set-iam-policy APPLICATION_ID policy.json \ --security-gateway=SECURITY_GATEWAY_ID \ --project=PROJECT_ID \ --location=global
次のように置き換えます。
APPLICATION_ID: アプリケーション リソースの IDSECURITY_GATEWAY_ID: セキュリティ ゲートウェイの IDPROJECT_ID: セキュリティ ゲートウェイが構成されているプロジェクトの ID
REST
jq '{policy: .}' policy.json | curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d @- \ "https://${API}/${API_VERSION}/projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID/applications/APPLICATION_ID:setIamPolicy"
次のように置き換えます。
PROJECT_ID: セキュリティ ゲートウェイが構成されているプロジェクトの IDSECURITY_GATEWAY_ID: セキュリティ ゲートウェイの IDAPPLICATION_ID: アプリケーション リソースの ID
条件付きアクセス ポリシーを追加する
条件付きのアクセス ポリシーを設定することもできます。条件では、特定の場所から発信されたユーザーの IP アドレスなどの要件を指定します。
次のポリシーの例では、送信元 IP アドレスが指定されたアクセスレベル内にある場合にのみアクセス権を付与します。
{
"version": 3,
"bindings": [
{
"role": "roles/beyondcorp.securityGatewayUser",
"members": [
"group:group@example.com"
],
"condition": {
"expression": "request.auth.access_levels.contains('accessPolicies/1234567890/accessLevels/in_us')",
"title": "Source IP must be in US"
}
}
],
"etag": "BwXN8_d-bOM="
}
このポリシーを適用するには、前述の手順に沿って操作します。
Chrome Enterprise Premium 拡張機能をインストールする
Chrome Enterprise Premium 拡張機能は、セキュア ゲートウェイに不可欠な要素で、認証をスムーズに行えるようにします。この拡張機能は、セキュア ゲートウェイのすべてのユーザーにインストールします。拡張機能のデプロイについては、アプリや拡張機能を表示、設定するをご覧ください。Chrome Enterprise Premium 拡張機能をインストールする手順は次のとおりです。
- Google 管理コンソールに移動します。
- [Chrome ブラウザ] > [アプリと拡張機能] をクリックします。
- [ユーザーとブラウザ] タブをクリックします。
- Chrome 拡張機能を追加するには、[+] ボタンをクリックします。
次の拡張機能を検索し、組織部門またはグループ内のすべてのユーザーにインストールを必須にします。
ekajlcmdfcigmdbphhifahdfjbkciflj
インストールした拡張機能をクリックし、[拡張機能のポリシー] フィールドに次の JSON 値を入力します。
{ "securityGateway": { "Value": { "authentication": {}, "context": { "resource": "projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID" } } } }
次のように置き換えます。
PROJECT_ID: セキュリティ ゲートウェイが構成されているプロジェクトの IDSECURITY_GATEWAY_ID: セキュリティ ゲートウェイの ID
構成を保存するには、[保存] をクリックします。
エンドユーザー エクスペリエンス
設定が完了すると、保護された SaaS アプリケーションにアクセスしたエンドユーザーは、アプリケーションに適用されたアクセス ポリシーに基づいてアクセスが許可または拒否されます。
Chrome でアプリケーションにアクセスする
トラフィックが安全なゲートウェイを経由するよう制御するには、Chrome Enterprise Premium 拡張機能が必要です。この拡張機能は、ユーザーとセキュア ゲートウェイ間の認証を処理します。この拡張機能はドメイン ポリシーによって自動的にインストールされます。
ユーザーが構成した SaaS アプリケーションにアクセスすると、トラフィックがセキュア ゲートウェイを経由し、アクセス ポリシーを満たしているかどうかがここでチェックされます。ユーザーがアクセス ポリシーのチェックに合格すると、アプリケーションへのアクセス権が付与されます。
アプリケーションへのブラウザ アクセスが認証ポリシーによって拒否された場合、ユーザーに Access denied メッセージが表示されます。