Documentation

17. ソーシャル認証の設定

認証メソッドを使用して、サードパーティーの Web サイト専用のログインアカウントを新規作成するのではなく、既存のログイン情報を使用してシングルサインオンでサードパーティーのサイトにサインインするなど、エンドユーザーのログインを簡素化することができます。

アカウント認証は automation controller ユーザーインターフェースで設定でき、PostgreSQL データベースに保存されます。手順については「コントローラーの設定」セクションを参照してください。

automation controller のアカウント認証は、OAuth2 を使用して一元的に設定できますが、エンタープライズレベルのアカウント認証については、認証情報のソースとして、SAML、RADIUS や LDAP も設定できます。

アカウント情報を提供する Microsoft Azure、Google または GitHub などの Web サイトでは、アカウント情報は通常 OAuth 標準を使用して実装されます。OAuth とは、一般的にアカウント認証と合わせて使用されるセキュアな認証プロトコルのことで、ユーザーの代わりにプロバイダーに対して API 呼び出しを行うことができるように、サードパーティーのアプリケーションに「セッショントークン」を付与します。

SAML (Security Assertion Markup Language) は、ID プロバイダーとサービスプロバイダー間でアカウント認証と承認データを交換するための、オープン標準の XML データ形式です。

RADIUS の分散クライアント/サーバーシステムは、不正アクセスからネットワークを保護することができます。このシステムは、高いレベルのセキュリティーを必要とし、リモートユーザー向けにネットワークアクセスを維持する必要のあるネットワーク環境に実装することができます。

17.1. GitHub 設定

To set up social authentication for GitHub, you will need to obtain an OAuth2 key and secret for a web application. To do this, you must first register the new application with GitHub at https://github.com/settings/developers. In order to register the application, you must supply it with your homepage URL, which is the Callback URL shown in the Details tab for the GitHub default settings page. The OAuth2 key (Client ID) and secret (Client Secret) will be used to supply the required fields in the automation controller User Interface.

  1. 左側のナビゲーションバーで 設定 をクリックします。

  2. 設定ウィンドウの左側で、認証オプションの一覧から GitHub 設定 をクリックします。

  3. GitHub のデフォルト タブを選択していない場合には、このタブをクリックします。

GitHub OAuth2 コールバック URL フィールドには、事前に情報が入力されており、編集できません。アプリケーションを登録すると、GitHub ではクライアント ID およびクライアントシークレットが表示されます。

  1. 編集 をクリックし、GitHub のクライアント ID を GitHub OAuth2 キー フィールドにコピーアンドペーストします。

  2. GitHub のクライアントシークレットを GitHub OAuth2 シークレット フィールドにコピーアンドペーストします。

  3. マッピングフィールドの入力に関する情報は、「組織およびチームマッピング」を参照してください。

  4. 完了したら 保存 をクリックします。

  5. 認証が正しく設定されたかどうかは、automation controller からログアウトします。ログイン画面に、GitHub のロゴが表示され、GitHub の認証情報を使用してログインできるようになっていることを確認してください。

_images/configure-tower-auth-github-logo.png

17.1.1. GitHub Organization settings

組織または組織内のチームでアカウント認証を定義する場合には、特定の組織およびチームの設定を使用する必要があります。アカウントの認証は、組織または組織内のチーム別に絞り込むことができます。

(上記のように) 組織以外またはチーム以外の設定を指定してすべてを許可するように設定することも可能です。

コントローラーにログインできるユーザーを、組織または組織内のチームに所属するユーザーのみに制限することができます。

To set up social authentication for a GitHub Organization, you will need to obtain an OAuth2 key and secret for a web application. To do this, you must first register your organization-owned application at https://github.com/organizations/<yourorg>/settings/applications. In order to register the application, you must supply it with your Authorization callback URL, which is the Callback URL shown in the Details page. Each key and secret must belong to a unique application and cannot be shared or reused between different authentication backends. The OAuth2 key (Client ID) and secret (Client Secret) will be used to supply the required fields in the automation controller User Interface.

  1. 左側のナビゲーションバーで 設定 をクリックします。

  2. 設定ウィンドウの左側で、認証オプションの一覧から GitHub 設定 をクリックします。

  3. GitHub 組織 タブをクリックします。

