Red Hat Developer Hub での認証


Red Hat Developer Hub 1.6

Red Hat Developer Hub で外部サービスへの認証を設定する

Red Hat Customer Content Services

概要

Red Hat Developer Hub (RHDH) プラットフォームエンジニアは、組織の特定のニーズを満たすために他のユーザーの認証を管理できます。

第1章 認証とユーザープロビジョニングについて

このモジュールでは、Red Hat Developer Hub における認証およびユーザープロビジョニングの仕組みについて、その概要を説明します。ソフトウェアカタログでのユーザーおよびグループエンティティーの作成からユーザーのサインインまでのプロセスと、認証およびカタログプラグインが各ステップをどのように有効にするかを説明します。このプロセスを理解することは、Developer Hub インスタンスを正常に設定し認可を通じてアクセスを保護し、同期されたユーザーおよびグループデータに依存する機能を有効にするために不可欠です。

カタログ機能を完全に有効にするには、アイデンティティープロバイダーから Developer Hub ソフトウェアカタログにユーザーおよびグループのデータをプロビジョニングします。カタログプロバイダープラグインは、このタスクを非同期的に処理します。これらのプラグインは、関連するユーザーおよびグループ情報のアイデンティティープロバイダー (IdP) をクエリーし、Developer Hub カタログ内の対応するエンティティーを作成または更新します。スケジュールされたプロビジョニングにより、カタログが組織内のユーザーとグループを正確に反映されるようになります。

ユーザーが Developer Hub にアクセスしようとすると、Developer Hub は、Red Hat Build of Keycloak (RHBK)GitHubMicrosoft Azure などの設定済みの認証プロバイダーにリダイレクトします。この外部 IdP はユーザーの認証を行います。

認証が成功すると、app-config.yaml ファイルで設定されている Developer Hub 認証プラグインが IdP からの応答を処理し、Developer Hub ソフトウェアカタログ内のアイデンティティーを解決し、Developer Hub 内でユーザーセッションを確立します。

認証とユーザープロビジョニングの設定は、いくつかの理由から重要です。

  • 認証されたユーザーのみがアクセスできるようにすることで、Developer Hub インスタンスを保護します。
  • IdP から同期されたユーザーおよびグループのメンバーシップに基づいてアクセス制御を定義できるようにすることで、認可を有効にします。
  • エンティティーの所有権と、ユーザー、グループ、ソフトウェアコンポーネント間の関係を理解することに依存するさまざまなカタログ機能には、ユーザーおよびグループのデータをカタログにプロビジョニングすることが必要です。このプロビジョニングのステップがないと、カタログ内のコンポーネントの所有者を表示するなどの機能が正しく機能しない可能性があります。
実稼働環境では推奨されません。

Developer Hub の機能を調べるには、以下を実行します。

  • 外部 IdP なしで Developer Hub を使用するには、ゲストユーザー が認証と認可の設定をスキップし、ゲストユーザーとしてログインして、すべての Developer Hub 機能にアクセスできるようにします。
  • ソフトウェアカタログに依存する認可ポリシーと機能を使用せずに Developer Hub を使用するには、dangerouslyAllowSignInWithoutUserInCatalog リゾルバーオプションを有効にします。この設定により、ユーザーがカタログに登録されている必要があるチェックはバイパスされますが、認証は引き続き強制されます。
重要

Developer Hub は一方向の同期モデルを使用しており、ユーザーとグループのデータはアイデンティティープロバイダーから Developer Hub ソフトウェアカタログに流れます。その結果、Developer Hub Web UI または REST API を使用してユーザーまたはグループを手動で削除すると、次回の取り込み時にそれらのエンティティーが再作成されるため、効果がないか、不整合が発生する可能性があります。

第2章 ゲストユーザーによる認証

Developer Hub の機能を調べるには、認証と認可の設定をスキップできます。Developer Hub を設定して、ゲストユーザーとしてログインし、Developer Hub の機能にアクセスすることができます。

2.1. Operator ベースのインストールでゲストユーザーによる認証を行う

Operator ベースのインストール後、Developer Hub を設定してゲストユーザーとしてログインし、Developer Hub の機能にアクセスできます。

前提条件

手順

  • Developer Hub のカスタム設定でゲストユーザーを有効にするには、次の内容で Developer Hub アプリケーション設定を編集 します。

    app-config.yaml フラグメント

    auth:
      environment: development
      providers:
        guest:
          dangerouslyAllowOutsideDevelopment: true
    Copy to Clipboard Toggle word wrap

検証

  1. Developer Hub のログインページに移動します。
  2. ゲストユーザーアカウントでログインするには、Guest タイルの Enter をクリックします。
  3. Developer Hub の Settings ページでは、プロファイル名は Guest です。
  4. Developer Hub の機能を使用できます。

2.2. Helm ベースのインストールでゲストユーザーによる認証を行う

Helm ベースのインストールでは、Developer Hub を設定してゲストユーザーとしてログインし、Developer Hub の機能にアクセスできます。

前提条件

手順

  • Developer Hub のカスタム設定でゲストユーザーを有効にするには、次の内容で Red Hat Developer Hub Helm チャートを設定 します。

    Red Hat Developer Hub Helm チャート設定フラグメント

    upstream:
      backstage:
        appConfig:
          app:
            baseUrl: 'https://{{- include "janus-idp.hostname" . }}'
          auth:
            environment: development
            providers:
              guest:
                dangerouslyAllowOutsideDevelopment: true
    Copy to Clipboard Toggle word wrap

検証

  1. Developer Hub のログインページに移動します。
  2. ゲストユーザーアカウントでログインするには、Guest タイルの Enter をクリックします。
  3. Developer Hub の Settings ページでは、プロファイル名は Guest です。
  4. Developer Hub の機能を使用できます。

第3章 Red Hat build of Keycloak (RHBK) による認証

Red Hat build of Keycloak (RHBK) を使用してユーザーを認証するには、以下を行います。

3.1. Red Hat build of Keycloak (RHBK) による認証の有効化

Red Hat build of Keycloak (RHBK) を使用してユーザーを認証するには、Red Hat Developer Hub で OpenID Connect (OIDC) 認証プロバイダーを有効にします。

前提条件

