Documentation

10. 認証情報

認証情報は、ジョブをマシンに対して起動したり、インベントリーソースと同期したり、プロジェクトのコンテンツをバージョン管理システムからインポートしたりする際の認証に使用されます。

ユーザーやチームには、ユーザーに認証情報を公開せずにこれらの認証情報を使用する権限を割り当てることができます。ユーザーを別のチームに移動したり、組織から削除する際には、認証情報が Tower で利用できたという理由だけですべてのシステムのキーを更新する必要はありません。

注釈

Tower は Tower データベースでパスワードおよびキー情報を暗号化しますが、機密情報が API で表示されることはありません。

10.1. 認証情報の機能について

Ansible Tower は SSH を使用してリモートホスト (または Windows と同等のホスト) に接続します。Tower から SSH にキーを渡すには、キーの暗号を解除してからキーが名前付きパイプに書き込まれるようにする必要があります。Tower はそのパイプを使用してキーを SSH に送信します (これにより、キーがディスクに書き込まれることはない)。

パスワードが使用されている場合、Ansible Tower はパスワードのプロンプトに直接応答し、パスワードの暗号を解除してプロンプトに書き込むことによってそれらを処理します。

暗号/暗号解除アルゴリズムは、 Fernet のバリエーション (SHA-256 HMAC と共に CBC モードで AES-256 を使用する対称暗号化) を使用します。キーは SECRET_KEY から派生します (awx 設定を参照)。Tower の各機密モデルフィールドは暗号化されており、以下が含まれます。

Credential: password, ssh_key_data, ssh_key_unlock, become_password, vault_password
UnifiedJob: start_args

データは暗号化されてからデータベースに保存され、必要に応じて Tower で暗号化の解除が行われます。暗号化/暗号解除プロセスでは、AES 256 ビット暗号化キーが <SECRET_KEY, field_name, primary_key> から派生します。ここで field_name はモデルフィールドの名前であり、primary_key はデータベースで自動増分で割り当てられるレコード ID です。キー生成プロセスで使用する属性が変更された場合には、Tower はシークレット暗号の解除を正常に実行できません。

注釈

Ansible Tower の暗号化および暗号化解除のルールは、認証情報外の 1 つのフィールド (統合ジョブの start_args フィールド) にも適用されます。これは、jobad_hoc_command、および system_job データタイプで使用されます。

10.2. 認証情報の使用開始

左のナビゲーションバーから認証情報 (credentials-icon) アイコンをクリックして認証情報ページにアクセスします。認証情報ページでは、利用可能な認証情報すべてが一覧で表示され、検索も可能です。また、名前 別で並び替えもできます。

Credentials - home with example credentials

チームに追加された認証情報は、チームのすべてのメンバーが使用できるようになります。ただし、ユーザーに追加される認証情報は、デフォルトではその特定ユーザーのみが使用できます。

注釈

他の作業アイテムが使用するアイテムを削除する場合は、メッセージが開き、削除されるアイテムと、削除の確認を促すプロンプトが表示されます。画面によっては、無効なアイテムや、過去に削除されたアイテムが含まれる場合があるので、それらのアイテムは実行に失敗します。以下は、これらのメッセージ例です。

_images/warning-deletion-dependencies.png

使用を開始するには、作成済みのデモの認証情報を使用できます。

Demo Credential のリンクをクリックすると、この認証情報の 詳細 ビューに移動します。

Credentials - home with demo credential details

パーミッション をクリックすると、この認証情報および付与されたロール (所有者、管理者、監査者など) に関連付けられたユーザーおよびチームが表示されます。

Credentials - home with permissions credential details

add ボタンをクリックして、追加のユーザーまたはチームに、この Demo Credential を割り当てることができます。ユーザーが存在しない場合には、 users-icon メニューから追加してください。詳細は、「ユーザー 」セクションを参照してください。

10.3. 新規認証情報の追加