GitHub 組織の OAuth2 コールバック URL フィールドには、事前に情報が入力されており、編集できません。

アプリケーションの登録が済むと、GitHub ではクライアント ID およびクライアントシークレットが表示されます。

  1. 編集 をクリックし、GitHub のクライアント ID を GitHub 組織 OAuth2 キー フィールドにコピーアンドペーストします。

  2. GitHub のクライアントシークレットを GitHub 組織の OAuth2 シークレット フィールドにコピーアンドペーストします。

  3. Enter the name of your GitHub organization, as used in your organization's URL (e.g., https://github.com/<yourorg>/) in the GitHub Organization Name field.

  4. マッピングフィールドの入力に関する情報は、「組織およびチームマッピング」を参照してください。

  5. 完了したら 保存 をクリックします。

  6. 認証が正しく設定されたかどうかは、automation controller からログアウトします。ログイン画面に、GitHub 組織のロゴが表示され、GitHub の認証情報を使用してログインできるようになっていることを確認してください。

_images/configure-tower-auth-github-orgs-logo.png

17.1.2. GitHub チーム設定

To set up social authentication for a GitHub Team, you will need to obtain an OAuth2 key and secret for a web application. To do this, you must first register your team-owned application at https://github.com/organizations/<yourorg>/settings/applications. In order to register the application, you must supply it with your Authorization callback URL, which is the Callback URL shown in the Details page. Each key and secret must belong to a unique application and cannot be shared or reused between different authentication backends. The OAuth2 key (Client ID) and secret (Client Secret) will be used to supply the required fields in the automation controller User Interface.

  1. http://fabian-kostadinov.github.io/2015/01/16/how-to-find-a-github-team-id/ から GitHub API を使用して数値のチーム ID を検索します。チーム ID は、automation controller ユーザーインターフェースの必須フィールドに指定するのに使用されます。

  2. 左側のナビゲーションバーで 設定 をクリックします。

  3. 設定ウィンドウの左側で、認証オプションの一覧から GitHub 設定 をクリックします。

  4. GitHub チーム タブをクリックします。

GitHub チーム OAuth2 コールバック URL フィールドには、事前に情報が入力されており、編集できません。アプリケーションを登録すると、GitHub ではクライアント ID およびクライアントシークレットが表示されます。

  1. 編集 をクリックし、GitHub のクライアント ID を GitHub チーム OAuth2 キー フィールドにコピーアンドペーストします。

  2. GitHub のクライアントシークレットを GitHub チームの OAuth2 シークレット フィールドにコピーアンドペーストします。

  3. Copy and paste GitHub's team ID in the GitHub Team ID field.

  4. マッピングフィールドの入力に関する情報は、「組織およびチームマッピング」を参照してください。

  5. 完了したら 保存 をクリックします。

  6. 認証が正しく設定されたかどうかは、automation controller からログアウトします。ログイン画面に、GitHub チームのロゴが表示され、GitHub の認証情報を使用してログインできるようになっていることを確認してください。

_images/configure-tower-auth-github-teams-logo.png

17.1.3. GitHub Enterprise settings

To set up social authentication for a GitHub Enterprise, you will need to obtain a GitHub Enterprise URL, an API URL, OAuth2 key and secret for a web application. To obtain the URLs, refer to the GitHub documentation on GitHub Enterprise administration . To obtain the key and secret, you must first register your enterprise-owned application at https://github.com/organizations/<yourorg>/settings/applications. In order to register the application, you must supply it with your Authorization callback URL, which is the Callback URL shown in the Details page. Because its hosted on site and not github.com, you must specify which auth adapter it will talk to.

Each key and secret must belong to a unique application and cannot be shared or reused between different authentication backends. The OAuth2 key (Client ID) and secret (Client Secret) will be used to supply the required fields in the automation controller User Interface.

  1. 左側のナビゲーションバーで 設定 をクリックします。

  2. 設定ウィンドウの左側で、認証オプションの一覧から GitHub 設定 をクリックします。

  3. Click the GitHub Enterprise tab.