手順

  1. Developer Hub が RHBK で認証できるようにするには、RHBK で手順を完了し、レルムとユーザーを作成 して 最初のアプリケーションを保護 します。

    1. 既存のレルムを使用するか、<my_realm> などの固有の 名前 を持つ レルムを作成 します。次のステップのために値を保存します。

      • RHBK レルムのベース URL (例: <your_rhbk_URL>/realms/<your_realm>)。
    2. RHBK に Developer Hub を登録するには、作成されたレルムで、次の操作を実行して 最初のアプリケーションを保護 します。

      1. クライアント ID: <RHDH> などの固有のクライアント ID。
      2. 有効なリダイレクト URI: OIDC ハンドラー URL https://<RHDH_URL>/api/auth/oidc/handler/frame に設定します。
      3. Credentials タブに移動し、クライアントシークレット をコピーします。
      4. 次のステップのために値を保存します。

        • クライアント ID
        • クライアントシークレット
    3. 検証手順を準備するには、同じレルムで、既存のユーザーの認証情報を取得するか、ユーザーを作成 します。検証手順用にユーザー認証情報を保存します。
  2. RHSSO 認証情報を Developer Hub に追加するには、以下のキーと値のペアを Developer Hub シークレット に追加します。

    AUTH_OIDC_CLIENT_ID
    保存した クライアント ID を入力します。
    AUTH_OIDC_CLIENT_SECRET
    保存した クライアントシークレット を入力します。
    AUTH_OIDC_METADATA_URL
    保存した RHBK realm base URL を入力します。
  3. Developer Hub のカスタム設定で RHBK 認証プロバイダーをセットアップするには、app-config-rhdh などのカスタム Developer Hub ConfigMap を編集し、app-config.yaml コンテンツに次の行を追加します。

    1. 必須フィールドを設定します。

      RHBK による認証を有効にするための必須フィールドを含む app-config.yaml フラグメント

      auth:
        environment: production
        providers:
          oidc:
            production:
              metadataUrl: ${AUTH_OIDC_METADATA_URL}
              clientId: ${AUTH_OIDC_CLIENT_ID}
              clientSecret: ${AUTH_OIDC_CLIENT_SECRET}
              prompt: auto
      signInPage: oidc
      Copy to Clipboard Toggle word wrap

      environment: production
      環境を production としてマークすると、Developer Hub のホームページでゲストログインが非表示になります。
      metadataUrlclientIdclientSecret
      シークレットを使用して OIDC プロバイダーを設定します。
      sigInPage: oidc
      OIDC プロバイダーをデフォルトのサインインプロバイダーとして有効にします。
      prompt: auto
      アクティブな RHSSO セッションが存在する場合に、アイデンティティープロバイダーが認証情報を要求するか、ログインリダイレクトをバイパスするかを自動的に決定できるようにします。
注記

prompt: auto が設定されていない場合、アイデンティティープロバイダーはデフォルトで prompt: none に設定されます。この場合、すでにログインしていると想定され、アクティブなセッションのないサインイン要求が拒否されます。

callbackUrl

RHBK コールバック URL。

オプションの callbackURL フィールドを含む app-config.yaml フラグメント

auth:
  providers:
    oidc:
      production:
        callbackUrl: ${AUTH_OIDC_CALLBACK_URL}
Copy to Clipboard Toggle word wrap

tokenEndpointAuthMethod

トークンエンドポイント認証方法。

オプションの tokenEndpointAuthMethod フィールドを含む app-config.yaml フラグメント

auth:
  providers:
    oidc:
      production:
        tokenEndpointAuthMethod: ${AUTH_OIDC_TOKEN_ENDPOINT_METHOD}
Copy to Clipboard Toggle word wrap

tokenSignedResponseAlg

トークン署名応答アルゴリズム。

オプションの tokenSignedResponseAlg フィールドを含む app-config.yaml フラグメント

auth:
  providers:
    oidc:
      production:
        tokenSignedResponseAlg: ${AUTH_OIDC_SIGNED_RESPONSE_ALG}
Copy to Clipboard Toggle word wrap

scope

RHBK スコープ。

オプションの scope フィールドを含む app-config.yaml フラグメント

auth:
  providers:
    oidc:
      production:
        scope: ${AUTH_OIDC_SCOPE}
Copy to Clipboard Toggle word wrap

signIn
resolvers

認証が成功したら、サインインするユーザーを、Developer Hub カタログ内の既存のユーザーに解決する必要があります。ユースケースに合わせて最適な形でユーザーを確実にマッチさせるために、特定のリゾルバーを設定することを検討してください。デフォルトのリゾルバーをオーバーライドするには、リゾルバーリストを入力します (oidcSubClaimMatchingKeycloakUserId)。

認証プロバイダーは、成功するまで各サインインリゾルバーを順番に試行します。どれも成功しない場合は失敗します。

警告

実稼働モードでは、ユーザーが確実にマッチするように、リゾルバーを 1 つだけ設定してください。resolver:::: サインインリゾルバー名を入力します。使用可能な値: * oidcSubClaimMatchingKeycloakUserId * emailLocalPartMatchingUserEntityName * emailMatchingUserEntityProfileEmail * preferredUsernameMatchingUserEntityName

+ オプションの resolvers リストを含む app-config.yaml フラグメント

auth:
  providers:
    oidc:
      production:
        signIn:
          resolvers:
            - resolver: oidcSubClaimMatchingKeycloakUserId
            - resolver: preferredUsernameMatchingUserEntityName
            - resolver: emailMatchingUserEntityProfileEmail
            - resolver: emailLocalPartMatchingUserEntityName
Copy to Clipboard Toggle word wrap
dangerouslyAllowSignInWithoutUserInCatalog: true

Developer Hub ソフトウェアカタログのユーザープロビジョニング要件を回避するようにサインインリゾルバーを設定します。

警告

このオプションは Developer Hub の機能を調べるために使用しますが、実稼働環境では使用しないでください。

ソフトウェアカタログに存在しないユーザーのサインインを許可するオプションのフィールドを含む app-config-rhdh.yaml フラグメント

auth:
  environment: production
  providers:
    oidc:
      production:
        metadataUrl: ${AUTH_OIDC_METADATA_URL}
        clientId: ${AUTH_OIDC_CLIENT_ID}
        clientSecret: ${AUTH_OIDC_CLIENT_SECRET}
        signIn:
          resolvers:
            - resolver: oidcSubClaimMatchingKeycloakUserID
              dangerouslyAllowSignInWithoutUserInCatalog: true
signInPage: oidc
Copy to Clipboard Toggle word wrap

sessionDuration

