Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

MFA を適用する

最終更新 Markdown で表示Agent セットアップ

Cloudflare Access は、多要素認証(MFA)を適用する方法を 2 つサポートします。

  • ID プロバイダーベースの MFA — ID プロバイダー(IdP)が報告する特定の MFA 方式を必須にします。
  • 独立 MFA — サードパーティの ID プロバイダーに依存せず、Access が直接 2 つ目の認証要素を求めます。

インフラストラクチャアプリケーション への SSH 接続では、Access は PIV キーと FIDO2 キーによる独立 MFA もサポートします。

ID プロバイダーベースの MFA

ユーザーが ID プロバイダーで提供する特定の MFA 方式でログインすることを必須にできます。たとえば、IdP 経由のセキュリティキーで認証したユーザーだけが、特定のアプリケーションに到達できるルールを作成できます。

IdP ベースの MFA 適用は、次の ID プロバイダーでのみ利用できます。

アプリケーションに IdP の MFA 要件を適用するには:

  1. Cloudflare ダッシュボード で、Zero Trust > Access controls > Applications を開きます。

  2. MFA を適用するアプリケーションを探し、Configure を選びます。または、新しいアプリケーションを作成 します。

  3. Policies を開きます。

  4. アプリケーションにすでに ID 要件を含むポリシーがある場合は、それを探して Configure を選びます。

  5. ポリシーに次のルールを追加します。

    Rule type Selector Value
    Require Authentication method mfa - multiple-factor authentication
  6. ポリシーを保存します。

JWT 内の認証方式

ユーザーが 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

独立 MFA では、Access が直接 2 つ目の認証要素を求めます。IdP の MFA 設定に依存せず、MFA 要件を適用できます。

MFA 要件は 3 つのレベルで設定できます。

レベル 説明
組織 アカウント内のすべてのアプリケーションに、デフォルトで MFA を適用します。
アプリケーション 特定のアプリケーションで MFA を必須にするか、オフにします。
ポリシー 特定のポリシーに一致するユーザーに対して MFA を必須にするか、オフにします。

MFA 設定の優先順位は Policy > Application > Organization です。

前提条件

アプリケーションまたはポリシーで独立 MFA を設定する前に、組織レベルで 独立 MFA をオン にする必要があります。

アプリケーションの独立 MFA を設定する

各アプリケーションには、MFA の選択肢が 3 つあります。

オプション 動作
Respect global enforcement setting 組織レベル の MFA 設定を使います。グローバルで MFA が必須なら、ユーザーは MFA を完了する必要があります。グローバルで必須でなければ、求められません。これがデフォルトです。
Custom MFA settings 組織の設定を上書きし、アプリケーション固有の許可認証器とセッション有効期間を使います。
Disable MFA グローバルで MFA が必須でも、このアプリケーションへのアクセス時に独立 MFA は求められません。

アプリケーションの MFA を設定するには:

  1. Cloudflare ダッシュボード で、Zero Trust > Access controls > Applications を開きます。
  2. 設定するアプリケーションを探し、Configure を選びます。
  3. Authentication までスクロールし、MFA タブを選びます。
  4. 次のいずれかを選びます。
    • 組織の設定を継承するには、Respect global enforcement setting を選びます。
    • 独自の要件を設定するには、Custom MFA settings を選び、許可する MFA 方式認証の有効期間 を設定します。
    • アプリケーションを MFA の対象外にするには、Disable MFA を選びます。
  5. Save を選びます。

インフラストラクチャアプリケーションの MFA を設定するには、インフラストラクチャアプリケーション を参照してください。

ポリシーの独立 MFA を設定する

各ポリシーには、アプリケーションの独立 MFA を設定する で説明した 3 つの MFA 選択肢があります。ポリシーレベルの設定は、アプリケーションレベルの設定より優先されます。

  1. Cloudflare ダッシュボード で、Zero Trust > Access controls > Policies を開きます。
  2. Allow ポリシーを選び、Configure を選びます。
  3. Multi-factor authentication (MFA) でオプションを選びます。
    • アプリケーションまたは組織の設定を継承するには、Respect global enforcement setting を選びます。
    • このポリシーに一致するユーザーに独自の要件を設定するには、Custom MFA settings を選び、許可する MFA 方式認証の有効期間 を設定します。
    • このポリシーに一致するユーザーを MFA の対象外にするには、Disable MFA を選びます。
  4. Save を選びます。

インフラストラクチャアプリケーションポリシーの MFA を設定するには、インフラストラクチャアプリケーション を参照してください。

MFA セッションの有効期間

MFA セッションの有効期間は、成功した MFA 認証が有効な時間を決めます。MFA セッションが切れたあと、ユーザーは次の Cloudflare Access ログインで、IdP 認証に加えて MFA をもう一度完了する必要があります。ログインのたびに MFA を必須にするか、独自の有効期間を設定できます。MFA セッションの有効期間はログインフロー中にだけ確認され、既存のセッションには影響しません。

