API によるアクセスポリシーの管理
アクセス・ポリシーは、アクセスの決定を判別するために評価される一連のルールおよび条件です。 カスタマイズしたアクセス・ポリシーを作成できます。 すべてのカスタマイズしたアクセス・ポリシーが、アプリケーション構成でオプションとして表示されます。
このタスクについて
即時に使用できるように、いくつかのデフォルト・アクセス・ポリシーが提供されていますが、これらは変更できません。 テナントは、ニーズに従って、カスタマイズしたアクセス・ポリシーを追加できます。
- ルールは最初に一致したものが評価されます。 ルール内のすべての条件の一致が true と評価されると、ルールの結果が評価決定として返されます。 それ以上の処理は行われません。
- オプション・パラメーター
alwaysRun: trueを個々のルールに追加できます。 このパラメーターを使用すると、最初に一致したルール・セットに加えて、このルールが評価されます。 最初の一致の結果とalwaysRunパラメーターが組み合わせられ、ポリシーの結果として最も制限の厳しいアクションが適用されます。 1 つのポリシーに複数のalwaysRunルールを追加できます。 - ポリシーが条件に特定のサブスクリプション (デバイス管理など) を求めている場合に、現時点でテナントにそのサブスクリプションに対する資格がないときは、そのポリシーがスキップされます。 多要素認証 (MFA) の決定が返されます。
- ルールが MFA に特定のサブスクリプションを求めている場合に、現時点でテナントにそのサブスクリプションに対する資格がないときは、評価された MFA 決定が拒否に変更されます。 この変更により、無条件のアクセスが不可能となり、アプリケーションが保護されます。
ポリシー・エディターを使用して、ポリシーの作成や変更を行うことができます。 「アクセスポリシーの管理」 を参照してください。
一部の条件をポリシー・エディターで追加できない場合があります。 その場合は、API を使用して既存のポリシーを変更するか、該当する条件を指定して新しいアクセス・ポリシーを作成することができます。
アクセス・ポリシーが作成または更新されるときに、構文の検証が実行されます。
{
"name": "policy_name",
"description": "Description of the policy",
"schemaVersion": "urn:access:policy:4.0:schema",
"rules": [
{
"name": "allow_with_conditions",
"id": "1",
"conditions": {
"contextAttributes": {
"attributes": [
{
"name": "attrName",
"values": [
"value1",
"value2"
],
"opCode": "EQ"
}
]
},
"subjectAttributes": {
"attributes": [
{
"name": "realmName",
"values": [
"cloudIdentityRealm",
"www.ibm.com"
],
"opCode": "IN"
},
{
"name": "customAttr1",
"values": [
"val1"
],
"opCode": "NEQ"
}
]
},
"timeAttributes": {
"attributes": [
{
"name": "timezone",
"opCode": "EQ",
"values": [
"UTC Offset or GMT Offset"
]
},
{
"name": "startDate",
"opCode": "EQ",
"values": [
"YYYY-MM-DD HH:mm:ss"
]
},
{
"name": "endDate",
"opCode": "EQ",
"values": [
"YYYY-MM-DD HH:mm:ss"
]
},
{
"name": "Monday",
"opCode": "EQ",
"values": [
"hh:mm-hh:mm"
]
},
{
"name": "Tuesday",
"opCode": "EQ",
"values": [
"hh:mm-hh:mm"
]
}
]
},
"ipAddress": {
"opCode": "MATCH",
"values": [
"<ip_address>",
"<ip_address_range_start> - <ip_address_range_end>",
"<ip_address/subnet>"
]
},
"location": {
"attributes": [
{
"values": [
"3-Letter-ISO"
],
"name": "country",
"opCode": "IN"
}
]
}
"location": {
"attributes": [
{
"values": [
"<city>"
],
"name": "city",
"opCode": "IN"
}
]
}
"geoLocation": {
"enabled": "true"
},
"trusteer": {
"enabled": "true"
}
},
"result": {
"extendedAction": {
"action": "ACTION_ALLOW"
},
"authnMethods": []
}
},
{
"name": "Authentication factor validity",
"id": "2",
“alwaysRun”: true,
"conditions": {
"factorLifetimeAttributes": {
"attributes": [
{
"name": "anyFactor",
"opCode": "EQ",
"values": [
"120"
]
},
{
"name": "reauthPerDevice",
"opCode": "EQ",
"values": [
"enabled"
]
}
]
}
},
"result": {
"extendedAction": {
"action": "ACTION_MFA_OVERRIDE"
}
}
},
{
"name": "mfa_once_per_session_device_conditions",
"id": "3",
"contextAttributes": {
"attributes": [
{
"name": "devicePlatform",
"values": [
"IOS",
"ANDROID",
"OTHER_MOBILE",
"MACOS",
"WINDOWS",
"OTHER_DESKTOP"
],
"opCode": "IN"
},
{
"name": "deviceCompliance",
"values": [
"COMPLIANT",
"NONCOMPLIANT",
"UNKNOWN"
],
"opCode": "IN"
}
]
},
"result": {
"extendedAction": {
"action": "ACTION_MFA_PER_SESSION"
},
"authnMethods": [
"urn:ibm:security:authentication:asf:macotp"
]
}
},
{
"name": "deny_otherwise",
"id": "100",
"conditions": {},
"result": {
"extendedAction": {
"action": "ACTION_DENY"
},
"authnMethods": []
}
}
]
}
- 各ルールは、以下のプロパティーで構成されます。
- name
- ルールの名前。
- id
- イベント・データおよびレポートで使用されるルールの固有 ID。
- conditions
- 1 つのルールに複数の条件を指定できます。 ルールに一致して結果が適用されるためには、ルール内のすべての条件が true に評価されなければなりません。 デフォルトのルールには空の条件が 1 つ含まれています。
- 条件には、以下のプロパティーが含まれます。
- contextAttributes
- アクセス・ポリシーが実行されたフローのコンテキスト属性。 これには、デバイス管理、OpenID Connect、HTTP 要求の属性などがあります。
- subjectAttributes
- 認証済みユーザー・サブジェクトに関連付けられているログイン・セッション属性。
- factorLifetimeAttributes
- 特定の認証要素または認証方式に有効期間を関連付けます。
- timeAttributes
- 時刻ベースのアクセス制御を可能にする時刻属性。
- ipAddress
- 個人、範囲、またはサブネットを基準とした許可リストとブロック・リストを有効にする IP アドレス条件。
- location
- ユーザーの IP アドレスから解決される国または市区町村。 国には、国名または以下の ISO 規格に基づく 3 文字の国別コードのコンマ区切りリストが含まれている必要があります。 1 つの国または 3 文字の国別コードが許容されます。
市区町村には、市区町村名のコンマ区切りリストが含まれている必要があります。 1 つの市区町村が許容されます。
- geoLocation
- アクセスの決定が検証されたロケーション。 デフォルトの設定は、最近検証された 5 つのロケーションが対象です。 この条件プロパティーは、
enabled(true) またはdisabled(false) のいずれかです。 - trusteer
- IBM Security Trusteer で、ユーザーの新しいデバイスの初回アクセスが検出されます。
- 属性には、以下のプロパティーが含まれます。
- name
- 属性の名前。
- values
- 属性の値。
- opCode
- 演算子。
- 属性値を評価するための演算子。
- EQ
- すべての値が存在している。
- NEQ
- 値がいずれも存在していない。
- IN
- 1 つ以上の値が存在している。
- MATCH
- 一致する IP アドレス、範囲、またはサブネットを対象とする ipAddress 条件 opCode。
- NOMATCH
- 一致しない IP アドレス、範囲、またはサブネットを対象とする ipAddress 条件 opCode。
- 結果には、以下のプロパティーが含まれます。
- Action
- 条件が満たされている場合にトリガーするアクションを指定します。 有効値は次のとおりです。
- ACTION_ALLOW
- ACTION_MFA_ALWAYS - アクセス・ポリシーの評価中に、ルールが一致するたびに MFA を実行します。
- ACTION_MFA_PER_SESSION - 認証されたセッションごとに MFA が 1 回実行され、既に完了していれば許可されます。
- ACTION_DENY
- authnMethods
- アクションが多要素認証 (MFA) である場合に指定できる認証メカニズムを指定します。urn:ibm:security:authentication:asf:macotp - ユーザーは、完了できるすべてのメカニズム、または以下の 1 つ以上の要素を選択できます。
emailotp- メール・ワンタイム・パスワードsmsotp- SMS ワンタイム・パスワードtotp- 時刻ベースのワンタイム・パスワード (オーセンティケーター・アプリ)signatures- IBM® Verify アプリのプッシュ通知passkey- パスキー 認証アプリvoiceotp- ユーザーの登録済み電話番号に送信される、音声によるワンタイム・パスワード。anyFactor–urn:ibm:security:authentication:asf:macotpの別名。 このメカニズムは、特にfactorLifetime条件で使用され、ユーザーが完了した有効な認証メカニズムを表します。
この条件は、特定の認証要素または認証方式に有効期間を関連付けます。 有効期間は、ユーザー・プロファイルまたはユーザーのデバイスに関連付けることができます。
- ユーザーに対して 1 日に 1 回だけ MFA を実施したい組織の場合は、18 時間の再認証を構成できます。
- ユーザーに対して営業週ごとに 1 回だけ MFA を実施したい組織の場合は、6 日ごとにポリシーを構成できます。注: この
reauthPerDeviceオプションを有効にすると、「既知」ではないデバイスに対しては、ユーザーに多要素認証(MFA)の入力が求められます。 例えば、ユーザーは別のブラウザー (Edge の代わりに Chrome) から、あるいは別の物理デバイスから認証を行うとします。プライベート・ブラウズ・モードを使用している場合、新規セッションごとに、最初のアクセスに対して MFA チャレンジが生成されます。
factorLifeTimeAttributes には、以下の必須属性が含まれています。- name
- 有効な
authnMethods属性またはanyFactor属性のリスト。 - values
authnMethodの有効期間 (秒単位)。- opCode
- EQ。
- name
reauthPerDevice.- values
- enabled または disabled。
- opCode
- EQ。
コンテキスト属性には、デバイス管理属性、OpenID Connect 属性、HTTP 要求属性などがあります。
- デバイス管理コンテキスト属性
- デバイス管理属性 devicePlatform および deviceComplaince は、contextAttributes 条件の下で定義されます。
- devicePlatform
IOSオペレーティングシステムおよびデバイスプラットフォーム( iOS,、Android、 Mac OS X など)。許可される値は、ANDROID、OTHER_MOBILE、MACOS、WINDOWS、OTHER_DESKTOP、 です。この条件を適用するには、Device Management サブスクリプションが必要です。 「条件付きアクセスの設定」 を参照してください。- deviceCompliance
- デバイスのコンプライアンス・レベル。 許可される値は、
COMPLIANT、NONCOMPLIANT、およびUNKNOWNです。 この条件を満たすには、デバイス管理サブスクリプションが必要です。 「条件付きアクセスの設定」 を参照してください。
- OpenID Connect コンテキスト属性
- OpenID Connect アプリケーションで使用可能な以下のコンテキスト属性のほとんどは、OIDC 要求パラメーターです。 要求パラメーター名と 1-1 で対応していない属性には、説明が付いています。 詳細については、 https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest および https://tools.ietf.org/html/rfc7636#section-4.3 を参照してください。
- scope
- このトークンが受け取るスコープをスペースで区切った任意のリスト。 既知のスコープの例として、
emailaddressprofileopenidなどがあります。 - response_type
- 以下のいずれか一つ以上:
codetokenid_token. サポートされている値については、 https://oidc-dev-test.ite1.idng.ibmcloudsecurity.com/developer/explorer/#!/OpenID_Connect/handleAuthorizeGet を参照してください。 - acr_values
- 特定の
ARCを特定の認証に関連付けます。 - method
urn:ibm:security:policy:id:<policy-id>実行されたポリシーを含む文字列のリスト(形式:)。- claims
- 複合 JSON。
- response_mode
query fragment form_post文字列、そのうちの1つ。- response_method
- 要求から URI に返されるメソッドを指定します。
- code_challenge_exist
- 要求で
code_challengeが送信されたかどうかを示す PKCE フローのブール選択項目。 - redirect_uri_scheme
- 非ブラウザー・ユーザー・エージェントと応答を検出するリダイレクト URI のスキーム・コンポーネント。
- client_type
- クライアントが
publicクライアントなのかconfidentialクライアントなのかを示します。 confidential (機密) クライアントにはクライアント秘密鍵があります。 - request_type
- リクエストの発信元となったエンドポイントを特定します。
device_authorize,user_authorize,authorization,access_token,introspect,user_info,revoke,, またはclient_registration。
- HTTP 要求コンテキスト属性
- HTTP 要求ヘッダーをアクセス・ポリシーで評価することができます。 HTTP 要求ヘッダー名を contextAttributes 内の属性の名前として使用し、値にはインバウンド・ヘッダーの値に対応する値を使用します。 現在、値の変換はサポートされておらず、コンテキスト属性には標準 opCodes の形式のみを使用できます。 例えば、
"conditions": { "contextAttributes": { "attributes": [{ "name": "referer", "values": [ "https://<isv_tenant>/usc/", "https://<some_other_known_referrer>" ], "opCode": "IN" }, { "name": "user-agent", "values": [ "<specific_user_agent>" ], "opCode": "EQ" }, { "name": "x-forwarded-for", "values": [ "<x_forwarded_for_ip_address>" ], "opCode": "EQ" } ] } }
- displayName
- ユーザーの表示名。
- name
- 名、続けて姓。
- family_name
- ユーザーの姓。
- given_name
- ユーザーの名。
- ユーザーの E メール。
- emailAddress
- ユーザーの E メール。
- groupIds
- グループ ID。
- preferred_username
- 変更可能なユーザー名。
- uuid
- ユーザーの固有 ID。
- uniqueSecurityName
- ユーザーの固有 ID。
- realmName
- 非連携クラウド・ディレクトリー・ユーザーの場合、この値は常に
cloudIdentityRealmです。 - userType
- 非連携クラウド・ディレクトリー・ユーザーの場合、この値は常に
regularです。
時刻属性。
- 属性には、以下のプロパティーが含まれます。
- name
- 属性の名前。 name は曜日で、オプションで timeZone、startDate、endDate を指定できます。 指定できる値は以下のとおりです。
- 月曜日
- 火曜日
- 水曜日
- 木曜日
- 金曜日
- 土曜日
- 日曜日
endDatestartDate 曜日ごとの時間範囲は、その
{ ... "values": [ "hh:mm-hh:mm" ]}設定範囲によって有効化され、必要に応じて および を使用して段階的に設定することができます。 - timeZone
- 地域に関連付けられているタイム・ゾーン。 デフォルトは協定世界時 (UTC) です。 値は以下のいずれかの形式で指定できます。
UTC<+/-><offset>- 例えば、UTC+10GMT<+/-><offset>- 例えば、GMT-5- タイム・ゾーン・データベース名 - 例:
Australia/Brisbane
- startDate
- 条件がアクティブになるタイミングを示す開始日時。 個別に使用してブロックの時刻一致を作成し、曜日属性でステージングできます。 startDate は曜日よりも優先されます。
YYYY-MM-DD HH:mm:ss値は次の形式で表示されます。 曜日の場合、値の形式は、hh:mm-hh:mmです。 - endDate
- 条件がアクティブでなくなるタイミングを示すオプションの終了日時。 個別に使用して startDate とともにブロックの時刻一致を作成するか、または曜日属性でステージングできます。 startDate または曜日を指定した場合は、endDate を指定しないと条件の突き合わせが無期限に実行されます。 値の形式は
YYYY-MM-DD HH:mm:ssです。
IPv4 と IPv6 をサポートする IP アドレス・ベースの条件。
- この条件には以下のプロパティーが含まれます。
- values
- 条件の値。 有効な値は、IP アドレスの範囲、コンマ区切りの IP アドレス・リスト、または CIDR IP アドレスです。
- opCode
- 演算子。 この ipAddress 状態には、特定の opCodes ものが求められます。使用可能な演算子は以下のとおりです。
- MATCH
- すべての値が存在している。
- NOMATCH
- 値がいずれも存在していない。
ユーザーの IP アドレスから解決される国または市区町村。 国には、国名または以下の ISO 規格に基づく 3 文字の国別コードのコンマ区切りリストが含まれている必要があります。 ISO 3166-1 を参照してください。 alpha-3 1 つの国または 3 文字の国別コードが許容されます。 市区町村には、市区町村名のコンマ区切りリストが含まれている必要があります。 1 つの市区町村が許容されます。
- この条件には以下のプロパティーが含まれます。
- enabled
- 条件が有効 (true) か無効 (false) か。
- opCode
- 演算子。 この location 状態には、特定の opCodes ものが求められます。使用可能な演算子は以下のとおりです。
- IN
- 1 つ以上の値が存在している。
- NOT IN
- 値がいずれも存在していない。
アクセスの決定が検証されたロケーション。 デフォルトの設定は、最近検証された 5 つのロケーションが対象です。
- この条件には以下のプロパティーが含まれます。
- enabled
- 条件が有効 (true) か無効 (false) か。
IBM Security Trusteer で、ユーザーの新しいデバイスの初回アクセスが検出されます。
- この条件には以下のプロパティーが含まれます。
- enabled
- 条件が有効 (true) か無効 (false) か。