ユーザーセッションの有効期間。期間を ms ライブラリー形式 ('24h'、'2 days' など)、ISO 期間形式、またはコード内で使用される "human duration" 形式で入力します。

オプションの sessionDuration フィールドを含む app-config-rhdh.yaml フラグメント

auth:
  providers:
    github:
      production:
        sessionDuration: { hours: 24 }
Copy to Clipboard Toggle word wrap

auth
backstageTokenExpiration
Developer Hub トークンの有効期限をデフォルト値の 1 時間から変更する場合、これはセッション期間ではなく、短期暗号化トークンの有効期間を指すことに注意してください。有効期限の値は 10 分から 24 時間の間で設定する必要があります。

オプションの auth.backstageTokenExpiration フィールドを含む app-config.yaml フラグメント

auth:
  backstageTokenExpiration: { minutes: <user_defined_value> }
Copy to Clipboard Toggle word wrap
セキュリティー上の考慮事項

頻繁なリフレッシュトークンの要求により複数の有効なリフレッシュトークンが発行された場合、古いトークンは期限が切れるまで有効です。セキュリティーを強化し、古いトークンの誤用を防ぐには、RHBK レルムでリフレッシュトークンのローテーションストラテジーを有効にします。

  1. ナビゲーションメニューの Configure セクションで、Realm Settings をクリックします。
  2. Realm Settings ページで、Tokens タブをクリックします。
  3. Tokens タブの Refresh tokens セクションで、Revoke Refresh TokenEnabled に切り替えます。

検証

  1. Developer Hub のログインページに移動します。
  2. Developer Hub のサインインページには Sign in using OIDC と表示され、ゲストユーザーのサインインは無効になっています。
  3. 保存した ユーザー名パスワード の値を使用して、OIDC でログインします。

3.2. Red Hat build of Keycloak (RHBK) からソフトウェアカタログへのユーザーのプロビジョニング

手順

  • RHBK メンバー検出を有効にするには、app-config-rhdh などのカスタム Developer Hub ConfigMap を編集し、app-config.yaml コンテンツに次の行を追加します。

    必須の keycloakOrg フィールドを含む app-config.yaml フラグメント

    catalog:
      providers:
        keycloakOrg:
          default:
            baseUrl: ${AUTH_OIDC_METADATA_URL}
            clientId: ${AUTH_OIDC_CLIENT_ID}
            clientSecret: ${AUTH_OIDC_CLIENT_SECRET}
    Copy to Clipboard Toggle word wrap

    baseUrl
    RHBK による認証を有効にする ときに定義される RHBK サーバー URL。
    clientId
    RHBK での認証を有効にする ときに定義される、RHBK 内の Developer Hub アプリケーションクライアント ID。
    clientSecret
    RHBK での認証を有効にする ときに定義される、RHBK 内の Developer Hub アプリケーションクライアントシークレット。

    オプション: 次のオプションフィールドを追加することを検討してください。

    realm

    同期するレルムデフォルト値は master です。

    オプションの realm フィールドを含む app-config.yaml フラグメント

    catalog:
      providers:
        keycloakOrg:
          default:
            realm: master
    Copy to Clipboard Toggle word wrap

    loginRealm

    認証に使用するレルムデフォルト値は master です。

    オプションの loginRealm フィールドを含む app-config.yaml フラグメント

    catalog:
      providers:
        keycloakOrg:
          default:
            loginRealm: master
    Copy to Clipboard Toggle word wrap

    userQuerySize

    同時にクエリーするユーザー数。デフォルト値は 100 です。

    オプションの userQuerySize フィールドを含む app-config.yaml フラグメント

    catalog:
      providers:
        keycloakOrg:
          default:
            userQuerySize: 100
    Copy to Clipboard Toggle word wrap

    groupQuerySize

    同時にクエリーするグループの数。デフォルト値は 100 です。

    オプションの groupQuerySize フィールドを含む app-config.yaml フラグメント

    catalog:
      providers:
        keycloakOrg:
          default:
            groupQuerySize: 100
    Copy to Clipboard Toggle word wrap

    schedule.frequency

    カスタムスケジュールの頻度を指定します。コード内で使用される cron、ISO 期間、および "人間が判読可能な期間" をサポートします。

    オプションの schedule.frequency フィールドを含む app-config.yaml フラグメント

    catalog:
      providers:
        keycloakOrg:
          default:
            schedule:
              frequency: { hours: 1 }
    Copy to Clipboard Toggle word wrap

    schedule.timeout

    カスタムタイムアウトを指定します。コード内で使用される ISO 期間と "人間が判読可能な期間" をサポートします。

    オプションの schedule.timeout フィールドを含む app-config.yaml フラグメント

    catalog:
      providers:
        keycloakOrg:
          default:
            schedule:
              timeout: { minutes: 50 }
    Copy to Clipboard Toggle word wrap

    schedule.initialDelay

    カスタム初期遅延を指定します。コード内で使用される ISO 期間と "人間が判読可能な期間" をサポートします。

    オプションの schedule.initialDelay フィールドを含む app-config.yaml フラグメント

    catalog:
      providers:
        keycloakOrg:
          default:
            schedule:
              initialDelay: { seconds: 15}
    Copy to Clipboard Toggle word wrap

検証

  1. コンソールログをチェックして、同期が完了したことを確認します。

    同期が成功した例:

    {"class":"KeycloakOrgEntityProvider","level":"info","message":"Read 3 Keycloak users and 2 Keycloak groups in 1.5 seconds. Committing...","plugin":"catalog","service":"backstage","taskId":"KeycloakOrgEntityProvider:default:refresh","taskInstanceId":"bf0467ff-8ac4-4702-911c-380270e44dea","timestamp":"2024-09-25 13:58:04"}
    {"class":"KeycloakOrgEntityProvider","level":"info","message":"Committed 3 Keycloak users and 2 Keycloak groups in 0.0 seconds.","plugin":"catalog","service":"backstage","taskId":"KeycloakOrgEntityProvider:default:refresh","taskInstanceId":"bf0467ff-8ac4-4702-911c-380270e44dea","timestamp":"2024-09-25 13:58:04"}
    Copy to Clipboard Toggle word wrap

  2. RHBK アカウントでログインします。

RHBK ユーザーとグループを Red Hat Developer Hub エンティティーにマッピングする方法をカスタマイズするには、keycloakTransformerExtensionPoint を使用して Keycloak バックエンドにカスタムのユーザーおよびグループトランスフォーマーを提供するバックエンドモジュールを作成します。