新規認証情報を作成するには、以下を実行します。

  1. 認証情報 画面の右上にある add ボタンをクリックします。

Create credential

  1. 名前 フィールドに新規の認証情報の名前を入力します。
  2. オプションで、認証情報が関連付けられている組織の名前を入力するか、または選択します。
  3. 作成する認証情報のタイプを入力するか、または選択します。
_images/credential-types-popup-window.png
  1. 以下のセクションで説明される認証情報のタイプに応じて、適切な詳細を入力します。
  2. 完了したら 保存 をクリックします。

10.4. 認証情報タイプ

Ansible Tower では、以下の認証情報タイプがサポートされます。

CyberArk、HashiCorp Vault および Microsoft Azure Key Management System (KMS) に関連付けられている認証情報タイプは Secret Management System の一部で、 Ansible Tower Administration Guide に詳しく説明されています。

10.4.1. Amazon Web Services

この認証情報タイプを選択すると、クラウドインベントリーの Amazon Web Services との同期が可能になります。

Tower は、以下のように、AWS 認証情報の環境変数を使用します。この環境変数は、ユーザーインターフェースのフィールドでプロンプトが表示されます。

AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_SECURITY_TOKEN

Credentials - create AWS credential

従来の Amazon Web Services の認証情報は、AWS アクセスキー および 秘密鍵 で構成されています。

Ansible Tower バージョン 2.4.0 では、EC2 STS トークン (IAM STS 認証情報と呼ばれることもある) のサポートを導入しました。セキュリティートークンサービス (STS) は、AWS Identity and Access Management (IAM) ユーザーの一時的な、制限付き権限の認証情報を要求できる web サービスです。IAM/EC2 STS トークンの詳細は、http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html を参照してください。

注釈

EC2 のタグの値にブール値 (yes/no/true/false) が含まれる場合、それらを引用符で囲む必要があります。

警告

暗黙的な IAM ロールの認証情報を使用するには、IAM ロールに依存して AWS API にアクセスする場合に AWS クラウド認証情報を Tower で割り当てることはできません。AWS クラウド認証情報をジョブテンプレートに割り当てるのが良いと思われる場合でも、それを実行すると AWS 認証情報の使用が強制的に実行され、IAM ロールの認証情報が無視されます (boto ライブラリーの使用による)。

10.4.2. Ansible Tower

この認証情報を選択すると、別の Tower インスタンスにアクセスできます。

Credentials - create tower credential

Ansible Tower 認証情報には、以下の入力が必要になります。

  • Ansible Tower Hostname (Ansible Tower ホスト名): 接続先となる他の Tower インスタンスのベース URL または IP アドレス。
  • ユーザー名: 接続に使用するユーザー名。
  • パスワード: 接続に使用するパスワード。

10.4.3. Google Compute Engine

この認証情報タイプを選択すると、クラウドインベントリーと Google Compute Engine (GCE) との同期が可能になります。

Tower は、以下のように、GCE 認証情報の環境変数を使用します。この環境変数は、ユーザーインターフェースのフィールドでプロンプトが表示されます。

GCE_EMAIL
GCE_PROJECT
GCE_CREDENTIALS_FILE_PATH

Credentials - create GCE credential

GCE 認証情報には、以下の入力が必要になります。

  • サービスアカウントのメールアドレス: Google Compute Engine サービスアカウント に割り当てられるメールアドレス。
  • プロジェクト: オプションで GCE により割り当てられる識別情報、またはプロジェクト作成時に指定した一意のプロジェクト ID です。
  • サービスアカウント JSON ファイル: オプションで GCE サービスアカウントファイルをアップロードします。フォルダー (file-browser) アイコンを使用して、他の Google Cloud Platform API との対話用に実行中のサービスやアプリケーションで使用できる特別なアカウント情報が含まれるファイルを参照します。これで、サービスアカウントや仮想マシンインスタンスへのパーミッションが付与されます。
  • RSA 秘密鍵: サービスアカウントメールに関連付けられる PEM ファイル。

