第3章 トークンベースの認証を使用した外部アプリケーションへのアクセスの設定
トークンベースの認証を使用すると、統合された OAuth 2 トークンのサポートにより、サードパーティーのツールやサービスをプラットフォームで認証できます。Ansible Automation Platform は、OAuth Personal Access Token (PAT) の両方を利用します。
- OAuth トークン
- OAuth トークンは、特定のアプリケーションに関連付けられています。このトークンを使用すると、アプリケーションがユーザーのログイン情報を開示することなくデータにアクセスできます。
- Personal Access Tokens
- PAT は、ユーザー個人のものであり、特定のアプリケーションに関連付けられたものではありません。ユーザーが自分自身の使用のために直接作成します。
アクセストークンのデフォルトの有効期限が 1000 年から 1 年に更新されました。この変更により、トークンのローテーションが頻繁に行われるようになり、認証情報のセキュリティーが強化されます。
Controller 2.4 および以前のバージョンのプラットフォームゲートウェイのアクセストークンの有効期間は、1000 年間でした。2.5.20250604 パッチリリースより前に作成された既存のトークンの有効期限は、1000 年のままです。
次のように、settings.py ファイルで有効期限を変更することにより、この設定を特定の要件に合わせてカスタマイズできます。
OAUTH2_PROVIDER__ACCESS_TOKEN_EXPIRE_SECONDS = 31536000
OAUTH2_PROVIDER__ACCESS_TOKEN_EXPIRE_SECONDS = 31536000
settings.py ファイルの詳細と、このファイルを使用してプラットフォームの各要素を設定する方法については、「Ansible Automation Platform の運用」の settings.py を参照してください。
OAuth2 仕様の詳細は、The OAuth 2.0 Authorization Framework を参照してください。
manage ユーティリティーを使用してトークンを作成する方法の詳細は、トークンとセッションの管理 を参照してください。
3.1. アプリケーション リンクのコピーリンクがクリップボードにコピーされました!
ServiceNow や Jenkins などの外部アプリケーション用のトークンベースの認証を作成および設定します。トークンベースの認証を使用すると、外部アプリケーションを Ansible Automation Platform と簡単に統合できます。
プラットフォーム UI 上の Automation Controller OAuth アプリケーションは、2.4 から 2.5 に移行できません。詳細は、こちらの ナレッジベースの記事 を参照してください。
プラットフォーム管理者は、プラットフォーム内でカスタムの外部アプリケーションの URL を設定して、外部サービスとのシームレスな統合を実現できます。この機能は現在、テクノロジープレビューとして利用できます。設定が完了すると、外部アプリケーションの URL がプラットフォーム UI ナビゲーションパネルに表示されます。これにより、ユーザーがアプリケーションに簡単にアクセスできるようになります。この機能を使用すると、プラットフォーム UI 内から外部サービスに迅速にアクセスできるため、ワークフローが合理化されます。
テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat では、実稼働環境での使用を推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
OAuth 2 を使用すると、ログイン情報を公開せずにトークンを使用してアプリケーションとデータを共有できます。このトークンは、読み取り専用に設定できます。
統合する外部アプリケーションを表すアプリケーションを作成し、それ使用してアプリケーションがユーザーの代わりに使用するトークンを作成できます。
これらのトークンをアプリケーションリソースに関連付けると、特定のアプリケーションに対して発行されたすべてのトークンを管理できるようになります。OAuth Applications でトークンの発行を分離することで、システム内のすべてのトークンを取り消さなくても、アプリケーションごとにトークンをすべて取り消すことができます。
3.1.1. OAuth アプリケーションの使用開始 リンクのコピーリンクがクリップボードにコピーされました!
ナビゲーションパネルから
アプリケーションがない場合は、 をクリックして作成できます。
アプリケーションのアクセスルールは以下のとおりです。
- プラットフォーム管理者は、システム内のすべてのアプリケーションを表示および操作できます。
- プラットフォーム監査者は、システム内のアプリケーションの表示のみ実行できます。
- 一方、トークンは、受信要求を認証し、基盤のユーザーのパーミッションをマスクするために使用するリソースです。
トークンのアクセスルールは以下のとおりです。
- ユーザーは、自分用の Personal Access Token を作成できます。
- プラットフォーム管理者は、システム内のすべてのトークンを表示および操作できます。
- プラットフォーム監査者は、システム内のトークンの表示のみ実行できます。
- 他の通常ユーザーは、自身のトークンのみ表示し、操作できます。
ユーザーは、作成時にのみトークンの表示またはトークンの値の更新が可能です。
3.1.1.1. アプリケーションの機能 リンクのコピーリンクがクリップボードにコピーされました!
認可、トークンの更新、取り消しに利用できる OAuth 2 ユーティリティーがいくつか用意されています。アプリケーションを作成するときに、次の付与タイプを指定できます。
- Password
- この付与タイプは、Web アプリケーションへのネイティブアクセス権を持つユーザーに最適であり、クライアントがリソース所有者である場合に使用する必要があります。
- 認可コード
- この付与タイプは、アクセストークンを外部アプリケーションまたはサービスに直接発行する必要がある場合に使用する必要があります。
認可コードタイプを使用してアクセストークンを取得できるのは、アプリケーションを使用する場合だけです。外部 Web アプリケーションを Ansible Automation Platform と統合する場合、その Web アプリケーションが、他の Web アプリケーションのユーザーに代わって OAuth2 トークンを作成する必要がある場合があります。プラットフォームで認可コード付与タイプを使用してアプリケーションを作成することを推奨します。理由は次のとおりです。
- これにより、外部アプリケーションがユーザーの認証情報を使用して、Ansible Automation Platform からユーザーのトークンを取得できるようになります。
- 特定のアプリケーション用に区分されたトークンが発行されるため、トークンを簡単に管理できます。たとえば、システム内のすべてのトークンを取り消さずに、そのアプリケーションに関連付けられている すべて のトークンを取り消すことができます。
3.1.1.1.1. 有効期限経過後にアクセストークンを要求する リンクのコピーリンクがクリップボードにコピーされました!
アクセストークンのデフォルトの有効期限は 1 年です。
認可コード 付与タイプを使用してアプリケーション統合を設定する最適な方法は、最良の方法は、クロスサイト要求の発信元を許可リストに登録することです。一般的には、アクセストークンを提供する対象である、プラットフォームと統合するサービスまたはアプリケーションを許可リストに登録する必要があります。
これを行うには、次の許可リストをローカルの Ansible Automation Platform 設定ファイルに追加するよう管理者に依頼します。
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOWED_ORIGIN_REGEXES = [
r"http://django-oauth-toolkit.herokuapp.com*",
r"http://www.example.com*"
]
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOWED_ORIGIN_REGEXES = [
r"http://django-oauth-toolkit.herokuapp.com*",
r"http://www.example.com*"
]
http://django-oauth-toolkit.herokuapp.com と http://www.example.com は、プラットフォームにアクセスするためにトークンを必要とするアプリケーションです。
3.1.2. 新規アプリケーションの作成 リンクのコピーリンクがクリップボードにコピーされました!
外部 Web アプリケーションを Ansible Automation Platform と統合する場合、その Web アプリケーションが、Web アプリケーションのユーザーに代わって OAuth2 トークンを作成する必要がある場合があります。
認可コード付与タイプを使用してアプリケーションを作成することを推奨します。理由は次のとおりです。
- 外部アプリケーションが、ユーザーの認証情報を使用してユーザーのトークンを取得できます。
- 特定のアプリケーション用に区分されたトークンが発行されるため、トークンを簡単に管理できます。たとえば、そのアプリケーションに関連付けられているすべてのトークンを取り消すことができます。
手順
-
ナビゲーションパネルから、
を選択します。 - をクリックします。Create Application ページが開きます。
以下の詳細を入力します。
- 名前
- (必須) 作成するアプリケーションの名前を入力します。
- URL
- (オプション) 外部アプリケーションの URL を入力します。このリンクは、簡単にアクセスできるようにナビゲーションパネルに追加されます。この設定は現在テクノロジープレビューとして提供されています。
- Description
- (任意) アプリケーションの簡単な説明を記入します。
- Organization
- (必須) このアプリケーションを関連付ける組織を選択します。
- Authorization grant type
- (必須) ユーザーがこのアプリケーションのトークンを取得するために使用する付与タイプを 1 つ選択します。付与タイプの詳細は、アプリケーションの機能 を参照してください。
- Client Type
- (必須) クライアントデバイスのセキュリティーレベルを選択します。
- Redirect URIS
- 許可する URI のリストをスペースで区切りで指定します。これは、付与タイプを Authorization code に指定した場合に必須です。
をクリックするか、 をクリックして変更を破棄します。
Client ID と Client Secret がウィンドウに表示されます。クライアントシークレットが表示されるのはこのときだけです。
注記Client Secret は、Client type が Confidential に設定されている場合にのみ作成されます。
- コピーアイコンをクリックして、外部アプリケーションを Ansible Automation Platform と統合するためのクライアント ID とクライアントシークレットを保存します。