手順

  1. yarn new コマンドで新しいバックエンドモジュールを作成します。
  2. カスタムのユーザーおよびグループトランスフォーマーを keycloakTransformerExtensionPoint に追加します。

    以下は、バックエンドモジュールを定義する方法の例です。

    plugins/<module-name>/src/module.ts

    import {
      GroupTransformer,
      keycloakTransformerExtensionPoint,
      UserTransformer,
    } from '@backstage-community/plugin-catalog-backend-module-keycloak';
    
    const customGroupTransformer: GroupTransformer = async (
      entity, // entity output from default parser
      realm, // Keycloak realm name
      groups, // Keycloak group representation
    ) => {
      /* apply transformations */
      return entity;
    };
    const customUserTransformer: UserTransformer = async (
      entity, // entity output from default parser
      user, // Keycloak user representation
      realm, // Keycloak realm name
      groups, // Keycloak group representation
    ) => {
      /* apply transformations */
      return entity;
    };
    
    export const keycloakBackendModuleTransformer = createBackendModule({
      pluginId: 'catalog',
      moduleId: 'keycloak-transformer',
      register(reg) {
        reg.registerInit({
          deps: {
            keycloak: keycloakTransformerExtensionPoint,
          },
          async init({ keycloak }) {
            keycloak.setUserTransformer(customUserTransformer);
            keycloak.setGroupTransformer(customGroupTransformer);
            /* highlight-add-end */
          },
        });
      },
    });
    Copy to Clipboard Toggle word wrap

    重要

    モジュールの pluginId は、keycloak-backendpluginId と一致するように catalog に設定する必要があります。そうしないと、モジュールは初期化に失敗します。

  3. この新しいバックエンドモジュールを Developer Hub バックエンドにインストールします。

    backend.add(import(backstage-plugin-catalog-backend-module-keycloak-transformer))
    Copy to Clipboard Toggle word wrap

検証

  • Developer Hub は起動するたびにユーザーとグループをインポートします。コンソールログをチェックして、同期が完了したことを確認します。

    同期が成功した例:

    {"class":"KeycloakOrgEntityProvider","level":"info","message":"Read 3 Keycloak users and 2 Keycloak groups in 1.5 seconds. Committing...","plugin":"catalog","service":"backstage","taskId":"KeycloakOrgEntityProvider:default:refresh","taskInstanceId":"bf0467ff-8ac4-4702-911c-380270e44dea","timestamp":"2024-09-25 13:58:04"}
    {"class":"KeycloakOrgEntityProvider","level":"info","message":"Committed 3 Keycloak users and 2 Keycloak groups in 0.0 seconds.","plugin":"catalog","service":"backstage","taskId":"KeycloakOrgEntityProvider:default:refresh","taskInstanceId":"bf0467ff-8ac4-4702-911c-380270e44dea","timestamp":"2024-09-25 13:58:04"}
    Copy to Clipboard Toggle word wrap

  • 最初のインポートが完了したら、Catalog ページに移動し、User を選択してユーザーのリストを表示します。
  • ユーザーを選択すると、RHBK からインポートされた情報が表示されます。
  • グループを選択してリストを表示し、RHBK からインポートされた情報にアクセスしたり確認したりできます。
  • RHBK アカウントでログインできます。

第4章 GitHub での認証

GitHub または GitHub Enterprise でユーザーを認証する場合は、以下を行います。

4.1. GitHub での認証の有効化

GitHub を使用してユーザーを認証するには、Red Hat Developer Hub で GitHub 認証プロバイダーを有効にします。

前提条件

