BFT名古屋 TECH BLOG

日々の業務で得た知識を所属するエンジニアたちがアウトプットしていきます。

【Ansible】AnsibleTowerによる権限管理

 こんにちは!
 BFT名古屋支店の、佐野です。

 以前にお送りした記事で、AnsibleTowerにおいては部署やユーザーごとのPlaybookの実行権限の管理を行なうことができることについて触れました。
 今回はそのAnsibleTowerでの権限の管理について、より踏み込んだ解説をお送りいたします。


はじめに:AnsibleTowerでの権限管理

 AnsibleTowerでは、ユーザーとAnsibleTowerで使用する要素の所属をまとめるものとして「組織」という概念が存在します。
 AnsibleTower上でPlaybookを実行するために必要なインベントリー、プロジェクト、認証情報を作成する為には何らかの組織に属させねばなりませんし、AnsibleTowerにログインするユーザーを追加する際もそのユーザーが属する組織を定める必要があります。
 ジョブテンプレートおよびワークフローテンプレートについては作成時に組織に属させる必要はありませんが、テンプレートの作成に必須となるインベントリー、プロジェクト、認証情報があり、それらの閲覧・実行権限を持たないユーザーにはテンプレート類も見えなくなりますので、作成した時点で何らかの組織に属しているのと同じような状態となります。

 AnsibleTowerにおいては、例えば部署ごとにこの組織で分け、インベントリーやプロジェクトなども適切な組織へと配置することで、Ansible単体で起こりえるような「別部署用のPlaybookを使用してしまう」や「別部署のクライアントを誤って管理対象としてしまう」といったことの発生を抑えることができます。

 また組織に所属するユーザーには、その組織内のインベントリーやプロジェクト、認証情報の作成や編集、実行といった権限を設定することができます。
 例えば運用・保守を行なうユーザーには実行のみの権限を与え、Playbookや管理対象の追加を行なうユーザーにはインベントリーやプロジェクト、認証情報の追加・編集の権限を与えると言ったことが可能です。

 以下は組織の構造を図で表したものになります。
 別の組織に属する要素には参照できず、ユーザーごとの権限配置がされているということを示しています。

f:id:bftnagoya:20210222145053p:plain


組織の作成

 では実際に「組織」を作成する手順について説明いたします。
 まずAnsible Tower管理画面の左ペインにある【アクセス】-【組織】をクリックします。

f:id:bftnagoya:20210222145058p:plain

 組織画面に遷移したら右上の「+」アイコンをクリックします。

f:id:bftnagoya:20210222145103p:plain

 新規組織の画面となったら「名前」に作成する組織の名前を入力します。
 入力後、「保存」をクリックします。

f:id:bftnagoya:20210222145107p:plain

 保存をクリック後、再び管理画面の左ペインにある【アクセス】-【組織】をクリックし、組織が作成されていることが確認できたら完了となります。

f:id:bftnagoya:20210222145111p:plain


ユーザーの作成・権限設定

 続いて、作成した組織に属させる新規のユーザーを作成します。
 まずAnsible Tower管理画面の左ペインにある【アクセス】-【ユーザー】をクリックします。

f:id:bftnagoya:20210222163536p:plain

 ユーザー画面に遷移したら右上の「+」アイコンをクリックします。

f:id:bftnagoya:20210222163539p:plain

 新規ユーザー画面となったら、作成するユーザーの情報を入力します。
 「名」「姓」「メールアドレス」「ユーザー名」「組織」「パスワード」「パスワードの確認」については必須入力項目となります。
 「組織」については先に作成した組織を選択し、「パスワードの確認」では設定したパスワードを再度入力します。
 ユーザータイプに関してはNormal Userのままで問題ありません。

 以上を全て入力したら「保存」をクリックします。

f:id:bftnagoya:20210222163543p:plain

 保存をクリック後、Ansible Tower管理画面の左ペインにある「ユーザー」をクリックし、ユーザーが作成されていることを確認します。
 作成されていたら、次はそのユーザーに対して権限設定を行なっていきます。

f:id:bftnagoya:20210222163546p:plain

 では作成したユーザーに対して権限設定を行ないます。
 今回の例では管理者の権限をユーザーに付与をします。
 Ansible Tower管理画面の左ペインにある「ユーザー」をクリックし、先の手順で作成したユーザーをクリックします。

f:id:bftnagoya:20210222163549p:plain

 ユーザーの詳細画面に遷移後、「パーミッション」をクリックします。

f:id:bftnagoya:20210222163553p:plain

 「パーミッション」をクリックした後、右上の「+」アイコンをクリックします。

f:id:bftnagoya:20210222163556p:plain

 「パーミッションの追加」に遷移したら、「組織」をクリックします。

f:id:bftnagoya:20210222163600p:plain

 現在AnsibleTower に登録されている組織の一覧がリストされるため、その中から先の手順で作成した組織にチェックを入れます。

f:id:bftnagoya:20210222163603p:plain

 組織にチェックを入れた後、画面下部の「ロールの選択」で「管理者」をクリックし、「保存」をクリックします。

f:id:bftnagoya:20210222163607p:plain

 「保存」をクリックした後、付与したパーミッションの情報が表示されます。
 先にチェックを入れることで選択した組織に対するロールの割り当てが「管理者」であることを確認します。
 これで作成したユーザーに管理者の権限が付与されました。

 他の権限を付与したい場合、例えば「ロールの選択」で「実行」を選択すると、ジョブテンプレートの実行のみ行える権限を付与できることになります。


さいごに

 以上がAnsibleTowerによる権限管理と、その単位となる組織・ユーザーを作成する手順の解説となります。
 AnsibleTowerでは最初からDefaultという組織が設定されており、初期ユーザーであればそちらの組織にプロジェクトやインベントリー、認証情報を属させることで使用することができますが、本格的にグループ別で運用を行なうようになった時には、今回解説したことをまず初めに行なうことになるかと思います。
 ですので、組織とユーザー、その権限周りについて迷った際は、またこの記事を見返していただければ幸いです。
 以上、お読みいただきありがとうございました。