カスタム アクセスレベルの仕様

このページでは、カスタム アクセスレベルの Common Expression Language(CEL)式のビルドに使用されるオブジェクトと属性について詳しく説明します。例を紹介します。

CEL の詳細については、CEL 言語の定義をご覧ください。

このページには、次のセクションが含まれています。

オブジェクト

Access Context Manager には、アクセスレベル属性を含む 4 つのオブジェクトを提供します。

オブジェクト
origin リクエストの送信元を識別する属性が含まれます。
request.auth リクエストの認証と認証の側面を識別する属性が含まれます。
levels 他のアクセスレベルの依存関係を定義する属性が含まれます。
device リクエストの送信元のデバイスを記述する属性が含まれます。

origin の属性

このセクションでは、origin オブジェクトでサポートされる属性について表示します。

属性
ip
文字列
説明

リクエストの送信元 IP アドレス。

例:


origin.ip == "203.0.113.24"

region_code
文字列
説明

リクエスト送信元の国またはリージョンの ISO 3166-1 alpha-2 コード

例:


origin.region_code == "GB"
origin.region_code in ["US", "FR", "JP"]

request.auth の属性

このセクションでは、request.auth オブジェクトでサポートされる属性について表示します。

属性
principal
文字列、リスト(文字列)
説明

リクエストを発行したユーザーの一意の ID。

request.auth.principal の値は、1 つ以上の固有のユーザー ID である必要があります。UUID は Admin SDK Directory API を使用して取得できます。

値は次の形式にする必要があります。 accounts.google.com/UUID

ここで、UUID はユーザーの UUID です。

例:


request.auth.principal == "accounts.google.com/1134924314572461055"
request.auth.principal in ["accounts.google.com/1134924314572461055", "accounts.google.com/3134824314572461115"]

claims.crd_str.pwd
ブール値
説明

ユーザーはパスワードで認証されます。

例:


request.auth.claims.crd_str.pwd == true

claims.crd_str.push
ブール値
説明

モバイル デバイスへのプッシュ通知でユーザーは認証されます。

例:


request.auth.claims.crd_str.push == true

claims.crd_str.sms
ブール値
説明

ユーザーは、SMS または通話に送信されたコードを使用して認証されます。

例:


request.auth.claims.crd_str.sms == true

claims.crd_str.swk
ブール値
説明

2 段階認証プロセスには、スマートフォンなどのソフトウェアキーをセキュリティ キーとして使用します。

例:


request.auth.claims.crd_str.swk == true

claims.crd_str.hwk
ブール値
説明

2SV には Google Titan キーなどのハードウェア キーを使用します。

例:


request.auth.claims.crd_str.hwk == true

claims.crd_str.otp
ブール値
説明

ユーザーは、ワンタイム パスワード方式(Google 認証システムとバックアップ コード)で認証されます。

例:


request.auth.claims.crd_str.otp == true

claims.crd_str.mfa
ブール値
説明

ユーザーは、このテーブル(pwdを除く)のメソッドのいずれかで認証されます。

例:


request.auth.claims.crd_str.mfa == true

認証情報の安全度のポリシーの詳細については、認証情報の安全度のポリシーを構成するをご覧ください。

levels 属性

このセクションでは、levels オブジェクトでサポートされる属性について表示します。

属性
level name
ブール値
説明

level name は、既存のアクセスレベルの名前に対応します。

使用する場合は、カスタム アクセスレベルの他の要件に加えて、指定したアクセスレベルの条件も満たしている必要があります。

例:


levels.allow_corp_ips

ここで、allow_corp_ips はアクセスレベルの名前です。

device 属性

このセクションでは、device オブジェクトでサポートされる属性について表示します。

属性
encryption_status
enum
説明

デバイスの暗号化ステータスを示します。

列挙値:


enum DeviceEncryptionStatus {
  // The encryption status of the device is not specified or not known.
  ENCRYPTION_UNSPECIFIED == 0;
  // The device does not support encryption.
  ENCRYPTION_UNSUPPORTED == 1;
  // The device supports encryption, but is currently unencrypted.
  UNENCRYPTED == 2;
  // The device is encrypted.
  ENCRYPTED == 3;
}

例:


device.encryption_status == DeviceEncryptionStatus.ENCRYPTED

is_admin_approved_device
ブール値
説明

デバイスがドメイン管理者によって承認されているかどうかを示します。

例:


device.is_admin_approved_device == true

is_corp_owned_device
ブール値
説明

組織がデバイスを所有しているかどうかを示します。

例:


device.is_corp_owned_device == true

is_secured_with_screenlock
ブール値
説明

デバイスで画面ロック機能が有効になっているかどうかを示します。

例:


device.is_secured_with_screenlock == true

os_type
enum
説明

デバイスが使用しているオペレーティング システムを特定します。

列挙値:


enum OsType {
  // The operating system of the device is not specified or not known.
  OS_UNSPECIFIED == 0;
  // A desktop Mac operating system.
  DESKTOP_MAC == 1;
  // A desktop Windows operating system.
  DESKTOP_WINDOWS == 2;
  // A desktop Linux operating system.
  DESKTOP_LINUX == 3;
  // An Android operating system.
  ANDROID == 4 ;
  // An iOS operating system.
  IOS == 5;
  // A desktop ChromeOS operating system.
  DESKTOP_CHROME_OS == 6;
}

例:


device.os_type == OsType.DESKTOP_MAC
device.os_type != OsType.OS_UNSPECIFIED

vendors
map<string, Vendor> vendors;
説明

vendors オブジェクトは、サードパーティのセキュリティ ベンダーやエンドポイント管理ベンダーが提供するデータへのアクセスに使用されます。各ベンダーは、is_compliant_deviceis_managed_devicedevice_health_score の 3 つの共有トップレベル属性を入力できます。