The GitHub Enterprise OAuth2 Callback URL field is already pre-populated and non-editable. Once the application is registered, GitHub displays the Client ID and Client Secret.

  1. Click Edit to configure GitHub Enterprise settings.

  2. In the GitHub Enterprise URL field, enter the hostname of the GitHub Enterprise instance (e.g., https://github.example.com).

  3. In the GitHub Enterprise API URL field, enter the API URL of the GitHub Enterprise instance (e.g., https://github.example.com/api/v3)

  4. Copy and paste GitHub's Client ID into the GitHub Enterprise OAuth2 Key field.

  5. Copy and paste GitHub's Client Secret into the GitHub Enterprise OAuth2 Secret field.

  6. マッピングフィールドの入力に関する情報は、「組織およびチームマッピング」を参照してください。

  7. 完了したら 保存 をクリックします。

  8. To verify that the authentication was configured correctly, logout of automation controller and the login screen will now display the GitHub Enterprise logo to allow logging in with those credentials.

_images/configure-tower-auth-github-ent-logo.png

17.1.4. GitHub Enterprise Organization settings

To set up social authentication for a GitHub Enterprise Org, you will need to obtain a GitHub Enterprise Org URL, an Org API URL, an Org OAuth2 key and secret for a web application. To obtain the URLs, refer to the GitHub documentation on GitHub Enterprise administration . To obtain the key and secret, you must first register your enterprise organization-owned application at https://github.com/organizations/<yourorg>/settings/applications. In order to register the application, you must supply it with your Authorization callback URL, which is the Callback URL shown in the Details page. Because its hosted on site and not github.com, you must specify which auth adapter it will talk to.

Each key and secret must belong to a unique application and cannot be shared or reused between different authentication backends. The OAuth2 key (Client ID) and secret (Client Secret) will be used to supply the required fields in the automation controller User Interface.

  1. 左側のナビゲーションバーで 設定 をクリックします。

  2. 設定ウィンドウの左側で、認証オプションの一覧から GitHub 設定 をクリックします。

  3. Click the GitHub Enterprise Organization tab.

The GitHub Enterprise Organization OAuth2 Callback URL field is already pre-populated and non-editable. Once the application is registered, GitHub displays the Client ID and Client Secret.

  1. Click Edit to configure GitHub Enterprise Organization settings.

  2. In the GitHub Enterprise Organization URL field, enter the hostname of the GitHub Enterprise Org instance (e.g., https://github.orgexample.com).

  3. In the GitHub Enterprise Organization API URL field, enter the API URL of the GitHub Enterprise Org instance (e.g., https://github.orgexample.com/api/v3)

  4. Copy and paste GitHub's Client ID into the GitHub Enterprise Organization OAuth2 Key field.

  5. Copy and paste GitHub's Client Secret into the GitHub Enterprise Organization OAuth2 Secret field.

  6. Enter the name of your GitHub Enterprise organization, as used in your organization's URL (e.g., https://github.com/<yourorg>/) in the GitHub Enterprise Organization Name field.

  7. マッピングフィールドの入力に関する情報は、「組織およびチームマッピング」を参照してください。

  8. 完了したら 保存 をクリックします。

  9. To verify that the authentication was configured correctly, logout of automation controller and the login screen will now display the GitHub Enterprise Organization logo to allow logging in with those credentials.

_images/configure-tower-auth-github-ent-org-logo.png

17.1.5. GitHub Enterprise Team settings

To set up social authentication for a GitHub Enterprise teams, you will need to obtain a GitHub Enterprise Org URL, an Org API URL, an Org OAuth2 key and secret for a web application. To obtain the URLs, refer to the GitHub documentation on GitHub Enterprise administration . To obtain the key and secret, you must first register your enterprise team-owned application at https://github.com/organizations/<yourorg>/settings/applications. In order to register the application, you must supply it with your Authorization callback URL, which is the Callback URL shown in the Details page. Because its hosted on site and not github.com, you must specify which auth adapter it will talk to.

Each key and secret must belong to a unique application and cannot be shared or reused between different authentication backends. The OAuth2 key (Client ID) and secret (Client Secret) will be used to supply the required fields in the automation controller User Interface.

  1. http://fabian-kostadinov.github.io/2015/01/16/how-to-find-a-github-team-id/ から GitHub API を使用して数値のチーム ID を検索します。チーム ID は、automation controller ユーザーインターフェースの必須フィールドに指定するのに使用されます。

  2. 左側のナビゲーションバーで 設定 をクリックします。

  3. 設定ウィンドウの左側で、認証オプションの一覧から GitHub 設定 をクリックします。

  4. Click the GitHub Enterprise Team tab.

The GitHub Enterprise Team OAuth2 Callback URL field is already pre-populated and non-editable. Once the application is registered, GitHub displays the Client ID and Client Secret.

  1. Click Edit to configure GitHub Enterprise Team settings.

  2. In the GitHub Enterprise Team URL field, enter the hostname of the GitHub Enterprise team instance (e.g., https://github.teamexample.com).

  3. In the GitHub Enterprise Team API URL field, enter the API URL of the GitHub Enterprise team instance (e.g., https://github.teamexample.com/api/v3)

  4. Copy and paste GitHub's Client ID into the GitHub Enterprise Team OAuth2 Key field.

  5. Copy and paste GitHub's Client Secret into the GitHub Enterprise Team OAuth2 Secret field.

  6. Copy and paste GitHub's team ID in the GitHub Enterprise Team ID field.

  7. マッピングフィールドの入力に関する情報は、「組織およびチームマッピング」を参照してください。

  8. 完了したら 保存 をクリックします。

  9. To verify that the authentication was configured correctly, logout of automation controller and the login screen will now display the GitHub Enterprise Teams logo to allow logging in with those credentials.

_images/configure-tower-auth-github-ent-teams-logo.png

17.2. Google OAuth2 の設定

Google のソーシャル認証を設定するには、Web アプリケーションの OAuth2 キーとシークレットを取得する必要があります。これには、最初にプロジェクトを作成して、Google で設定する必要があります。方法は https://support.google.com/googleapi/answer/6158849 を参照してください。設定プロセスが完了している場合には、Google API Manager Console認証情報 のセクションに移動すると、これらの認証を利用することができます。OAuth2 キー (Client ID) および シークレット (クライアントシークレット) は、automation controller ユーザーインターフェースの必須フィールドで使用します。

  1. 左側のナビゲーションバーで 設定 をクリックします。

  2. 設定ウィンドウの左側で、認証オプションの一覧から Google OAuth2 の設定 をクリックします。

Google OAuth2 コールバック URL フィールドには、事前に情報が入力されており、編集できません。

  1. 以下のフィールドは事前に入力されています。入力されていない場合には、Web アプリケーションの設定プロセスで Google が提示した認証情報を使用し、以下の例と同じ形式の値を探します。

  • 編集 をクリックし、Google のクライアント ID を Google OAuth2 キー フィールドにコピーアンドペーストします。

  • Google のクライアントシークレットを Google OAuth2 シークレット フィールドにコピーアンドペーストします。

    _images/configure-tower-auth-google.png
  1. 残りの任意フィールドを入力するには、説明や必要な形式について各フィールドのヒントを参照してください。

  2. マッピングフィールドの入力に関する情報は、「組織およびチームマッピング」を参照してください。

  3. 完了したら 保存 をクリックします。

  4. 認証が正しく設定されていることを確認するには、automation controller からログアウトしてください。automation controller への別のログイン方法として、ログイン画面に Google のロゴが表示されているはずです。

_images/configure-tower-auth-google-logo.png

17.3. 組織およびチームマッピング

17.3.1. 組織マッピング

ユーザー名およびメールアドレスをもとに、どのユーザーがどのコントローラー組織に配置されるかを制御する必要があります (ソーシャルまたはエンタープライズレベルの認証アカウントからの組織の管理者/ユーザーをマッピング)。

ディクショナリーキーとは組織名のことです。組織が存在しない場合や、対象のライセンスで複数の組織に対応できる場合には、組織が作成されます。それ以外の場合は、キーが何であっても、単一のデフォルトの組織が使用されます。

値は、各組織のメンバーシップのオプションを定義するディクショナリーです。各組織に対して、自動的に組織に所属するユーザーや、組織の管理ができるユーザーを指定することができます。

admins: None、True/False、文字列または文字列のリスト/タプル

  • None の場合は、組織の管理者は更新されません。

  • True の場合は、アカウント認証を使用する全ユーザーが自動的に組織の管理者として追加されます。

  • False の場合は、組織の管理者として追加されるアカウント認証ユーザーはありません。

  • 文字列または文字列のリストの場合は、組織に追加予定のユーザーのユーザー名およびメールアドレスを指定します。末尾と文頭が / の文字列は、通常の表現にコンパイルされ、修飾子 i (大文字、小文字の区別あり) と m (複数行) は末尾の / の後ろに指定することができます。

remove_admins: True/False。デフォルト値は True です。

  • True の場合は、合致がないユーザーは、組織の管理者リストから削除されます。

users: None、True/False、文字列または文字列のリスト/タプル。admins と同じルールが適用されます。

remove_users: True/False。デフォルト値は True で、remove_admins と同じルールが適用されます。

{
    "Default": {
        "users": true
    },
    "Test Org": {
        "admins": ["[email protected]"],
        "users": true
    },
    "Test Org 2": {
        "admins": ["[email protected]", "/^controller-[^@]+?@.*$/i"],
        "users": "/^[^@].*?@example\\.com$/"
    }
}

アカウント認証のバックエンドごとに、組織マッピングを指定することができます。定義した場合には、上記のグローバル設定より、これらの設定が優先されます。

SOCIAL_AUTH_GOOGLE_OAUTH2_ORGANIZATION_MAP = {}
SOCIAL_AUTH_GITHUB_ORGANIZATION_MAP = {}
SOCIAL_AUTH_GITHUB_ORG_ORGANIZATION_MAP = {}
SOCIAL_AUTH_GITHUB_TEAM_ORGANIZATION_MAP = {}
SOCIAL_AUTH_SAML_ORGANIZATION_MAP = {}

17.3.2. チームマッピング

チームマッピングは、ソーシャル認証アカウントからのチームメンバー (ユーザー) のマッピングです。キーはチーム名です (存在しない場合に作成されます)。値は、各チームのメンバーシップに関するオプションのディクショナリーとなります。各値には以下のパラメーターを含めることができます。

組織: 文字列。チームが所属する組織の名前。チームは、組織とチームの組み合わせが存在しない場合には作成されます。組織が存在しない場合には、先に作成されます。ライセンスが複数の組織に対応しない場合は、チームは常に、単一のデフォルトの組織に割り当てられます。

users: None、True/False、文字列または文字列のリスト/タプル

  • None の場合には、チームメンバーは更新されません。

  • True/False の場合には、全ソーシャル認証ユーザーがチームメンバーとして追加/削除されます。

  • 文字列または文字列のリストの場合は、ユーザーの照合に使用する表現を指定します。ユーザー名またはメールが合致すると、そのユーザーはチームメンバーとして追加されます。末尾と文頭が / の文字列は、通常の表現にコンパイルされ、修飾子 i (大文字、小文字の区別あり) と m (複数行) は末尾の / の後ろに指定することができます。

remove: True/False。デフォルト値は True です。True の場合は、上記のルールに一致しないユーザーは、チームから削除されます。

{
    "My Team": {
        "organization": "Test Org",
        "users": ["/^[^@]+?@test\\.example\\.com$/"],
        "remove": true
    },
    "Other Team": {
        "organization": "Test Org 2",
        "users": ["/^[^@]+?@test\\.example\\.com$/"],
        "remove": false
    }
}

アカウント認証のバックエンドごとに、設定した内容をもとにチームマッピングを指定することができます。定義した場合には、上記のグローバル設定より、これらの設定が優先されます。

SOCIAL_AUTH_GOOGLE_OAUTH2_TEAM_MAP = {}
SOCIAL_AUTH_GITHUB_TEAM_MAP = {}
SOCIAL_AUTH_GITHUB_ORG_TEAM_MAP = {}
SOCIAL_AUTH_GITHUB_TEAM_TEAM_MAP = {}
SOCIAL_AUTH_SAML_TEAM_MAP = {}

以下の行のコメント設定を解除 (つまり SOCIAL_AUTH_USER_FIELDS を空のリストに設定) して、新規アカウントが作成されないようにします。ソーシャル認証またはエンタープライズレベルの認証でコントローラーにログインしたことのあるユーザーまたはユーザーアカウントのメールアドレスが一致するユーザーのみがログインできます。

SOCIAL_AUTH_USER_FIELDS = []