10.4.4. Insights

この認証情報タイプを選択すると、クラウドインベントリーと Red Hat Insights との同期が可能になります。

Credentials - create Insights credential

Insights 認証情報は Insights の ユーザー名 および パスワード で構成されています。これは、ユーザーの Red Hat カスタマーポータルアカウントのユーザー名およびパスワードになります。

10.4.5. マシン

マシンの認証情報により、Tower は管理対象のホストで Ansible を起動できます。コマンドラインで Ansible を使用するように、SSH ユーザー名を指定し、オプションでパスワードや SSH キー、キーのパスワードを指定したり、Tower からデプロイメント時にユーザーのパスワード入力を求めるプロンプトを出したりすることができます。それらは ssh および Playbook のユーザーレベルの権限昇格のアクセスを定義し、リモートホストで Playbook を実行するためにジョブを送信する際に使用されます。ネットワーク接続 (httpapinetconf および network_cli) では、認証タイプに マシン を使用します。

マシン/SSH の認証情報は、環境変数を使用しません。代わりに、ansible -u フラグを使用してユーザー名を渡し、下層の SSH クライアントがプロンプトで確認した時に SSH パスワードを対話的に書き込みます。

Credentials - create machine credential

マシンの認証情報には、設定可能ないくつかの属性があります。

  • ユーザー名: SSH 認証に使用されるユーザー名。

  • パスワード: SSH 認証に使用される実際のパスワード。このパスワードは、入力されている場合は Tower データベースに暗号化された状態で保存されます。または 起動プロンプト を選択することで、起動時にユーザーにパスワードの入力を求めるよう Tower を設定できます。これらの場合、ジョブの起動時にダイアログが開き、ユーザーにはパスワードの入力とパスワードの確認が求められます。

  • SSH 秘密鍵: マシンの認証情報についての SSH 秘密鍵をコピーするか、またはドラッグアンドドロップします。

  • 秘密鍵のパスフレーズ: SSH 秘密鍵がパスワードで保護される場合、秘密鍵の鍵パスワードを設定できます。このパスワードは、入力されている場合 Tower データベースに暗号化された状態で保存できます。または 起動プロンプト を選択することで、起動時にユーザーにパスワードの入力を求めるよう Tower を設定できます。これらの場合、ジョブの起動時にダイアログが開き、ユーザーにパスワードの入力とパスワードの確認を求めるプロンプトが出されます。

  • 権限昇格メソッド: 固有のユーザーに対して権限昇格タイプを指定します。これは、--become-method=BECOME_METHOD パラメーターの指定に似ています。BECOME_METHOD は、以下で記載する一般的なメソッドのいずれかか、独自に記述したカスタムのメソッドを指定できます。メソッド名を入力しはじめると、適切な名前が自動的に入力されます。

    _images/credentials-create-machine-credential-priv-escalation.png
    • 選択肢が空白: タスク/プレイの becomeyes に設定されており、何も選択されていない場合には、デフォルトの sudo に設定されます。
    • sudo: スーパーユーザー (root ユーザー) の権限で単一コマンドを実行します。
    • su: スーパーユーザー (root ユーザー) アカウント (または他のユーザーアカウント) に切り替えます。
    • pbrun: 制御されたアカウントでアプリケーションまたはコマンドが実行されるように要求し、詳細レベルのroot 権限の委譲およびキーのロギングを可能にします。
    • pfexec: 特定のユーザーまたはグループ ID などの事前に定義されたプロセス属性を使用してコマンドを実行します。
    • dzdo: Centrify の Active Directory サービス (Centrify の site on DZDO を参照) の RBAC 情報を使用する sudo の強化バージョン
    • pmrun: 制御されたアカウントでアプリケーションが実行されるように要求します (Privilege Manager for Unix 6.0 を参照)。
    • runas: 現在のユーザーとして実行可能にします。
    • enable: ネットワークデバイスで昇格権限に切り替えます。
    • ksu: リモートユーザー/ログインユーザーが Kerberos アクセスで別のユーザーとしてコマンドを実行できるようにします。
    • sesu: リモートユーザー/ログインユーザーが CA Privileged Access Manager を使用して別のユーザーとしてコマンドを実行できるようにします。
    • machinectl: systemd マシンマネージャーを使用してコンテナーを管理できます。

    注釈

    カスタムの become プラグインは、Ansible 2.8 以降のみ利用できます。このプラグインのコンセプトに関する詳細は、「 Understanding Privilege Escalation 」および「 list of become plugins」を参照してください。

  • 権限昇格のユーザー名 フィールドは、権限昇格のオプションが選択されている場合にのみ表示されます。リモートシステムで権限昇格で使用するユーザー名を入力します。

  • 権限昇格のパスワード: フィールドは、権限昇格のオプションが選択されている場合にのみ表示されます。リモートシステムでの選択した権限昇格タイプでユーザーを認証するために使用される実際のパスワードを入力します。このパスワードは、入力されている場合に Tower データベースに暗号化された状態で保存できます。または 起動プロンプト を選択することで、起動時にユーザーにパスワードの入力を求めるよう Tower を設定できます。これらの場合、ジョブの起動時にダイアログが開き、ユーザーにはパスワードの入力とパスワードの確認が求められます。

    注釈

    Tower は sudo を起動して sudo ユーザーに切り換える前にホストとの認証された SSH 接続を確立する必要があるため、Sudo パスワードは SSH パスワードまたは SSH 秘密鍵と併用する必要があります。

    警告

    スケジュール済みジョブ で使用される認証情報については 起動プロンプト で設定することはできません。

