Cloudflare Access は、多要素認証(MFA)を適用する方法を 2 つサポートします。
- ID プロバイダーベースの MFA — ID プロバイダー(IdP)が報告する特定の MFA 方式を必須にします。
- 独立 MFA — サードパーティの ID プロバイダーに依存せず、Access が直接 2 つ目の認証要素を求めます。
インフラストラクチャアプリケーション への SSH 接続では、Access は PIV キーと FIDO2 キーによる独立 MFA もサポートします。
ユーザーが ID プロバイダーで提供する特定の MFA 方式でログインすることを必須にできます。たとえば、IdP 経由のセキュリティキーで認証したユーザーだけが、特定のアプリケーションに到達できるルールを作成できます。
IdP ベースの MFA 適用は、次の ID プロバイダーでのみ利用できます。
アプリケーションに IdP の MFA 要件を適用するには:
-
Cloudflare ダッシュボード ↗ で、Zero Trust > Access controls > Applications を開きます。
-
MFA を適用するアプリケーションを探し、Configure を選びます。または、新しいアプリケーションを作成 します。
-
Policies を開きます。
-
アプリケーションにすでに ID 要件を含むポリシーがある場合は、それを探して Configure を選びます。
-
ポリシーに次のルールを追加します。
Rule type Selector Value Require Authentication method mfa - multiple-factor authentication -
ポリシーを保存します。
ユーザーが ID プロバイダーで認証すると、IdP はユーザー名を Cloudflare Access と共有します。Access はその値を、ユーザー向けに生成する JSON Web Token (JWT) に書き込みます。
一部の ID プロバイダーは、ユーザーが提示した MFA 方式も共有します。Access はこれらの値を JWT に追加できます。たとえば、ユーザーがパスワードとセキュリティキーで認証した場合、IdP はその確認を Cloudflare Access に送れます。Access はその方式を、ユーザーに発行する JWT に保存します。
Cloudflare Access は、認証方式の定義に RFC 8176 ↗(Authentication Method Reference Values)を使います。
独立 MFA では、Access が直接 2 つ目の認証要素を求めます。IdP の MFA 設定に依存せず、MFA 要件を適用できます。
MFA 要件は 3 つのレベルで設定できます。
| レベル | 説明 |
|---|---|
| 組織 | アカウント内のすべてのアプリケーションに、デフォルトで MFA を適用します。 |
| アプリケーション | 特定のアプリケーションで MFA を必須にするか、オフにします。 |
| ポリシー | 特定のポリシーに一致するユーザーに対して MFA を必須にするか、オフにします。 |
MFA 設定の優先順位は Policy > Application > Organization です。
アプリケーションまたはポリシーで独立 MFA を設定する前に、組織レベルで 独立 MFA をオン にする必要があります。
各アプリケーションには、MFA の選択肢が 3 つあります。
| オプション | 動作 |
|---|---|
| Respect global enforcement setting | 組織レベル の MFA 設定を使います。グローバルで MFA が必須なら、ユーザーは MFA を完了する必要があります。グローバルで必須でなければ、求められません。これがデフォルトです。 |
| Custom MFA settings | 組織の設定を上書きし、アプリケーション固有の許可認証器とセッション有効期間を使います。 |
| Disable MFA | グローバルで MFA が必須でも、このアプリケーションへのアクセス時に独立 MFA は求められません。 |
アプリケーションの MFA を設定するには:
- Cloudflare ダッシュボード ↗ で、Zero Trust > Access controls > Applications を開きます。
- 設定するアプリケーションを探し、Configure を選びます。
- Authentication までスクロールし、MFA タブを選びます。
- 次のいずれかを選びます。
- 組織の設定を継承するには、Respect global enforcement setting を選びます。
- 独自の要件を設定するには、Custom MFA settings を選び、許可する MFA 方式 と 認証の有効期間 を設定します。
- アプリケーションを MFA の対象外にするには、Disable MFA を選びます。
- Save を選びます。
インフラストラクチャアプリケーションの MFA を設定するには、インフラストラクチャアプリケーション を参照してください。
各ポリシーには、アプリケーションの独立 MFA を設定する で説明した 3 つの MFA 選択肢があります。ポリシーレベルの設定は、アプリケーションレベルの設定より優先されます。
- Cloudflare ダッシュボード ↗ で、Zero Trust > Access controls > Policies を開きます。
- Allow ポリシーを選び、Configure を選びます。
- Multi-factor authentication (MFA) でオプションを選びます。
- アプリケーションまたは組織の設定を継承するには、Respect global enforcement setting を選びます。
- このポリシーに一致するユーザーに独自の要件を設定するには、Custom MFA settings を選び、許可する MFA 方式 と 認証の有効期間 を設定します。
- このポリシーに一致するユーザーを MFA の対象外にするには、Disable MFA を選びます。
- Save を選びます。
インフラストラクチャアプリケーションポリシーの MFA を設定するには、インフラストラクチャアプリケーション を参照してください。
MFA セッションの有効期間は、成功した MFA 認証が有効な時間を決めます。MFA セッションが切れたあと、ユーザーは次の Cloudflare Access ログインで、IdP 認証に加えて MFA をもう一度完了する必要があります。ログインのたびに MFA を必須にするか、独自の有効期間を設定できます。MFA セッションの有効期間はログインフロー中にだけ確認され、既存のセッションには影響しません。
Access は MFA セッションを、より具体的な設定から順に確認します。
- ポリシーの MFA セッション有効期間 — 設定されている場合、ポリシーに一致するユーザーに適用されます。
- アプリケーションの MFA セッション有効期間 — 設定されている場合、アプリケーションにアクセスするすべてのユーザーに適用されます。
- グローバルの MFA セッション有効期間 — 独自の有効期間を指定していないすべてのアプリケーションのデフォルトです。
アプリケーションへのログインのたびに MFA を必須にするには、認証の有効期間を Require every login にします。成功した MFA セッションを Access がキャッシュしないようにします。
- 組織 — Zero Trust > Access controls > Access settings > Allow multi-factor authentication (MFA) を開きます。Authentication duration を Require every login にします。アプリケーションまたはポリシーレベルで上書きしない限り、すべてのアプリケーションに適用されます。詳細は 独立 MFA の設定 を参照してください。
- アプリケーション — Zero Trust > Access controls > Applications > 対象のアプリケーションを選択 > Configure > Authentication > MFA タブを開きます。Custom MFA settings を選び、Authentication duration を Require every login にします。
- ポリシー — Zero Trust > Access controls > Policies > 対象のポリシーを選択 > Configure を開きます。Multi-factor authentication (MFA) で Custom MFA settings を選び、Authentication duration を Require every login にします。
API でアプリケーションにこの設定をするには、まず GET リクエストでアプリケーション設定全体を取得し、更新した mfa_config を含む完全なアプリケーション本文で PUT リクエストを送ります。session_duration は "0m" にします。
curl --request PUT \
https://api.cloudflare.com/client/v4/accounts/{account_id}/access/apps/{app_id} \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"mfa_config": {
"mfa_disabled": false,
"session_duration": "0m"
}
}'次の設定を考えます。
flowchart TD
subgraph org["組織"]
orgSettings["**Apply global MFA settings by default**, <br/>**MFA methods**: 認証アプリ + セキュリティキー, <br/>**Authentication duration**: 24 時間"]
end
subgraph appA["アプリケーション A"]
appASettings["**Respect global enforcement setting**<br/>(組織の設定を継承)"]
subgraph policies["ポリシー"]
policy1["ポリシー 1<br/>**Custom MFA settings**,<br/>**MFA methods**: セキュリティキーのみ,<br/>**Authentication duration**: 1 時間"]
policy2["ポリシー 2<br/>**Disable MFA**"]
end
end
subgraph appB["アプリケーション B"]
appBSettings["**Disable MFA**"]
end
orgSettings --> appASettings
orgSettings -.->|"上書き"| appBSettings
appASettings -.->|"上書き"| policy1
appASettings -.->|"上書き"| policy2
この例では次のようになります。
- アプリケーション A にアクセスし、ポリシー 1 に一致するユーザーは、セキュリティキーを使い、1 時間ごとに再認証する必要があります。
- アプリケーション A にアクセスし、ポリシー 2 に一致するユーザーには、MFA は求められません。
- アプリケーション A にアクセスし、どちらのポリシーにも一致しないユーザーは、認証アプリまたはセキュリティキーを使い、セッションは 24 時間です。
- アプリケーション B にアクセスするユーザーには、MFA は求められません。
SSH を使うインフラストラクチャアプリケーションは、インフラストラクチャ専用の MFA 方式を 2 つサポートします。piv_key は登録済みの Personal Identity Verification(PIV)キーを使います。ssh_fido2_key は登録済みの FIDO2 キーを使います。どちらの方式も、他の Access アプリケーション種類やブラウザーの WebAuthn 認証には適用されません。
インフラストラクチャアプリの MFA は、アプリケーションレベルまたはポリシーレベルで設定できます。
カスタム MFA を設定するとき、PIV キー、FIDO2 キー、または両方を選びます。対応する API 配列は ["piv_key"]、["ssh_fido2_key"]、["piv_key", "ssh_fido2_key"] です。
Dashboard
- Cloudflare ダッシュボード ↗ で、Zero Trust > Access controls > Applications を開きます。
- インフラストラクチャアプリケーションを探し、Configure を選びます。
- Authentication タブを開き、MFA を選びます。
- 次のいずれかを選びます。
- Respect global enforcement setting — 組織レベル の MFA 設定を使います。これがデフォルトです。
- Custom MFA settings — このアプリケーションのグローバル設定を上書きします。許可する認証器として PIV key、FIDO2 key、または両方を選び、カスタムの MFA セッション有効期間を設定します。
- Disable MFA — このアプリケーションへのアクセス時に MFA は求められません。
- Save を選びます。
API
インフラストラクチャアプリケーションの MFA 設定を更新するには、まず GET リクエストでアプリケーション設定全体を取得し、mfa_config オブジェクトを含む完全なアプリケーション本文で PUT リクエストを送ります。既存の設定を上書きしないよう、PUT リクエストには GET が返したすべてのフィールドを含めてください。
curl --request PUT \
https://api.cloudflare.com/client/v4/accounts/{account_id}/access/apps/{app_id} \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"mfa_config": {
"mfa_disabled": false,
"session_duration": "12h",
"allowed_authenticators": ["piv_key", "ssh_fido2_key"]
}
}'| Field | Type | Description |
|---|---|---|
mfa_disabled |
Boolean | true の場合、グローバル設定で MFA が必須でも、このアプリケーションでは MFA は不要です。 |
session_duration |
String | ユーザーが MFA で再認証するまでの期間です(例: 30m、1h、24h)。SSH 接続のたびに MFA を必須にする場合は 0m にします。 |
allowed_authenticators |
Array | ["piv_key"]、["ssh_fido2_key"]、または ["piv_key", "ssh_fido2_key"] を使います。 |
ポリシーレベルで MFA を設定すると、SSH ユーザー名ごとに異なる MFA 要件を付けられます。ポリシーレベルの MFA 設定は、アプリケーションレベルの設定より優先されます。
Dashboard
- Cloudflare ダッシュボード ↗ で、Zero Trust > Access controls > Applications を開きます。
- インフラストラクチャアプリケーションを探し、Configure を選びます。
- Policies を開き、設定するポリシーを選びます。
- Multi-factor authentication (MFA) でオプションを選びます。
- Respect global enforcement setting — アプリケーションまたは組織の設定を継承します。
- Custom MFA settings — 許可する認証器として PIV key、FIDO2 key、または両方を選び、このポリシーに一致するユーザー向けにカスタムの MFA セッション有効期間を設定します。
- Disable MFA — このポリシーに一致するユーザーには MFA は求められません。
- Save を選びます。
API
ポリシーの MFA 設定を更新するには、まず GET リクエストでポリシー設定全体を取得し、mfa_config オブジェクトを含む完全なポリシー本文で PUT リクエストを送ります。mfa_config オブジェクトのフィールドは アプリケーションレベルの設定 と同じです。
curl --request PUT \
https://api.cloudflare.com/client/v4/accounts/{account_id}/access/policies/{policy_id} \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"name": "Require MFA for root",
"decision": "allow",
"include": [
{
"email": {
"email": "[email protected]"
}
}
],
"mfa_config": {
"mfa_disabled": false,
"session_duration": "1h",
"allowed_authenticators": ["piv_key", "ssh_fido2_key"]
},
"connection_rules": {
"ssh": {
"usernames": ["root"],
"allow_email_alias": false
}
}
}'MFA セッションの有効期間は、次の MFA プロンプトなしで新しい SSH 接続を開ける時間を決めます。有効期間を 0m にすると、新しい接続のたびに MFA が必要です。期限切れでも、進行中の接続は切れません。
MFA セッションはユーザーのデバイスに紐づきます。別のデバイスに切り替えると、残りのセッション有効期間に関係なく再認証が必要です。
セッション有効期間は次の順で評価されます。
- ポリシーレベルの有効期間 — 設定されている場合、ポリシーに一致するユーザーに適用されます。
- アプリケーションレベルの有効期間 — ポリシーレベルの有効期間がなければ、アプリケーションの設定を使います。
- 組織レベルの有効期間 — ポリシーにもアプリケーションにも有効期間がなければ、グローバル設定を使います。
セッション有効期間を定義した複数のポリシーにユーザーが一致する場合、Access は一致するすべてのポリシーのうち 最短 の有効期間を使います。
MFA 設定は、より具体的な設定から順に評価されます。policy > application > organization です。
| 組織の MFA | アプリケーションの MFA | ポリシーの MFA | 結果 |
|---|---|---|---|
| 必須 | 必須 | 必須 | MFA が必要です |
| 必須 | 必須 | 無効 | MFA は不要です(ポリシーが優先) |
| 必須 | 無効 | (未設定) | MFA は不要です(アプリケーションが優先) |
| 必須 | (未設定) | (未設定) | MFA が必要です(組織の設定が適用されます) |
ユーザーが PIV キーを登録するには、組織レベルの MFA を有効にする必要があります。下のレベル(ポリシーまたはアプリケーション)の明示的な設定は、上のレベルを上書きします。あるレベルに明示的な設定がなければ、1 つ上のレベルが適用されます。