Access は MFA セッションを、より具体的な設定から順に確認します。

  1. ポリシーの MFA セッション有効期間 — 設定されている場合、ポリシーに一致するユーザーに適用されます。
  2. アプリケーションの MFA セッション有効期間 — 設定されている場合、アプリケーションにアクセスするすべてのユーザーに適用されます。
  3. グローバルの MFA セッション有効期間 — 独自の有効期間を指定していないすべてのアプリケーションのデフォルトです。

ログインのたびに MFA を必須にする

アプリケーションへのログインのたびに MFA を必須にするには、認証の有効期間を Require every login にします。成功した MFA セッションを Access がキャッシュしないようにします。

  • 組織Zero Trust > Access controls > Access settings > Allow multi-factor authentication (MFA) を開きます。Authentication durationRequire every login にします。アプリケーションまたはポリシーレベルで上書きしない限り、すべてのアプリケーションに適用されます。詳細は 独立 MFA の設定 を参照してください。
  • アプリケーションZero Trust > Access controls > Applications > 対象のアプリケーションを選択 > Configure > Authentication > MFA タブを開きます。Custom MFA settings を選び、Authentication durationRequire every login にします。
  • ポリシーZero Trust > Access controls > Policies > 対象のポリシーを選択 > Configure を開きます。Multi-factor authentication (MFA)Custom MFA settings を選び、Authentication durationRequire 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 を設定する

カスタム MFA を設定するとき、PIV キー、FIDO2 キー、または両方を選びます。対応する API 配列は ["piv_key"]["ssh_fido2_key"]["piv_key", "ssh_fido2_key"] です。

Dashboard

  1. Cloudflare ダッシュボード で、Zero Trust > Access controls > Applications を開きます。
  2. インフラストラクチャアプリケーションを探し、Configure を選びます。
  3. Authentication タブを開き、MFA を選びます。
  4. 次のいずれかを選びます。
    • Respect global enforcement setting組織レベル の MFA 設定を使います。これがデフォルトです。
    • Custom MFA settings — このアプリケーションのグローバル設定を上書きします。許可する認証器として PIV keyFIDO2 key、または両方を選び、カスタムの MFA セッション有効期間を設定します。
    • Disable MFA — このアプリケーションへのアクセス時に MFA は求められません。
  5. 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 で再認証するまでの期間です(例: 30m1h24h)。SSH 接続のたびに MFA を必須にする場合は 0m にします。
allowed_authenticators Array ["piv_key"]["ssh_fido2_key"]、または ["piv_key", "ssh_fido2_key"] を使います。

インフラストラクチャポリシーの MFA を設定する

ポリシーレベルで MFA を設定すると、SSH ユーザー名ごとに異なる MFA 要件を付けられます。ポリシーレベルの MFA 設定は、アプリケーションレベルの設定より優先されます。

Dashboard

  1. Cloudflare ダッシュボード で、Zero Trust > Access controls > Applications を開きます。
  2. インフラストラクチャアプリケーションを探し、Configure を選びます。
  3. Policies を開き、設定するポリシーを選びます。
  4. Multi-factor authentication (MFA) でオプションを選びます。
    • Respect global enforcement setting — アプリケーションまたは組織の設定を継承します。
    • Custom MFA settings — 許可する認証器として PIV keyFIDO2 key、または両方を選び、このポリシーに一致するユーザー向けにカスタムの MFA セッション有効期間を設定します。
    • Disable MFA — このポリシーに一致するユーザーには MFA は求められません。
  5. 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
    }
  }
}'

SSH の MFA セッション有効期間

MFA セッションの有効期間は、次の MFA プロンプトなしで新しい SSH 接続を開ける時間を決めます。有効期間を 0m にすると、新しい接続のたびに MFA が必要です。期限切れでも、進行中の接続は切れません。

MFA セッションはユーザーのデバイスに紐づきます。別のデバイスに切り替えると、残りのセッション有効期間に関係なく再認証が必要です。

セッション有効期間は次の順で評価されます。

  1. ポリシーレベルの有効期間 — 設定されている場合、ポリシーに一致するユーザーに適用されます。
  2. アプリケーションレベルの有効期間 — ポリシーレベルの有効期間がなければ、アプリケーションの設定を使います。
  3. 組織レベルの有効期間 — ポリシーにもアプリケーションにも有効期間がなければ、グローバル設定を使います。

セッション有効期間を定義した複数のポリシーにユーザーが一致する場合、Access は一致するすべてのポリシーのうち 最短 の有効期間を使います。

優先順位と競合の解決

MFA 設定は、より具体的な設定から順に評価されます。policy > application > organization です。

組織の MFA アプリケーションの MFA ポリシーの MFA 結果
必須 必須 必須 MFA が必要です
必須 必須 無効 MFA は不要です(ポリシーが優先)
必須 無効 (未設定) MFA は不要です(アプリケーションが優先)
必須 (未設定) (未設定) MFA が必要です(組織の設定が適用されます)

ユーザーが PIV キーを登録するには、組織レベルの MFA を有効にする必要があります。下のレベル(ポリシーまたはアプリケーション)の明示的な設定は、上のレベルを上書きします。あるレベルに明示的な設定がなければ、1 つ上のレベルが適用されます。

役に立ちましたか?