Documentation

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

認証メソッドを使用して、サードパーティーの 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 の分散クライアント/サーバーシステムは、不正アクセスからネットワークを保護することができます。このシステムは、高いレベルのセキュリティーを必要とし、リモートユーザー向けにネットワークアクセスを維持する必要のあるネットワーク環境に実装することができます。

20.1. 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

20.2. GitHub 設定

GitHub にソーシャル認証を設定するには、Web アプリケーションの OAuth2 キーおよびシークレットを取得する必要があります。これを行うには、最初に https://github.com/settings/developers で、GitHub に新しいアプリケーションを登録する必要があります。アプリケーションを登録するには、ホームページの URL を指定する必要があります。これは、GitHub デフォルト設定ウィンドウの詳細タブに表示される コールバック URL です。OAuth2 キー (クライアント ID) とシークレット (クライアントシークレット) は、automation controller ユーザーインターフェースの必須フィールドを提供するために使用されます。

  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

20.2.1. GitHub 組織設定

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

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

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

GitHub 組織のソーシャル認証を設定するには、Web アプリケーションの OAuth2 キーとシークレットを取得する必要があります。これには、まず、https://github.com/organizations/<yourorg>/settings/applications から組織が所有するアプリケーションに登録する必要があります。アプリケーションを登録するには、認証コールバック URL でアプリケーションを指定する必要があります。この URL は、GitHub デフォルト設定ウィンドウに表示されるコールバック URL です。各キーおよびシークレットは、一意のアプリケーションに属する必要があり、認証バックエンドが異なる場合に共有や再利用はできません。OAuth2 キー (クライアント ID) およびシークレット (クライアントシークレット) は automation controller ユーザーインターフェースの必須フィールドに投入するために使用されます。

  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-orgs-logo.png

20.2.2. GitHub チーム設定

GitHub チームのソーシャル認証を設定するには、Web アプリケーションの OAuth2 キーとシークレットを取得する必要があります。これには、まず、https://github.com/organizations/<yourorg>/settings/applications からチームが所有するアプリケーションに登録する必要があります。アプリケーションを登録するには、認証コールバック URL でアプリケーションを指定する必要があります。この URL は、GitHub デフォルト設定ウィンドウに表示されるコールバック URL です。各キーおよびシークレットは、一意のアプリケーションに属する必要があり、認証バックエンドが異なる場合に共有や再利用はできません。OAuth2 キー (クライアント ID) およびシークレット (クライアントシークレット) は automation controller ユーザーインターフェースの必須フィールドに投入するために使用されます。

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

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

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

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

20.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 = {}

20.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 = []