10.4.6. Microsoft Azure Resource Manager

この認証情報タイプを選択すると、クラウドインベントリーと Microsoft Azure Resource Manager との同期が可能になります。

Credentials - create Azure credential

Microsoft Azure Resource Manager の認証情報には、設定可能ないくつかの属性があります。

  • サブスクリプション ID: Microsoft Azure アカウントのサブスクリプション UUID (必須)。
  • ユーザー名: Microsoft Azure アカウントへの接続に使用するユーザー名。
  • パスワード: Microsoft Azure アカウントへの接続に使用するパスワード。
  • クライアント ID: Microsoft Azure アカウントのクライアント ID。
  • クライアントシークレット: Microsoft Azure アカウントのクライアントシークレット。
  • テナント ID: Microsoft Azure アカウントのテナント ID。
  • Azure クラウド環境: Azure クラウドまたは Azure スタック環境に関連付けられる変数。

これらのフィールドは API の変数に相当します。サービスプリンシパルの認証情報を渡すには、以下の変数を定義します。

AZURE_CLIENT_ID
AZURE_SECRET
AZURE_SUBSCRIPTION_ID
AZURE_TENANT
AZURE_CLOUD_ENVIRONMENT

Active Directory のユーザー名/パスワードのペアを渡すには、以下の変数を定義します。

AZURE_AD_USER
AZURE_PASSWORD
AZURE_SUBSCRIPTION_ID

認証情報はパラメーターとして Playbook 内のタスクに渡すこともできます。優先される順序は、パラメーター、環境変数、および最後にホームディレクトリーにあるファイルになります。

認証情報をパラメーターとしてタスクに渡すには、サービスプリンシパルの認証情報についての以下のパラメーターを使用します。

client_id
secret
subscription_id
tenant
azure_cloud_environment

または Active Directory のユーザー名/パスワードについての以下のパラメーターを渡します。

ad_user
password
subscription_id

10.4.7. ネットワーク

