4.2. Microsoft Azure からソフトウェアカタログへのユーザーのプロビジョニング
Microsoft Azure でユーザーを認証するには、Microsoft Azure での認証を有効化 した後、Microsoft Azure から Developer Hub ソフトウェアカタログにユーザーをプロビジョニングします。
手順
Microsoft Azure メンバー検出を有効にするには、
app-config-rhdh
などのカスタム Developer Hub ConfigMap を編集し、app-config.yaml
コンテンツに次の行を追加します。必須の
microsoftGraphOrg
フィールドを含むapp-config.yaml
フラグメントdangerouslyAllowSignInWithoutUserInCatalog: false 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}
dangerouslyAllowSignInWithoutUserInCatalog: false
- Developer Hub ソフトウェアカタログ内のユーザーのみに認証を許可します。
target: https://graph.microsoft.com/v1.0
- プロバイダーが接続する MSGraph API エンドポイントを定義します。ベータエンドポイント などの別のバージョンを使用するには、このパラメーターを変更することを推奨します。
tenandId
、clientId
、clientSecret
- 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/
queryMode: basic | advanced
デフォルトでは、Microsoft Graph API はクエリー用に
basic
機能セットのみを提供します。特定の機能にはadvanced
クエリー機能が必要です。Microsoft Azure Advanced queries を参照してください。オプションの
queryMode
フィールドを含むapp-config.yaml
フラグメントcatalog: providers: microsoftGraphOrg: providerId: queryMode: advanced
user.expand
単一のリレーションシップ (ナビゲーションプロパティー) によって参照される拡張リソースまたはコレクションを結果に含めます。1 回のリクエストで拡張できる関係は 1 つだけです。Microsoft Graph query expand parameter を参照してください。このパラメーターは ] or xref:userFilter[ と組み合わせることができます。
オプションの
user.expand
フィールドを含むapp-config.yaml
フラグメントcatalog: providers: microsoftGraphOrg: providerId: user: expand: manager
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'
user.loadPhotos: true | false
デフォルトで写真をロードします。ユーザーの写真をロードしない場合は
false
に設定します。オプションの
user.loadPhotos
フィールドを含むapp-config.yaml
フラグメントcatalog: providers: microsoftGraphOrg: providerId: user: loadPhotos: true
user.select
取得する Microsoft Graph リソースの種類 を定義します。
オプションの
user.select
フィールドを含むapp-config.yaml
フラグメントcatalog: providers: microsoftGraphOrg: providerId: user: select: ['id', 'displayName', 'description']
userGroupMember.filter
グループメンバーシップを使用してユーザーを取得します。グループをフィルタリングし、そのメンバーを取得します。このパラメーターと ???TITLE??? は、相互に排他的であるため、いずれか 1 つだけを指定できます。
オプションの
userGroupMember.filter
フィールドを含むapp-config.yaml
フラグメントcatalog: providers: microsoftGraphOrg: providerId: userGroupMember: filter: "displayName eq 'Backstage Users'"
userGroupMember.search
グループメンバーシップを使用してユーザーを取得します。グループを検索し、そのメンバーを取得します。このパラメーターと ???TITLE??? は、相互に排他的であるため、いずれか 1 つだけを指定できます。
オプションの
userGroupMember.search
フィールドを含むapp-config.yaml
フラグメントcatalog: providers: microsoftGraphOrg: providerId: userGroupMember: search: '"description:One" AND ("displayName:Video" OR "displayName:Drive")'
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
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')
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")'
group.select
取得する Microsoft Graph リソースの種類 を定義します。
オプションの
group.select
フィールドを含むapp-config.yaml
フラグメントcatalog: providers: microsoftGraphOrg: providerId: group: select: ['id', 'displayName', 'description']
schedule.frequency
カスタムスケジュールの頻度を指定します。コード内で使用される cron、ISO 期間、および "人間が判読可能な期間" をサポートします。
オプションの
schedule.frequency
フィールドを含むapp-config.yaml
フラグメントcatalog: providers: microsoftGraphOrg: providerId: schedule: frequency: { hours: 1 }
schedule.timeout
カスタムタイムアウトを指定します。コード内で使用される ISO 期間と "人間が判読可能な期間" をサポートします。
オプションの
schedule.timeout
フィールドを含むapp-config.yaml
フラグメントcatalog: providers: microsoftGraphOrg: providerId: schedule: timeout: { minutes: 50 }
schedule.initialDelay
カスタム初期遅延を指定します。コード内で使用される ISO 期間と "人間が判読可能な期間" をサポートします。
オプションの
schedule.initialDelay
フィールドを含むapp-config.yaml
フラグメントcatalog: providers: microsoftGraphOrg: providerId: schedule: initialDelay: { seconds: 15}
検証
コンソールログをチェックして、同期が完了したことを確認します。
同期が成功した例:
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"}
- Microsoft Azure アカウントでログインします。