시간 및 일 액세스 조건 구성

Access Context Manager 날짜 및 시간 제한 기능은 날짜 및 시간을 기준으로 액세스 제어를 설정할 수 있는 기능을 기업에 제공합니다.

제로 트러스트 액세스를 평가할 때는 리소스에 대한 사용자 액세스를 특정 일자 및 시간으로 제한해야 하는 경우가 많습니다. 예를 들어 교대 근무자가 해당 교대 근무 시간 중에만 회사 리소스에 액세스하도록 허용하거나 하루 중 특정 시간 사이에 사용자에게 일시적인 액세스 권한을 부여할 수 있습니다.

시간 및 일 액세스 수준 조건을 적용하려면 다음 테이블에 나열된 함수를 사용합니다. 함수 형식은 function(timezone)입니다.

timezone을 UTC, UTC 기준의 명시적 시간 및 분을 나타내는 고정 시간대, 긴 timezone 이름(예: Europe/Paris, CET, US/Central)으로 지정할 수 있습니다. 전체 목록은 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은 월의 1일이고 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은 자정이고 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 UTC 자정으로 정규화된 날짜를 나타내는 타임스탬프를 반환합니다.

UTC 기준 현재 시간입니다.

request.time.date()
date(tz string) 시간대 문자열 <tz>를 기준으로 자정으로 정규화된 날짜를 나타내는 타임스탬프를 반환합니다.

태평양 표준시 기준 현재 시간입니다.

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

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

timeOfDay 타임스탬프와 연결된 google.type.TimeOfDay를 UTC로 반환합니다.

UTC 기준 현재 시간입니다(예: '09:30:00').

request.time.timeOfDay()
timeOfDay(tz string) 시간대 영역 <tz>를 기준으로 타임스탬프와 연결된 google.type.TimeOfDay를 반환합니다.

태평양 표준시 기준 현재 시간입니다(예: '09:30:00').

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

(타임스탬프용)

타임스탬프가 '시작'(포함) 및 '중지'(제외) 사이에 있는 경우 타임스탬프는 True를 반환합니다.

'시작' 및 '중지'는 type.Timestamp 또는 문자열일 수 있으며 type.Timestamp로 변환됩니다.

2020년 1월 10일 00:00(포함)에서 2020년 1월 11일 00:00(제외) 사이의 현재 타임스탬프가 PST 기준인가요?

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로 변환됩니다.

현재 시간이 태평양 표준시 기준 오전 9시 30분(포함)부터 오후 05시 30분(제외)까지입니까?

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

다음 표에서는 시간 및 날짜 제한을 사용하는 방법에 대한 예시를 보여줍니다.

정책 예시 표현식
교대 근무자가 7월 4일만 제외하고 월요일부터 금요일, 오전 9시부터 오후 5시까지 리소스에 액세스하도록 허용합니다.

옵션 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시부터 자정까지 리소스에 대해 일시적으로 액세스를 허용합니다.

옵션 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')