日時アクセス条件の構成

Access Context Manager の日時制限機能を使用すると、企業は日時に基づくアクセス制御を設定できます。

ゼロトラスト アクセスを評価する際は、多くの場合、リソースへのユーザーのアクセスを特定の日時に制限する必要があります。たとえば、シフト勤務者に対して、勤務時間中にのみ社内リソースへのアクセスを許可する場合や、ユーザーに対して、1 日の中の特定の時間帯に一時的なアクセス権を付与する場合があります。

日時アクセスレベル条件を適用するには、次の表に示す関数を使用します。関数の形式は function(timezone) です。

timezone は、UTC として、または UTC からの明示的な時間や分オフセットである固定のタイムゾーン、または Europe/ParisCETUS/Central などの長い timezone 名として指定できます。詳細な一覧については、Common Express Language 定義のタイムゾーンのセクションをご覧ください。

「タイムゾーン」を指定しない場合、式はデフォルトで UTC です。

機能 説明
getFullYear 現在の年を表す数値(2020 など)を取得します。

2020 年ですか?

request.time.getFullYear("America/Los_Angeles") == 2020
getMonth 月を取得します。月の値の範囲は 0~11 です。0 は 1 月、11 は 12 月です。

1 月ですか?

request.time.getMonth("America/Los_Angeles") == 1
getDate 日付を取得します。日付値の範囲は 1 ~ 31 です。1 は 1 日、31 は 31 日です。

月の初日ですか?

request.time.getDate("America/Los_Angeles") == 1
getDayOfMonth 月の経過した日数を取得します。日数の値の範囲は 0~30 です。ここで、0 は月の初日で、30 は月の 31 日目です。

月の初日ですか?

request.time.getDayOfMonth("America/Los_Angeles") == 0
getDayOfWeek 曜日を取得します。日の値の範囲は 0~6 です。0 は日曜日、6 は土曜日です。

月曜日ですか?

request.time.getDayOfWeek("America/Los_Angeles") == 1
getDayOfYear 年の経過した日数を取得します。日数の値の範囲は 0~365 です。ここで、0 は年の初日で、365 は年の 366 日目です。

年の初日ですか?

request.time.getDayOfYear("America/Los_Angeles") == 0
getHours 時間を取得します。時間の値の範囲は 0~23 です。ここで、0 は午前 0 時、23 は午後 11 時です。

午後 7 時ですか?

request.time.getHours("America/Los_Angeles") == 19
getMinutes 分を取得します。分の値の範囲は、0~59 です。0 は最初の分、59 は最後の分です。

午後 7 時 30 分ですか?

request.time.getHours("America/Los_Angeles") == 19 && request.time.getMinutes("America/Los_Angeles") == 30
date 午前 0 時(UTC)に正規化された日付のタイムスタンプを返します。

現在の時刻(UTC)。

request.time.date()
date(tz string) TimeZone 文字列 <tz> に相対的な午前 0 時に正規化された日付のタイムスタンプを返します。

太平洋時間の現在時刻。

request.time.date('America/Los_Angeles')

request.time.date('08:00')

timeOfDay タイムスタンプ(UTC)に関連付けられている google.type.TimeOfDay を返します。

UTC での現在の時刻(「09:30:00」など)。

request.time.timeOfDay()
timeOfDay(tz string) タイムスタンプに関連付けられ、TimeZone 文字列 <tz> に相対的な google.type.TimeOfDay を返します。

太平洋時間の現在時刻(「09:30:00」など)。

request.time.timeOfDay('America/Los_Angeles')
between(start, stop)

(タイムスタンプ用)

特定のタイムスタンプについて、タイムスタンプが「開始」時間(包括的)から「停止」時間(独占的)の間の場合、True を返します。

「開始」と「停止」には type.Timestamp または文字列を指定できます。これらは type.Timestamp に変換されます。

現在のタイムスタンプは PST で 2020 年 1 月 10 日 00:00(包括的)から 2020 年 1 月 11 日 00:00(独占的)までのものですか?

request.time.date('08:00') .between('2020-10-01T00:00:00+08:00', '2020-10-01T00:00:00+08:00')
between(start, stop string)

(TimeOfDay の場合)

指定した TimeOfDay について、時刻が「開始」(包括的)と「停止」(独占的)の間の場合に True を返します。

「開始」と「停止」には type.TimeOfDay または文字列を指定できます。これらは type.TimeOfDay に変換されます。

太平洋標準時の現在時刻は、午前 09 時 30 分(包括的)から午後 5 時 30 分まで(独占的)の間ですか?

request.time.timeOfDay('America/Los_Angeles').between('09:30:00', '17:30:00')

次の表は、日時制限の使用方法の例を示したものです。

ポリシーの例
シフト勤務者に対して、月曜日から金曜日の午前 9 時から午後 5 時までの間はリソースへのアクセスを許可する(7 月 4 日を除く)

オプション 1:

request.time.getDayOfWeek("America/Los_Angeles") >= 1 && request.time.getDayOfWeek("America/Los_Angeles") <= 5 && request.time.getHours("America/Los_Angeles") >= 9 && request.time.getHours("America/Los_Angeles") <= 17 && !(request.time.getMonth("America/Los_Angeles") == 6 && request.time.getDayOfMonth("America/Los_Angeles") == 3)

オプション 2:

request.time.getDayOfWeek("America/Los_Angeles") >= 1 && request.time.getDayOfWeek("America/Los_Angeles") <= 5 && !(request.time.getMonth("America/Los_Angeles") == 6 && request.time.getDayOfMonth("America/Los_Angeles") == 3) && request.time.timeOfDay("America/Los_Angeles").between('09:30:00', '17:00:00')

2020 年 3 月 1 日午後 10 時から深夜 0 時まで、リソースへの一時的なアクセスを許可する

オプション 1:

request.time.getFullYear("America/Los_Angeles") == 2020 && request.time.getMonth("America/Los_Angeles") == 2 && request.time.getDayOfMonth("America/Los_Angeles") == 0 && request.time.getHours("America/Los_Angeles") >= 22 && request.time.getHours("America/Los_Angeles") <= 23

オプション 2:

request.time.between('2020-03-01T23:00:00+08:00', '2020-03-02T00:00:00+08:00')

以下に、いくつかの関数を使用して特定の時間範囲を取得する式の例を示します。

営業時間の範囲を指定する
日時形式は「HH:MM:SS」で、RFC 3339 標準に準拠しています。

request.time.timeOfDay('America/Los_Angeles').between('09:30:00', '17:30:00')
request.time.date('America/Los_Angeles')
    .between('01-10-2020T00:00:00+08:00', '01-11-2020T00:00:00-07:00')

月の特定の日、最初の週
(別のタイムゾーン形式をサポート)

request.time.getDayOfMonth('America/Los_Angeles') < 7

日付範囲を年単位で指定する
たとえば、四半期レポートの場合などです。

request.time.date('Asia/Hong_Kong').between(
    request.time.getFullYear('08:00') + '-12-15T00:00:00+08:00',
    request.time.getFullYear('08:00')+1 + '-01-01T00:00:00+08:00')