手順

  1. Developer Hub が GitHub で認証できるようにするには、GitHub アプリケーションを作成します。きめ細かな権限を使用し、アプリケーションがアクセスできるリポジトリーをより細かく制御して、有効期間の短いトークンを使用するには、OAuth アプリケーションではなく GitHub アプリケーションを選択します。

    1. 次の設定で GitHub アプリケーションを登録します

      • GitHub アプリケーション名: <Red Hat Developer Hub>-<GUID> など、GitHub アプリケーションを識別する一意の名前を入力します。
      • ホームページ URL: Developer Hub の URL: https://<my_developer_hub_url>
      • 認可コールバック URL: Developer Hub 認証バックエンド URL: https://<my_developer_hub_url>/api/auth/github/handler/frame
      • Webhook URL: Developer Hub の URL: https://<my_developer_hub_url>
      • Webhook シークレット: 強力なシークレットを提供します。
      • リポジトリー権限:

        • 次の項目に対する Read-only アクセスを有効にします。

          • 管理
          • コミットステータス
          • 内容
          • Dependabot アラート
          • デプロイメント
          • プルリクエスト
          • Webhook

            ヒント

            GitHub API を使用して変更を加える予定の場合は、Read-only ではなく、Read and write 権限が有効になっていることを確認してください。

        • 必要に応じて他の権限を切り替えます。
      • 組織の権限:

        • メンバー への Read-only アクセスを有効にします。
      • Where can this GitHub App be installed? で、Only on this account を選択します。
    2. GeneralClients secrets セクションで、Generate a new client secret をクリックします。
    3. GeneralPrivate keys セクションで、Generate a private key をクリックします。
    4. Install App タブで、GitHub アプリケーションをインストールするアカウントを選択します。
    5. 次のステップのために以下の値を保存します。

      • アプリケーション ID
      • クライアント ID
      • クライアントシークレット
      • 秘密鍵
      • Webhook シークレット
  2. GitHub 認証情報を Developer Hub に追加するには、以下のキーと値のペアを Developer Hub シークレット に追加します。

    AUTH_GITHUB_APP_ID
    保存した アプリケーション ID を入力します。
    AUTH_GITHUB_CLIENT_ID
    保存した クライアント ID を入力します。
    GITHUB_ORGANIZATION
    '<your_github_organization_name>' などの GitHub 組織名を入力します。
    GITHUB_ORG_URL
    $GITHUB_HOST_DOMAIN/$GITHUB_ORGANIZATION を入力します。
    GITHUB_CLIENT_SECRET
    保存した クライアントシークレット を入力します。
    GITHUB_PRIVATE_KEY_FILE
    保存した 秘密鍵 を入力します。
    GITHUB_WEBHOOK_URL
    Developer Hub の URL を入力します (https://<my_developer_hub_url>)
    GITHUB_WEBHOOK_SECRET
    保存した Webhook シークレット を入力します。
  3. .GitHub 認証プロバイダーを設定し、Developer Hub のカスタム設定で GitHub API とのインテグレーションを有効にするには、Developer Hub のカスタム config map (my-rhdh-app-config など) を編集し、app-config.yaml ファイルの内容に次の行を追加します。

    GitHub での認証を有効にするための必須フィールドを含む app-config.yaml ファイルのフラグメント

    auth:
      environment: production 
    1
    
      providers:
        github:
          production:
            clientId: ${AUTH_GITHUB_CLIENT_ID} 
    2
    
            clientSecret: ${AUTH_GITHUB_CLIENT_SECRET}
    integrations:
      github:
        - host: ${GITHUB_HOST_DOMAIN}
          apps:
            - appId: ${AUTH_GITHUB_APP_ID}
              clientId: ${AUTH_GITHUB_CLIENT_ID}
              clientSecret: ${GITHUB_CLIENT_SECRET}
              webhookUrl: ${GITHUB_WEBHOOK_URL}
              webhookSecret: ${GITHUB_WEBHOOK_SECRET}
              privateKey: |
                ${GITHUB_PRIVATE_KEY_FILE}
    signInPage: github 
    3
    Copy to Clipboard Toggle word wrap

    1
    環境を production としてマークし、Developer Hub のログインページでゲストログインオプションを無効にします。
    2
    Developer Hub のシークレットに設定されている GitHub 認証情報を適用します。
    3
    GitHub プロバイダーを Developer Hub サインインプロバイダーとして有効にします。
    1. オプション: 次のオプションフィールドを追加することを検討してください。

      callbackUrl

      OAuth フローを開始するときに GitHub が使用するコールバック URL (例: <your_intermediate_service_url/handler>)。多くの Developer Hub インスタンスに対して 1 つの OAuth アプリケーションを使用する場合など、Developer Hub が直接のレシーバーではない場合に定義します。

      オプションの enterpriseInstanceUrl フィールドを含む app-config.yaml ファイルのフラグメント

      auth:
        providers:
          github:
            production:
              callbackUrl: <your_intermediate_service_url/handler>
      Copy to Clipboard Toggle word wrap

sessionDuration

ユーザーセッションの有効期間。期間を ms ライブラリー形式 ('24h'、'2 days' など)、ISO 期間形式、またはコード内で使用される "human duration" 形式で入力します。

オプションの sessionDuration フィールドを含む app-config-rhdh.yaml フラグメント

auth:
  providers:
    github:
      production:
        sessionDuration: { hours: 24 }
Copy to Clipboard Toggle word wrap

signIn
resolvers
認証が成功したら、サインインするユーザーを、Developer Hub カタログ内の既存のユーザーに解決する必要があります。ユースケースに合わせて最適な形でユーザーを確実にマッチさせるために、特定のリゾルバーを設定することを検討してください。デフォルトのリゾルバー usernameMatchingUserEntityName をオーバーライドするには、リゾルバーのリストを入力します。

認証プロバイダーは、成功するまで各サインインリゾルバーを順番に試行します。どれも成功しない場合は失敗します。

警告

実稼働モードでは、ユーザーが確実にマッチするように、リゾルバーを 1 つだけ設定してください。

resolver

サインインリゾルバー名を入力します。利用可能なリゾルバーは次のとおりです。

  • usernameMatchingUserEntityName
  • preferredUsernameMatchingUserEntityName
  • emailMatchingUserEntityProfileEmail
dangerouslyAllowSignInWithoutUserInCatalog: true

Developer Hub ソフトウェアカタログのユーザープロビジョニング要件を回避するようにサインインリゾルバーを設定します。

警告

Developer Hub の機能を調べるには dangerouslyAllowSignInWithoutUserInCatalog を使用しますが、実稼働環境では使用しないでください。

ソフトウェアカタログに存在しないユーザーのサインインを許可するオプションのフィールドを含む app-config.yaml ファイルのフラグメント

auth:
  environment: production
  providers:
    github:
      production:
        clientId: ${AUTH_GITHUB_CLIENT_ID}
        clientSecret: ${AUTH_GITHUB_CLIENT_SECRET}
        signIn:
          resolvers:
            - resolver: usernameMatchingUserEntityName
              dangerouslyAllowSignInWithoutUserInCatalog: true
integrations:
  github:
    - host: ${GITHUB_HOST_DOMAIN}
      apps:
        - appId: ${AUTH_GITHUB_APP_ID}
          clientId: ${AUTH_GITHUB_CLIENT_ID}
          clientSecret: ${GITHUB_CLIENT_SECRET}
          webhookUrl: ${GITHUB_WEBHOOK_URL}
          webhookSecret: ${GITHUB_WEBHOOK_SECRET}
          privateKey: |
            ${GITHUB_PRIVATE_KEY_FILE}
signInPage: github
Copy to Clipboard Toggle word wrap

ヒント

別の認証プロバイダーとの GitHub インテグレーションを有効にするには、次の設定を完了します。

  • GitHub プロバイダーを既存の auth セクションに追加します。
  • 認証プロバイダーの設定から signInPage セクションを保持します。

GitHub インテグレーションを有効にし、別の認証プロバイダーを使用するための必須フィールドを含む app-config.yaml ファイルのフラグメント

auth:
  environment: production
  providers:
    github:
      production:
        clientId: ${AUTH_GITHUB_CLIENT_ID}
        clientSecret: ${AUTH_GITHUB_CLIENT_SECRET}
    <your_other_authentication_providers_configuration>
integrations:
  github:
    - host: ${GITHUB_HOST_DOMAIN}
      apps:
        - appId: ${AUTH_GITHUB_APP_ID}
          clientId: ${AUTH_GITHUB_CLIENT_ID}
          clientSecret: ${GITHUB_CLIENT_SECRET}
          webhookUrl: ${GITHUB_WEBHOOK_URL}
          webhookSecret: ${GITHUB_WEBHOOK_SECRET}
          privateKey: |
            ${GITHUB_PRIVATE_KEY_FILE}
signInPage: <your_main_authentication_provider>
Copy to Clipboard Toggle word wrap

検証

  1. Developer Hub のログインページに移動します。
  2. Developer Hub のサインインページには Sign in using GitHub と表示され、ゲストユーザーのサインインは無効になっています。
  3. GitHub でログインします。

4.2. GitHub からソフトウェアカタログへのユーザーのプロビジョニング

ユーザーを認証する場合、Red Hat Developer Hub ではソフトウェアカタログにユーザーが登録されていることが必要です。ユーザーを手動でプロビジョニングするのではなく、スケジュールに従って GitHub からソフトウェアカタログにユーザーをプロビジョニングするように Developer Hub を設定することを検討してください。

前提条件

手順

  • GitHub メンバー検出を有効にするには、app-config-rhdh などのカスタム Developer Hub ConfigMap を編集し、app-config.yaml コンテンツに次の行を追加します。

    必須の github フィールドを含む app-config.yaml フラグメント

    catalog:
      providers:
        github:
          providerId:
            organization: "${GITHUB_ORGANIZATION}"
            schedule:
              frequency:
                minutes: 30
              initialDelay:
                seconds: 15
              timeout:
                minutes: 15
        githubOrg:
          githubUrl: "${GITHUB_HOST_DOMAIN}"
          orgs: [ "${GITHUB_ORGANIZATION}" ]
          schedule:
            frequency:
              minutes: 30
            initialDelay:
              seconds: 15
            timeout:
              minutes: 15
    Copy to Clipboard Toggle word wrap

    organizationgithubUrlorgs
    GitHub で作成し、OpenShift でシークレットとして設定した Developer Hub アプリケーション情報を使用します。
    schedule.frequency
    カスタムスケジュールの頻度を指定します。コード内で使用される cron、ISO 期間、および "人間が判読可能な期間" をサポートします。
    schedule.timeout
    カスタムタイムアウトを指定します。コード内で使用される ISO 期間と "人間が判読可能な期間" をサポートします。
    schedule.initialDelay
    カスタム初期遅延を指定します。コード内で使用される ISO 期間と "人間が判読可能な期間" をサポートします。

検証

  1. コンソールログをチェックして、同期が完了したことを確認します。

    同期が成功した例:

    {"class":"GithubMultiOrgEntityProvider","level":"info","message":"Reading GitHub users and teams for org: rhdh-dast","plugin":"catalog","service":"backstage","target":"https://github.com","taskId":"GithubMultiOrgEntityProvider:production:refresh","taskInstanceId":"801b3c6c-167f-473b-b43e-e0b4b780c384","timestamp":"2024-09-09 23:55:58"}
    {"class":"GithubMultiOrgEntityProvider","level":"info","message":"Read 7 GitHub users and 2 GitHub groups in 0.4 seconds. Committing...","plugin":"catalog","service":"backstage","target":"https://github.com","taskId":"GithubMultiOrgEntityProvider:production:refresh","taskInstanceId":"801b3c6c-167f-473b-b43e-e0b4b780c384","timestamp":"2024-09-09 23:55:59"}
    Copy to Clipboard Toggle word wrap

  2. GitHub アカウントでログインします。

第5章 Microsoft Azure での認証

Microsoft Azure でユーザーを認証する場合:

5.1. Microsoft Azure での認証の有効化

Red Hat Developer Hub には、OAuth を使用してユーザーを認証できる Microsoft Azure 認証プロバイダーが組み込まれています。

前提条件

  1. Microsoft Azure にアプリケーションを登録する権限がある。

手順

  1. Developer Hub が Microsoft Azure で認証できるようにするために、Microsoft Azure で OAuth アプリケーションを作成 します。

    1. Azure ポータルで App registrations に移動し、次の設定で New registration を作成します。

      名前
      Azure 内のアプリケーション名 (例: <My Developer Hub>)
    2. Home > App registrations > <My Developer Hub> > Manage > Authentication ページで、次の設定で プラットフォームを追加 します。

      Redirect URI
      Developer Hub で設定されたバックエンド認証 URI (https://<my_developer_hub_url>/api/auth/microsoft/handler/frame) を入力します。
      Front-channel logout URL
      空白のままにします。
      Implicit grant and hybrid flows
      すべてのチェックボックスをオフのままにします。
    3. Home > App registrations > <My Developer Hub> > Manage > API permissions ページで、権限を追加 してから、Microsoft Graph API の次の 委任された権限 を追加します。

      • email
      • offline_access
      • openid
      • profile
      • User.Read
      • Microsoft Graph API のオプションのカスタムスコープ。これは、このセクションと Developer Hub 設定ファイル app-config.yaml の両方で定義します。

企業によっては、これらの権限に対して管理者の同意を与えることが必要な場合があります。管理者の同意が必要ない場合でも、管理者の同意を与える場合があります。そうすることで、ユーザーが初めて Backstage にアクセスするときに、個別に同意する必要がなくなるためです。管理者の同意を付与するには、ディレクトリー管理者は admin consent ページに移動し、Grant admin consent for COMPANY NAME をクリックする必要があります。

  1. Home > App registrations > <My Developer Hub> > Manage > Certificates & Secrets ページの Client secrets タブで、新しいクライアントシークレット を作成します。
  2. 次のステップのために保存します。

    • ディレクトリー (テナント) ID
    • アプリケーション (クライアント) ID
    • アプリケーション (クライアント) シークレット

      1. Microsoft Azure 認証情報を Developer Hub に追加するには、以下のキーと値のペアを Developer Hub シークレット に追加します。

        AUTH_AZURE_TENANT_ID
        保存した ディレクトリー (テナント) ID を入力します。
        AUTH_AZURE_CLIENT_ID
        保存した アプリケーション (クライアント) ID を入力します。
        AUTH_AZURE_CLIENT_SECRET
        保存した アプリケーション (クライアント) シークレット を入力します。
      2. app-config.yaml ファイルで Microsoft Azure 認証プロバイダーを設定します。

        app-config.yaml ファイルのフラグメント

        auth:
          environment: production 
        1
        
          providers:
            microsoft:
              production:
                clientId: ${AUTH_AZURE_CLIENT_ID} 
        2
        
                clientSecret: ${AUTH_AZURE_CLIENT_SECRET}
                tenantId: ${AUTH_AZURE_TENANT_ID}
        signInPage: microsoft 
        3
        Copy to Clipboard Toggle word wrap

        1
        環境を実稼働環境としてマークし、Developer Hub のログインページで Guest ログインオプションを無効にします。
        2
        Developer Hub のシークレットに設定されている Microsoft Azure 認証情報を適用します。
        3
        Microsoft Azure プロバイダーを Developer Hub サインインプロバイダーとして設定します。
        1. オプション: 次のオプションフィールドを追加することを検討してください。

          domainHint

          シングルテナントアプリケーションの場合は任意です。他のテナントのアカウントを自動的に除外することで、複数のテナントにアカウントを持つユーザーのログインの手間を軽減できます。このパラメーターをシングルテナントアプリケーションで使用する場合は、コメントを解除してテナント ID を入力します。アプリケーション登録がマルチテナントの場合は、このパラメーターを空白のままにします。詳細は、Home Realm Discovery を参照してください。

          オプションの domainHint フィールドを含む app-config.yaml ファイルのフラグメント

          auth:
            environment: production
            providers:
              microsoft:
                production:
                  domainHint: ${AUTH_AZURE_TENANT_ID}
          Copy to Clipboard Toggle word wrap

          additionalScopes

          追加のスコープの場合は任意です。アプリケーション登録のスコープを追加するには、コメントを解除して、追加するスコープのリストを入力します。デフォルトおよび必須の値のリストは 'openid', 'offline_access', 'profile', 'email', 'User.Read' です。

          オプションの additionalScopes フィールドを含む app-config.yaml ファイルのフラグメント

          auth:
            environment: production
            providers:
              microsoft:
                production:
                  additionalScopes:
                     - Mail.Send
          Copy to Clipboard Toggle word wrap

          sessionDuration

          ユーザーセッションの有効期間。期間を ms ライブラリー形式 ('24h'、'2 days' など)、ISO 期間形式、またはコード内で使用される "human duration" 形式で入力します。

          オプションの sessionDuration フィールドを含む app-config-rhdh.yaml フラグメント

          auth:
            providers:
              microsoft:
                production:
                  sessionDuration: { hours: 24 }
          Copy to Clipboard Toggle word wrap

          signIn
          resolvers
          認証が成功したら、サインインするユーザーを、Developer Hub カタログ内の既存のユーザーに解決する必要があります。ユースケースに合わせて最適な形でユーザーを確実にマッチさせるために、特定のリゾルバーを設定することを検討してください。デフォルトのリゾルバー emailLocalPartMatchingUserEntityName をオーバーライドするには、リゾルバーのリストを入力します。

          認証プロバイダーは、成功するまで各サインインリゾルバーを順番に試行します。どれも成功しない場合は失敗します。

          警告

          実稼働モードでは、ユーザーが確実にマッチするように、リゾルバーを 1 つだけ設定してください。

          resolver

          サインインリゾルバー名を入力します。利用可能なリゾルバーは次のとおりです。

          • userIdMatchingUserEntityAnnotation
          • emailLocalPartMatchingUserEntityName
          • emailMatchingUserEntityProfileEmail
          dangerouslyAllowSignInWithoutUserInCatalog: true

          Developer Hub ソフトウェアカタログのユーザープロビジョニング要件を回避するようにサインインリゾルバーを設定します。

          警告

          Developer Hub の機能を調べるには dangerouslyAllowSignInWithoutUserInCatalog を使用しますが、実稼働環境では使用しないでください。

          ソフトウェアカタログに存在しないユーザーのサインインを許可するオプションのフィールドを含む app-config-rhdh.yaml フラグメント

          auth:
            environment: production
            providers:
              microsoft:
                production:
                  clientId: ${AUTH_AZURE_CLIENT_ID}
                  clientSecret: ${AUTH_AZURE_CLIENT_SECRET}
                  tenantId: ${AUTH_AZURE_TENANT_ID}
                  signIn:
                    resolvers:
                      - resolver: usernameMatchingUserEntityName
                        dangerouslyAllowSignInWithoutUserInCatalog: true
          signInPage: microsoft
          Copy to Clipboard Toggle word wrap

        注記

        ファイアウォールルールなどの送信アクセス制限がある環境では、このステップはオプションになります。環境にこのような制限がある場合は、RHDH バックエンドが次のホストにアクセスできることを確認してください。

        • login.microsoftonline.com: 認可コードとアクセストークンを取得および交換します。
        • graph.microsoft.com: ユーザープロファイル情報を取得します (ソースコードで参照)。このホストにアクセスできない場合は、ログインしようとすると Authentication failed, failed to fetch user profile というエラーが表示されることがあります。

        = Microsoft Azure からソフトウェアカタログへのユーザーのプロビジョニング

        Microsoft Azure でユーザーを認証するには、Microsoft Azure での認証を有効化 した後、Microsoft Azure から Developer Hub ソフトウェアカタログにユーザーをプロビジョニングします。

        手順

        • Microsoft Azure メンバー検出を有効にするには、app-config-rhdh などのカスタム Developer Hub ConfigMap を編集し、app-config.yaml コンテンツに次の行を追加します。
catalog:
  providers:
    microsoftGraphOrg:
      providerId:
        target: https://graph.microsoft.com/v1.0
        tenantId: ${AUTH_AZURE_TENANT_ID}
        clientId: ${AUTH_AZURE_CLIENT_ID}
        clientSecret: ${AUTH_AZURE_CLIENT_SECRET}
Copy to Clipboard Toggle word wrap
target: https://graph.microsoft.com/v1.0
プロバイダーが接続する MSGraph API エンドポイントを定義します。ベータエンドポイント などの別のバージョンを使用するには、このパラメーターを変更することを推奨します。
tenandIdclientIdclientSecret
Microsoft Azure で作成し、OpenShift でシークレットとして設定した Developer Hub アプリケーション情報を使用します。

オプション: 次のオプションの microsoftGraphOrg.providerId フィールドを追加することを検討してください。

authority: https://login.microsoftonline.com

使用する機関を定義します。Azure US government などの別の 機関 を使用するには、値を変更します。デフォルト値は https://login.microsoftonline.com です。

オプションの queryMode フィールドを含む app-config.yaml フラグメント

catalog:
  providers:
    microsoftGraphOrg:
      providerId:
        authority: https://login.microsoftonline.com/
Copy to Clipboard Toggle word wrap

queryMode: basic | advanced

デフォルトでは、Microsoft Graph API はクエリー用に basic 機能セットのみを提供します。特定の機能には advanced クエリー機能が必要です。Microsoft Azure Advanced queries を参照してください。

オプションの queryMode フィールドを含む app-config.yaml フラグメント

catalog:
  providers:
    microsoftGraphOrg:
      providerId:
        queryMode: advanced
Copy to Clipboard Toggle word wrap

user.expand

単一のリレーションシップ (ナビゲーションプロパティー) によって参照される拡張リソースまたはコレクションを結果に含めます。1 回のリクエストで拡張できる関係は 1 つだけです。Microsoft Graph query expand parameter を参照してください。このパラメーターは ] or xref:userFilter[ と組み合わせることができます。

オプションの user.expand フィールドを含む app-config.yaml フラグメント

catalog:
  providers:
    microsoftGraphOrg:
      providerId:
        user:
          expand: manager
Copy to Clipboard Toggle word wrap

user.filter

ユーザーをフィルタリングします。Microsoft Graph API および Microsoft Graph API query filter parameters syntax を参照してください。このパラメーターと ???TITLE??? は相互に排他的であるため、いずれか 1 つだけを指定できます。

オプションの user.filter フィールドを含む app-config.yaml フラグメント

catalog:
  providers:
    microsoftGraphOrg:
      providerId:
        user:
          filter: accountEnabled eq true and userType eq 'member'
Copy to Clipboard Toggle word wrap

user.loadPhotos: true | false

デフォルトで写真をロードします。ユーザーの写真をロードしない場合は false に設定します。

オプションの user.loadPhotos フィールドを含む app-config.yaml フラグメント

catalog:
  providers:
    microsoftGraphOrg:
      providerId:
        user:
          loadPhotos: true
Copy to Clipboard Toggle word wrap

user.select

取得する Microsoft Graph リソースの種類 を定義します。

オプションの user.select フィールドを含む app-config.yaml フラグメント

catalog:
  providers:
    microsoftGraphOrg:
      providerId:
        user:
          select: ['id', 'displayName', 'description']
Copy to Clipboard Toggle word wrap

userGroupMember.filter

グループメンバーシップを使用してユーザーを取得します。グループをフィルタリングし、そのメンバーを取得します。このパラメーターと ???TITLE??? は、相互に排他的であるため、いずれか 1 つだけを指定できます。

オプションの userGroupMember.filter フィールドを含む app-config.yaml フラグメント

catalog:
  providers:
    microsoftGraphOrg:
      providerId:
        userGroupMember:
          filter: "displayName eq 'Backstage Users'"
Copy to Clipboard Toggle word wrap

userGroupMember.search

グループメンバーシップを使用してユーザーを取得します。グループを検索し、そのメンバーを取得します。このパラメーターと ???TITLE??? は、相互に排他的であるため、いずれか 1 つだけを指定できます。

オプションの userGroupMember.search フィールドを含む app-config.yaml フラグメント

catalog:
  providers:
    microsoftGraphOrg:
      providerId:
        userGroupMember:
          search: '"description:One" AND ("displayName:Video" OR "displayName:Drive")'
Copy to Clipboard Toggle word wrap

group.expand

単一のリレーションシップ (ナビゲーションプロパティー) によって参照される拡張リソースまたはコレクションを結果に含めるためのオプションのパラメーター。1 回のリクエストで拡張できる関係は 1 つだけです。https://docs.microsoft.com/en-us/graph/query-parameters#expand-parameter を参照してください。このパラメーターは、] instead of xref:userFilter[ と組み合わせることができます。

オプションの group.expand フィールドを含む app-config.yaml フラグメント

catalog:
  providers:
    microsoftGraphOrg:
      providerId:
        group:
          expand: member
Copy to Clipboard Toggle word wrap

group.filter

グループをフィルタリングします。Microsoft Graph API query group syntax を参照してください。

オプションの group.filter フィールドを含む app-config.yaml フラグメント

catalog:
  providers:
    microsoftGraphOrg:
      providerId:
        group:
          filter: securityEnabled eq false and mailEnabled eq true and groupTypes/any(c:c+eq+'Unified')
Copy to Clipboard Toggle word wrap

group.search

グループを検索します。Microsoft Graph API query search parameter を参照してください。

オプションの group.search フィールドを含む app-config.yaml フラグメント

catalog:
  providers:
    microsoftGraphOrg:
      providerId:
        group:
          search: '"description:One" AND ("displayName:Video" OR "displayName:Drive")'
Copy to Clipboard Toggle word wrap

group.select

取得する Microsoft Graph リソースの種類 を定義します。

オプションの group.select フィールドを含む app-config.yaml フラグメント

catalog:
  providers:
    microsoftGraphOrg:
      providerId:
        group:
          select: ['id', 'displayName', 'description']
Copy to Clipboard Toggle word wrap

schedule.frequency

カスタムスケジュールの頻度を指定します。コード内で使用される cron、ISO 期間、および "人間が判読可能な期間" をサポートします。

オプションの schedule.frequency フィールドを含む app-config.yaml フラグメント

catalog:
  providers:
    microsoftGraphOrg:
      providerId:
        schedule:
          frequency: { hours: 1 }
Copy to Clipboard Toggle word wrap

schedule.timeout

カスタムタイムアウトを指定します。コード内で使用される ISO 期間と "人間が判読可能な期間" をサポートします。

オプションの schedule.timeout フィールドを含む app-config.yaml フラグメント

catalog:
  providers:
    microsoftGraphOrg:
      providerId:
        schedule:
          timeout: { minutes: 50 }
Copy to Clipboard Toggle word wrap

schedule.initialDelay

カスタム初期遅延を指定します。コード内で使用される ISO 期間と "人間が判読可能な期間" をサポートします。

オプションの schedule.initialDelay フィールドを含む app-config.yaml フラグメント

catalog:
  providers:
    microsoftGraphOrg:
      providerId:
        schedule:
          initialDelay: { seconds: 15}
Copy to Clipboard Toggle word wrap

検証

  1. コンソールログをチェックして、同期が完了したことを確認します。

    同期が成功した例:

    backend:start: {"class":"MicrosoftGraphOrgEntityProvider$1","level":"info","message":"Read 1 msgraph users and 1 msgraph groups in 2.2 seconds. Committing...","plugin":"catalog","service":"backstage","taskId":"MicrosoftGraphOrgEntityProvider:default:refresh","taskInstanceId":"88a67ce1-c466-41a4-9760-825e16b946be","timestamp":"2024-06-26 12:23:42"}
    backend:start: {"class":"MicrosoftGraphOrgEntityProvider$1","level":"info","message":"Committed 1 msgraph users and 1 msgraph groups in 0.0 seconds.","plugin":"catalog","service":"backstage","taskId":"MicrosoftGraphOrgEntityProvider:default:refresh","taskInstanceId":"88a67ce1-c466-41a4-9760-825e16b946be","timestamp":"2024-06-26 12:23:42"}
    Copy to Clipboard Toggle word wrap

  2. Microsoft Azure アカウントでログインします。

法律上の通知

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る