13.3.10.2. マスターでの認証の設定
状況に応じて以下のいずれかの手順を実行します。
Openshift Container Platform のインストールがすでに完了している場合は、/etc/origin/master/master-config.yaml ファイルを新規ディレクトリーにコピーします。 以下は例になります。
$ cd /etc/origin/master $ mkdir githubconfig; cp master-config.yaml githubconfig
OpenShift Container Platform をまだインストールしていない場合は、OpenShift Container Platform API サーバーを起動し、(将来の) OpenShift Container Platform マスターのホスト名と、起動コマンドによって作成された設定ファイルを格納するディレクトリーを指定します。
$ openshift start master --public-master=<apiserver> --write-config=<directory>
以下に例を示します。
$ openshift start master --public-master=https://myapiserver.com:8443 --write-config=githubconfig
注記Ansible を使用してインストールする場合は、
identityProvider
設定を Ansible Playbook に追加する必要があります。Ansible を使用してインストールした後、以下の手順に従って設定を手動で変更した場合、インストールツールまたはアップグレードを再実行するたびに変更内容がすべて失われます。注記openshift start master
を使用するとホスト名が自動的に検出されますが、GitHub はアプリケーション登録時に指定した正確なホスト名にリダイレクトできる必要があります。このため、ID は間違ったアドレスにリダイレクトする可能性があるために自動検出することはできません。代わりに、Web ブラウザーが OpenShift Container Platform クラスターとの対話に使用するホスト名を指定する必要があります。
新規 master-config.yaml ファイルの
identityProviders
スタンザを編集し、GitHubIdentityProvider
設定例をコピーして貼り付け、既存のスタンザを置き換えます。oauthConfig: ... identityProviders: - name: github 1 challenge: false 2 login: true 3 mappingMethod: claim 4 provider: apiVersion: v1 kind: GitHubIdentityProvider ca: ... 5 clientID: ... 6 clientSecret: ... 7 hostname: ... 8 organizations: 9 - myorganization1 - myorganization2 teams: 10 - myorganization1/team-a - myorganization2/team-b
- 1
- このプロバイダー名は GitHub の数字ユーザー ID に接頭辞として付加され、アイデンティティー名が作成されます。これはコールバック URL を作成するためにも使用されます。
- 2
GitHubIdentityProvider
を使用してWWW-Authenticate
チャレンジを送信することはできません。- 3
true
の場合、(Web コンソールの場合のように) Web クライアントからの非認証トークン要求はログインする GitHub にリダイレクトされます。- 4
- このプロバイダーのアイデンティティーとユーザーオブジェクト間のマッピングの確立方法を制御します (上記 を参照してください)。
- 5
- GitHub Enterprise の場合、CA は、サーバーに要求を行う際に使用するオプションの信頼される認証局バンドルです。デフォルトのシステムルート証明書を使用するにはこのパラメーターを省略します。GitHub の場合は、このパラメーターを省略します。
- 6
- 登録済みの GitHub OAuth アプリケーション のクライアント ID。アプリケーションは、
<master>/oauth2callback/<identityProviderName>
のコールバック URL を使用して設定する必要があります。 - 7
- GitHub で発行されるクライアントシークレットです。この値は 環境変数、外部ファイル、または暗号化されたファイル でも指定できます。
- 8
- GitHub Enterprise の場合、
example.com
などのインスタンスのホスト名を指定する必要があります。この値は /setup/settings ファイルにある GitHub Enterprisehostname
値に一致する必要があり、ポート番号を含めることはできません。GitHub の場合は、このパラメーターを省略します。 - 9
- 組織のオプションの一覧です。これが指定されている場合、少なくとも一覧のいずれかの組織のメンバーである GitHub ユーザーのみがログインできます。その組織が
clientID
で設定された GitHub OAuth アプリケーションを所有していない場合、組織の所有者はこのオプションを使用するためにサードパーティーのアクセスを付与する必要があります。これは組織の管理者が初回の GitHub ログイン時に、または GitHub の組織設定で実行できます。これはteams
フィールドと組み合わせて使用することはできません。 - 10
- チームのオプションの一覧です。これが指定されている場合、少なくとも一覧のいずれかのチームのメンバーである GitHub ユーザーのみがログインできます。そのチームの組織が
clientID
で設定された GitHub OAuth アプリケーションを所有していない場合、組織の所有者はこのオプションを使用するためにサードパーティーのアクセスを付与する必要があります。これは組織の管理者が初回の GitHub ログイン時に、または GitHub の組織設定で実行できます。これはorganizations
フィールドと組み合わせて使用することはできません。
以下の変更を
identityProviders
スタンザに加えます。プロバイダーの
name
を変更して、GitHub で設定したコールバック URL に一致させます。たとえば、コールバック URL を
https://myapiserver.com:8443/oauth2callback/github/
として定義した場合、name
はgithub
にする必要があります。-
clientID
を 以前に登録した GitHub のクライアント ID に変更します。 -
clientSecret
を 以前に登録した GitHub のクライアントシークレットに変更します。 -
organizations
またはteams
を変更して、ユーザーが認証を行うためにメンバーシップを設定している必要がある 1 つ以上の GitHub 組織またはチームの一覧を組み込むようにします。これが指定されている場合、少なくとも一覧のいずれかの組織またはチームのメンバーである GitHub ユーザーのみがログインできます。これが指定されていない場合、有効な GitHub アカウントを持つすべてのユーザーがログインできます。
- 変更を保存してファイルを閉じます。
OpenShift Container Platform API サーバーを起動し、変更したばかりの設定ファイルを指定します。
$ openshift start master --config=<path/to/modified/config>/master-config.yaml
これが設定されると、OpenShift Container Platform の Web コンソールにログインするユーザーには GitHub の認証情報を使用してログインすることを求めるプロンプトが出されます。初回ログイン時に、ユーザーは authorize application をクリックして GitHub が OpenShift Container Platform でのユーザー名、パスワードおよび組織のメンバーシップを使用することを許可する必要があります。その後、ユーザーは Web コンソールにリダイレクトされます。