provider を使用した local 接続で、Ansible ネットワークモジュールでネットワークデバイスに接続して管理する場合に のみ、ネットワーク認証タイプを選択します。ネットワークデバイスに接続する場合は、認証タイプが接続タイプに一致する必要があります。

  • provider を使用した local 接続の場合は、認証情報タイプは ネットワーク に指定する必要があります。
  • それ以外のネットワーク接続 (httpapinetconf および network_cli) については、認証情報タイプは マシン に指定する必要があります。

ネットワークデバイスで利用可能な接続タイプの概要は、「Multiple Communication Protocols 」を参照してください。

Tower は、以下のように、ネットワーク認証情報の環境変数を使用します。この環境変数は、ユーザーインターフェースのフィールドでプロンプトが表示されます。

ANSIBLE_NET_USERNAME
ANSIBLE_NET_PASSWORD

Credentials - create network credential

ネットワークの認証情報には、設定可能ないくつかの属性があります。

  • ユーザー名: ネットワークデバイスと併用するユーザー名 (必須)。
  • パスワード: ネットワークデバイスと併用するパスワード。
  • SSH 秘密鍵: ユーザーを SSH 経由でネットワークに対して認証するために使用される実際の SSH 秘密鍵をコピーするか、またはドラッグアンドドロップします。
  • 秘密鍵のパスフレーズ: ユーザーを SSH 経由でネットワークに対して認証するために使用する秘密鍵の実際のパスフレーズ。
  • 認証: 「オプション」フィールドから選択し、特権モードになるかどうか制御します。
  • 認証 にチェックを付けた場合は、認証パスワード フィールドに、特権モードにアクセスするパスワードを入力します。

詳細情報は、 Inside Playbook ブログ「 Porting Ansible Network Playbooks with New Connection Plugins」を参照してください。

10.4.8. OpenStack

この認証情報タイプを選択すると、クラウドインベントリーと OpenStack との同期が可能になります。

Credentials - create OpenStack credential

OpenStack 認証情報には、以下の入力が必要になります。

  • ユーザー名: OpenStack への接続に使用するユーザー名。
  • パスワード (API キー): OpenStack に接続するために使用するパスワードまたは API キー
  • ホスト (認証 URL): 認証に使用するホスト。
  • プロジェクト (テナント名): OpenStack に使用されるテナント名またはテナント ID。通常、この値はユーザー名と同じです。
  • ドメイン名: オプションで OpenStack への接続に使用する FQDN を指定します。

OpenStack クラウド認証情報の使用を検討している場合は、サンプルの Playbook などの詳細について、「クラウド認証情報の利用 」を参照してください。

10.4.9. Red Hat CloudForms

この認証情報タイプを選択すると、クラウドインベントリーと Red Hat CloudForms との同期が可能になります。

Tower は、ユーザーインターフェースでプロンプト表示されたフィールドの内容をもとに CloudForms 設定ファイルを記述します。ファイルへの絶対パスは、以下の環境変数に設定されます。

CLOUDFORMS_INI_PATH

Credentials - create Red Hat CloudForms credential

CloudForms 認証情報には、以下の入力が必要になります。

  • CloudForms URL: 接続先の CloudForms URL または IP アドレス。
  • ユーザー名: CloudForms への接続に使用するユーザー名。
  • パスワード: CloudForms への接続に使用するパスワード。

その他のリソース:

