時間枠に基づいたリソースへのアクセスの制限
ポリシーで時間ベースの変数を使用すると、ポリシーで付与されるアクセス権を特定の時間枠のみに制限できます。
この機能によって、リソースに対するアクションを特定の時間に制限できます。たとえば、指定した日付までのアクセスのみを許可するポリシーを作成できます。このようなポリシーは、会社が契約社員を採用し、その契約終了日を過ぎた後はアクセスを許可しない場合に役立ちます。または、営業時間中(月曜日から金曜日の午前9:00から午後5:00など)にのみリソースへのアクセスを許可できます。この制限により、悪意のあるアクターが、気づかれない可能性が高い状態で変更を行うリスクを軽減できます。
時間に基づいてアクセスの範囲を設定するために使用できる変数は:
request.utc-timestamp
request.utc-timestamp.month-of-year
request.utc-timestamp.day-of-month
request.utc-timestamp.day-of-week
request.utc-timestamp.time-of-day
これらの変数の使用方法は、後続の項で詳しく説明します。
時間ベース変数で作業するための情報
時間変数は、ISO 8601フォーマット(YYYY-MM-DDThh:mm:ssZ)を使用して指定する必要があります。このフォーマットの例は:
- 秒付きの日時: '2020-04-01T15:00:00Z'
- 分付きの日時: '2020-04-01T05:00Z'
- 日付のみ: '2020-04-01Z'
- 時間のみ: '05:00:00'
時間は秒単位まで指定できますが、リクエストのタイムスタンプとIAMサービスによってリクエストが評価される時間との間には5分の時間差を許容する必要があります。この時間差はいくつかの要因によって引き起こされる可能性があるため、時間ベースのポリシーを計画して実装するときには、この潜在的な差異に注意してください。
指定する時間は、協定世界時(UTC)として評価されます。つまり、ポリシーが評価されるタイム・ゾーンの正しいUTC時間を計算する必要があります。たとえば、変数の値として太平洋標準時の午前9:00を指定するには、「17:00:00」と入力します。ロケールがサマータイムに参加している場合、時間変更が有効になる特定の時間を参照しているポリシーはすべて更新する必要があります。
各時間ベース変数の詳細
各変数の使用方法は、次の項で説明します:
説明: リクエストが認可のために受信された時間。特定の日時タイムスタンプの前または後にのみアクセスを許可するポリシーを記述できます。タイムスタンプは、ISO 8601フォーマット(YYYY-MM-DDThh:mm:ssZ)に準拠し、協定世界時(UTC)である必要があります。
サポートされる演算子: before | after
許可される値: ISO 8601フォーマット(YYYY-MM-DDThh:mm:ssZ)の協定世界時(UTC)タイムスタンプ
- '2020-04-01T00:00:00Z'
- '2020-04-01T00:00Z'
ポリシーの例: グループContractorsが特定の日付までinstance-family
リソースにアクセスできるようにします:
Allow group Contractors to manage instance-family in tenancy where request.utc-timestamp before '2022-01-01T00:00Z'
ポリシーによってグループContractorsに付与されたアクセス権は、2022年1月1日午前12:00 (UTC)に期限切れになります。
説明: リクエストが認可のために受信された該当年の月。特定の月の間のみアクセスを許可するポリシーを記述できます。
サポートされる演算子: = | != | in
許可される値: 数値の月(ISO 8601に一致)
値の例: '1'、'2'、'3'、... '12'
ポリシーの例: グループSummerInternsが6月、7月、8月の間のみinstance-family
リソースにアクセスできるようにします:
Allow group SummerInterns to manage instance-family in tenancy where ANY {request.utc-timestamp.month-of-year in ('6', '7', '8')}
ポリシーによってグループSummerInternsに付与されたアクセス権は、該当年の6月、7月、8月の間のみ有効です。
説明: リクエストが認可のために受信された該当月の日。該当月の特定の日のみアクセスを許可するポリシーを記述できます。1日の期間はUTCに基づいて計算されることに注意してください。たとえば、米国フロリダ州マイアミにいる場合に、「1」と入力して月の最初の日を示すとします。2月について、ポリシーは、2月1日の午前12:00時から午後11:59 (UTC)まで有効になりますが、これはマイアミでは1月31日の午後7:00から2月1日の午後6:59までに相当します。
サポートされる演算子: = | != | in
許可される値: 月の数値の日
値の例: '1'、'2'、'3'、... '31'
ポリシーの例: グループComplianceAuditorsが月の最初の日のみall-resources
を読み取ることができるようにします。
Allow group ComplianceAuditors to read all-resources in tenancy where request.utc-timestamp.day-of-month = '1'
ポリシーによってグループComplianceAuditorsに付与されたアクセス権は、各月の最初の日のみ有効です(1日はUTC時間で定義されます)。
説明: リクエストが認可のために受信された曜日。特定の曜日のみアクセスを許可するポリシーを記述できます。1日の期間はUTCに基づいて計算されることに注意してください。たとえば、米国フロリダ州マイアミにいる場合に、「monday」と入力するとします。ポリシーは、月曜日の午前12:00時から午後11:59 (UTC)まで有効になりますが、これはマイアミでは日曜日の午後7:00 (EST)から月曜日の午後6:59までに相当します。
サポートされる演算子: = | != | in
許可される値: 英語の曜日名
値の例: 'Monday'、'Tuesday'、'Wednesday'など
ポリシーの例: グループWorkWeekが会社の週作業日の間のみinstance-family
を管理できるようにします。
Allow group WorkWeek to manage instance-family where ANY {request.utc-timestamp.day-of-week in ('monday', 'tuesday', 'wednesday', 'thursday', 'friday')}
ポリシーによってグループWorkWeekに付与されたアクセス権は、指定された日のみ有効です(1日はUTC時間で定義されます)。
説明: リクエストが認可のために受信された時刻。1日の特定の時間範囲のみアクセスを許可するポリシーを記述できます。時刻はUTCに基づいて計算されることに注意してください。サマータイムを実施しているタイム・ゾーンにいる場合は、時間が変更されたときにポリシーを更新する必要があります。
サポートされる演算子: between
許可される値: ISO 8601フォーマット(hh:mm:ssZ)のUTC時間間隔
値の例: '01:00:00Z' AND '2:01:00Z'
ポリシーの例: グループDayShiftが太平洋標準時(PST)の午前9:00と午後5:00の間にインスタンスおよび関連リソースを管理できるようにします。
時間はUTCに変換されることに注意してください:
Allow group DayShift to manage instance-family where request.utc-timestamp.time-of-day between '17:00:00Z' and '01:00:00Z'
グループNightShiftが午後5:00と午前9:00 (PST)の間にインスタンスおよび関連リソースを管理できるようにします。
Allow group NightShift to manage instance-family where request.utc-timestamp.time-of-day between '01:00:00Z' and '17:00:00Z'
これらの両方の例では、現在の時間が計算されてテストされ、指定された範囲内にあるかどうかが確認されます(どの日の時間であるかは無視されます)。