さらに、ベンダーは、data 属性を使用して参照される独自のキーと値を提供できます。data 属性で使用可能なキーはベンダーごとに異なります。ポリシー エクスプレッションの Key-Value を比較する際は、一貫性があることを確認してください。たとえば、Key-Value が文字列またはブール値になると予想される場合は、対応するポリシー エクスプレッションの文字列またはブール値と比較してください。値が整数の場合は、ポリシー エクスプレッションで 2 倍の数値と比較する必要があります。

例:


device.vendors["some_vendor"].is_compliant_device == true


device.vendors["some_vendor"].is_managed_device == true


device.vendors["some_vendor"].device_health_score == DeviceHealthScore.VERY_GOOD


device.vendors["some_vendor"].data["is_device_compromised"] == true


device.vendors["some_vendor"].data["some_num"] == 1.0

verified_chrome_os
ブール値
説明

検証済みの Chrome OS のデバイスからリクエストが送られたものかどうかを示します。

例:


device.verified_chrome_os == true

chrome.management_state
文字列
説明

ブラウザはブラウザレベルまたはプロファイル レベルで管理されているか、企業の正しいドメインの元で管理されていますか。

ブラウザが一元的に管理、プッシュされており、管理対象ブラウザまたはプロファイルのドメインがサーバー側の想定ドメインと一致すると、ブラウザは管理対象とみなされます。

例:


device.chrome.management_state == ChromeManagementState.CHROME_MANAGEMENT_STATE_MANAGED_BY_OTHER_DOMAIN | 
ChromeManagementState.CHROME_MANAGEMENT_STATE_BROWSER_MANAGED |
ChromeManagementState.CHROME_MANAGEMENT_STATE_PROFILE_MANAGED |
ChromeManagementState.CHROME_MANAGEMENT_STATE_UNMANAGED

chrome.versionAtLeast
文字列
説明

ブラウザが特定の最小バージョン以上ですか。

例:


device.chrome.versionAtLeast("88.0.4321.44")

chrome.is_realtime_url_check_enabled
ブール値
説明

リアルタイム URL チェック コネクタが有効になっていますか。

例:


device.chrome.is_realtime_url_check_enabled == true | false

chrome.is_file_upload_analysis_enabled
ブール値
説明

ファイル アップロード分析コネクタが有効になっていますか。

例:


device.chrome.is_file_upload_analysis_enabled == true | false

chrome.is_file_download_analysis_enabled
ブール値
説明

ファイル ダウンロード分析コネクタが有効になっていますか。

例:


device.chrome.is_file_download_analysis_enabled == true | false

chrome.is_bulk_data_entry_analysis_enabled
ブール値
説明

一括テキスト(貼り付け)分析コネクタが有効になっていますか。

例:


device.chrome.is_bulk_data_entry_analysis_enabled == true | false

chrome.is_security_event_analysis_enabled
ブール値
説明

セキュリティ イベント レポート コネクタが有効になっていますか。

例:


device.chrome.is_security_event_analysis_enabled == true | false

関数

Access Context Manager は、カスタム アクセスレベルの CEL 式で次の関数が使用できます。

関数
inIpRange(address, [subnets])
(string, list(string)) -< boolean
説明

IP アドレスが指定したサブネットの 1 つに属するかを確認します。

例:


inIpRange(origin.ip, ["192.0.2.0/24", "198.51.100.0/24", "203.0.113.0/24"]) == true

device.versionAtLeast(minVersion)
DeviceType.(string)-> boolean
説明

デバイスのオペレーティング システムが少なくとも特定のバージョンかどうかを確認します。この関数は、device.os_type 属性と一緒に使用することをおすすめします。

例:


device.versionAtLeast("10.0") == true

certificateBindingState(origin, device)
(Peer, DeviceType) -> integer
説明

発信元に関連付けられたクライアント証明書がデバイスと一致し、状態を報告するかを確認します。

関数から返される状態は、次のいずれかになります。

  • CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE
  • CertificateBindingState.CERT_NOT_MATCHES_EXISTING_DEVICE
  • CertificateBindingState.CERT_STATE_UNKNOWN

例:


certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE

CEL 式の例

このセクションでは、カスタム アクセスレベルの作成に使用される CEL 式の例について説明します。

例 1

device.encryption_status == DeviceEncryptionStatus.ENCRYPTED && (origin.region_code in ["US"] || device.is_admin_approved_device)

この例は、リクエストを許可するために次の条件を満たす必要があるアクセスレベルを表します。

  • リクエストの送信元デバイスが暗号化されている。

  • 次のうち 1 つ以上に該当する。

    • リクエストの送信元は米国である。

    • リクエストの送信元のデバイスは、ドメイン管理者によって承認されています。

例 2

(device.os_type == OsType.DESKTOP_WINDOWS && device.is_corp_owned_device) || (device.os_type == OsType.DESKTOP_MAC && device.is_admin_approved_device && device.versionAtLeast("10.11.0"))

この例は、リクエストを許可するために次の条件を満たす必要があるアクセスレベルを表します。

  • 次のうち 1 つに該当する。

    • リクエストの送信元のデバイスは、デスクトップ Windows オペレーティング システムを使用し、組織が所有している。

    • リクエストの送信元のデバイスは、デスクトップ Mac オペレーティング システムを使用し、ドメイン管理者によって承認され、MacOS 10.11 以降を使用している。

例 3

(certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE)

この例は、リクエストを許可するために次の条件を満たす必要があるアクセスレベルを表します。

  • certificateBindingState 拡張関数は、要求時に提示された証明書が、デバイスがエンドポイント検証に登録されたときに登録されたデバイス証明書の1つと一致することを判別する。