Red Hat CloudForms 4.1 での Ansible Tower 統合についての Red Hat の一連のブログ掲載を参照してください (http://cloudformsblog.redhat.com/2016/07/22/ansible-tower-in-cloudforms/)。

10.4.10. Red Hat Satellite 6

この認証情報タイプを選択すると、クラウドインベントリーと Red Hat Satellite 6 との同期が可能になります。

Tower は、ユーザーインターフェースでプロンプト表示されたフィールドの内容をもとに Satellite 設定ファイルを記述します。ファイルへの絶対パスは、以下の環境変数に設定されます。

FOREMAN_INI_PATH

Credentials - create Red Hat Satellite 6 credential

Satellite の認証情報には、以下の入力が必要になります。

  • Satellite 6 URL: 接続先の Satellite 6 URL または IP アドレス。
  • ユーザー名: Satellite 6 への接続に使用するユーザー名。
  • パスワード: Satellite 6 への接続に使用するパスワード。

10.4.11. Red Hat Virtualization

この認証情報では、Tower が Red Hat Virtualization (RHV) 管理の Ansible の oVirt4.py 動的インベントリープラグインにアクセスできるようになります。

Tower は、以下のように、Red Hat Virtualization の認証情報の環境変数を使用します。この環境変数は、ユーザーインターフェースのフィールドでプロンプトが表示されます。

OVIRT_URL
OVIRT_USERNAME
OVIRT_PASSWORD

Credentials - create rhv credential

RHV の認証情報には、以下の入力が必要になります。

  • ホスト (認証 URL): 接続するホスト URL または IP アドレス。
  • ユーザー名: oVirt4 への接続に使用するユーザー名。
  • パスワード: 接続に使用するパスワード。
  • CA File (CA ファイル): オプションで、oVirt 証明書ファイルへの絶対パスを指定します (拡張子は .pem.cer および .crt にすることができますが、一貫性を保つためになるべく .pem にします)。

10.4.12. ソースコントロール

SCM (ソースコントロール) 認証情報は、ローカルソースコードのリポジトリーを、Git、Subversion、または Mercurial などのリモートのリビジョンコントロールシステムからクローン作成したり、更新したりするためにプロジェクトで使用されます。

Credentials - create SCM credential

ソースコントロールの認証情報には、設定可能ないくつかの属性があります。

  • ユーザー名: ソースコントロールシステムと併用するユーザー名。
  • パスワード: ソースコントロールシステムと併用するパスワード。
  • SCM 秘密鍵: ユーザーを SSH 経由でソースコントロールシステムに対して認証するために使用される実際の SSH 秘密鍵をコピーするか、またはドラッグアンドドロップします。
  • 秘密鍵のパスフレーズ: 使用される SSH 秘密鍵がパスフレーズで保護される場合、秘密鍵のパスフレーズを設定できます。

注釈

ソースコントロールの認証情報は 起動プロンプト を使用して設定することはできません。

10.4.13. Vault

この認証情報タイプを選択すると、インベントリーと Ansible Vault との同期が可能になります。

Credentials - create Vault credential

Vault 認証情報では、Vault パスワード と、オプションで複数の Vault 認証情報が適用される場合には Vault 識別子 が必要です。 Ansible Tower の複数 Vault のサポートについては、Ansible Tower Administration Guide の「 複数の Vault 認証情報 」セクションを参照してください。

起動プロンプト を選択することで、起動時にユーザーにパスワードの入力を求めるように Tower を設定できます。これらの場合、ジョブの起動時にダイアログが開き、ユーザーにはパスワードの入力とパスワードの確認が求められます。

警告

スケジュール済みジョブ で使用される認証情報については 起動プロンプト で設定することはできません。

Ansible Vault の詳細は、http://docs.ansible.com/ansible/playbooks_vault.html を参照してください。

10.4.14. VMware vCenter

この認証情報タイプを選択すると、インベントリーと VMware vCenter との同期が可能になります。

Tower は、以下のように、VMware vCenter 認証情報の環境変数を使用します。この環境変数は、ユーザーインターフェースのフィールドでプロンプトが表示されます。

VMWARE_HOST
VMWARE_USER
VMWARE_PASSWORD
VMWARE_VALIDATE_CERTS

Credentials - create VMware credential

VMware の認証情報には、以下の入力が必要になります。

  • vCenter ホスト: 接続先の vCenter ホスト名または IP アドレス。
  • ユーザー名: vCenter への接続に使用するユーザー名。
  • パスワード: vCenter への接続に使用するパスワード。

注釈

VMware ゲストツールがインスタンスで実行されていない場合、VMware インベントリーの同期により、そのインスタンスの IP アドレスが返されない場合があります。