32.2. ロールベースのアクセス制御
ロールベースのアクセス制御 (RBAC) は Automation controller に組み込まれており、管理者はサーバーインベントリー、組織などへのアクセスを委任できます。管理者はさまざまな認証情報の管理を一元化することもできます。管理を一元化することで、エンドユーザーが必要なシークレットをエンドユーザー自身に表示せずに利用できるようになります。RBAC を使用すると、Automation controller を有効にしてセキュリティーを強化し、管理を合理化できます。
RBAC は、ユーザーまたはチームにロールを付与する方法です。RBAC は、ロールの観点から考えることができます。ロールは、特定の機能が設定されている “オブジェクト” を、誰または何が参照、変更、または削除できるかを正確に定義したものです。
Automation controller の RBAC 設計のロール、リソース、およびユーザーの主な概念は次のとおりです。
- ユーザーはロールのメンバーになることができます。これにより、そのロールに関連付けられたリソース、または “子孫” ロールに関連付けられたリソースへの特定のアクセスが許可されます。
- ロールは機能の集合です。
- ユーザーには、割り当てられているロール、またはロール階層を通じて継承したロールを通じて、これらの機能および Automation Controller のリソースへのアクセスが許可されます。
- ロールは、機能のグループをユーザーのグループに関連付けます。機能はすべて、ロール内のメンバーシップから得られます。ユーザーは、割り当てられているロールを通じて、またはロール階層を通じて継承したロールを通じてのみ機能を受け取ります。ロールのすべてのメンバーは、そのロールに付与されたすべての機能を持ちます。組織内において、ロールは比較的一定ですが、ユーザーと機能は両方とも多数あり、短期間で変更されることがあります。
- ユーザーは多くのロールを持つことができます。
32.2.1. ロールの階層およびアクセスの継承
SomeCompany という名前の組織があり、Josie と Carter という 2 人の人に、その組織に関連付けられたすべての設定を管理できるアクセス権を付与する必要があるとします。これを行うには、両方のユーザーを組織の admin_role
のメンバーに指定する必要があります。
システムには多くのロールが存在することがよくあり、その一部には他のロールの機能をすべて含める必要があります。たとえば、組織管理者のアクセスできる内容をすべて、システム管理者に割り当て、プロジェクト管理者のアクセスできる内容をすべて組織管理者に割り当てる場合などです。
この概念は「ロールの階層」と呼ばれています。
- 親ロールは、子ロールに付与するすべての機能を取得します。
- ロールのメンバーは、それらがメンバーであるロールと子ロールのすべての機能を自動的に取得します。
ロール階層は、ロールに「親ロール」を指定できるようにすることで表現します。ロールが持つ機能はすべて、親ロール (またはその親の親) に暗黙的に付与されます。
ロールには複数の親を持つことができ、機能はすべての親に暗黙的に付与されます。
また、RBAC を使用すると、ユーザーおよびユーザーのチームが特定のホストのセットに対して Playbook を実行することを明示的に許可できます。ユーザーとチームは、機能が付与されている Playbook とホストのセットのみに制限されます。Automation controller を使用すると、必要な数のユーザーとチームを作成またはインポートしたり、ユーザーとチームを手動で作成したり、LDAP または Active Directory からインポートしたりできます。
32.2.1.1. RBAC の使用
以下では、Automation controller の RBAC システムを環境に適用する方法について説明します。
32.2.1.1.1. ユーザーの編集
ユーザーを編集する場合、Automation controller システム管理者は、ユーザーを System Administrator (スーパーユーザーとも呼ばれる) または System Auditor として指定できます。
- システム管理者は、環境内のすべてのオブジェクトの全機能 (読み取り/書き込み/実行) を暗黙的に継承します。
- システム監査者は、環境内のすべてのオブジェクトの読み取り専用機能を暗黙的に継承します。
32.2.1.1.2. 組織の編集
組織の編集時に、システム管理者は以下のロールを指定できます。
- 組織管理者としての 1 ユーザー以上のユーザー
- 組織監査者としての 1 ユーザー以上のユーザー
- 組織メンバーとしての 1 ユーザー以上のユーザー (またはチーム)
組織のメンバーであるユーザー/チームは組織管理者を表示できます。
組織管理者であるユーザーは、組織内のすべてのオブジェクトのすべての機能を暗黙的に継承します。
組織監査者であるユーザーは、組織内のすべてのオブジェクトの読み取り専用機能を暗黙的に継承します。
32.2.1.1.3. 組織内のプロジェクト編集
管理者となっている組織のプロジェクトの編集時に、組織管理者および組織管理者は以下を指定できます。
- プロジェクト管理者である 1 つ以上のユーザー/チーム
- プロジェクトメンバーである 1 つ以上のユーザー/チーム
- その組織のメンバーであるユーザーおよびチームの中から、SCM からプロジェクトを更新できる 1 つ以上のユーザーまたはチーム。
プロジェクトのメンバーであるユーザーはプロジェクト管理者を表示できます。
プロジェクト管理者は、SCM からプロジェクトを更新する機能を暗黙的に継承します。
管理者は、ジョブテンプレートでプロジェクトを使用できる 1 以上のユーザー/チームを (プロジェクトのメンバーから) 指定することもできます。
32.2.1.1.4. 組織内でのインベントリーおよび認証情報の作成
認証情報の使用、読み取り、または書き込み用に付与されるアクセス権はすべて、ロールを使用して処理されます。ロールは、Automation Controller の RBAC システムを使用して、ownership、auditor、または usage のロールを付与します。
システム管理者および組織管理者は、管理機能に基づいて、組織内にインベントリーや認証情報を作成できます。
インベントリーまたは認証情報の編集のどちらの場合でも、システム管理者および組織管理者は、インベントリーまたは認証情報の使用機能を付与するために、(組織のメンバーから) 1 以上のユーザー/チームを指定できます。
システム管理者および組織管理者は、インベントリーを (動的または手動で) 更新する機能を持つ 1 人以上のユーザーまたはチームを (その組織のメンバーから) 指定できます。管理者は、インベントリーに対してアドホックコマンドを実行することもできます。
32.2.1.1.5. ジョブテンプレートの編集
システム管理者、組織管理者およびプロジェクト管理者は、管理機能に基づき、プロジェクト内でプロジェクトの新規ジョブテンプレートを作成したり、変更したりできます。
ジョブテンプレートの編集時に、管理者 (automation controller、組織、およびプロジェクト) は使用機能を持つ組織内のインベントリーおよび認証情報を選択したり、実行時に選択されるようにそれらのフィールドを空白にしたりすることができます。
さらに、そのジョブテンプレートの実行機能を持つ 1 つ以上のユーザーまたはチーム (そのプロジェクトのメンバーであるユーザーまたはチーム) を指定できます。実行機能は、ジョブテンプレートで指定されたインベントリーまたは認証情報に対してユーザーまたはチームに付与された明示的な機能に関係なく有効です。
32.2.1.1.6. ユーザービュー
ユーザーは以下を実行できます。
- それらのユーザーがメンバーとなっている組織またはプロジェクトの確認
- それらのユーザーに属する認証情報オブジェクトの作成
- 実行機能が付与されたジョブテンプレートの表示および実行
ユーザーに実行機能が付与されているジョブテンプレートでインベントリーまたは認証情報が指定されていない場合、ユーザーは実行時に、所有する組織または使用機能が付与されている組織内のインベントリーと認証情報の中から選択するよう求められます。
ジョブテンプレート管理者であるユーザーは、ジョブテンプレートを変更できます。ただし、ジョブテンプレートで使用するインベントリー、プロジェクト、Playbook、認証情報を変更するには、使用中または設定中のプロジェクトやインベントリーに対する「使用」ロールも必要になります。
32.2.1.2. ロール
認証情報の使用、読み取り、または書き込み用に付与されるすべてのアクセスはロールを通じて処理され、ロールはリソースに対して定義されます。
32.2.1.2.1. 組み込みロール
次の表に、RBAC システムのロールと、そのロールが Automation controller の特権に関してどのように定義されるかについての簡単な説明を示します。
システムロール | 実行できる内容 |
---|---|
システム管理者: システム全体のシングルトンロール (単一の管理者) | システムのすべての側面を管理します。 |
システム監査者: システム全体のシングルトンロール (単一の監査者) | システムのすべての側面を閲覧できます。 |
アドホックロール: インベントリー | インベントリーでアドホックコマンドを実行します。 |
管理者ロール: 組織、チーム、インベントリー、プロジェクト、ジョブテンプレート | 定義された組織、チーム、インベントリー、プロジェクトまたはジョブテンプレートのすべての側面を管理します。 |
監査者ロール: すべて | 定義された組織、プロジェクト、インベントリー、またはジョブテンプレートのすべての側面を表示します。 |
実行ロール: ジョブテンプレート | 割り当てられたジョブテンプレートを実行します。 |
メンバーロール: 組織、チーム | ユーザーは定義された組織またはチームのメンバーです。 |
読み取りロール: 組織、チーム、インベントリー、プロジェクト、ジョブテンプレート | 定義された組織、チーム、インベントリー、プロジェクトまたはジョブテンプレートのすべての側面を閲覧できます。 |
更新ロール: プロジェクト | 設定されたソースコントロール管理システムからプロジェクトを更新します。 |
更新ロール: インベントリー | クラウドソース更新システムを使用してインベントリーを更新します。 |
所有者ロール: 認証情報 | この認証情報のすべての側面を所有し、管理します。 |
ロールの使用 - 認証情報、インベントリー、プロジェクト、IG、CG | ジョブテンプレートで認証情報、インベントリー、プロジェクト、IG、または CG を使用します。 |
Singleton ロールは、システム全体のパーミッションを付与する特別なロールです。Automation Controller は現在 2 つの組み込み Singleton ロールを提供していますが、Singleton ロールを作成またはカスタマイズする機能は現時点ではサポートされていません。
32.2.1.3. 一般的なチームロール: "Personas"
Automation controller のサポート担当者は通常、Automation controller が利用可能であることを確認し、サポート性とユーザーの使いやすさのバランスを取りながら Automation controller を管理します。Automation controller サポート担当者は、多くの場合、ユーザーに Organization Owner または Administrator のロールを割り当て、ユーザーが新しい組織を作成したり、それぞれのアクセスに必要なチームのメンバーを追加したりできるようにします。これにより、サポート担当者の数を最小限に抑えられ、サービスの稼働時間を維持し、Automation controller を使用しているユーザーを支援することに重点が置かれます。
次の表で、Automation controller 組織で管理されるいくつかの一般的なロールを紹介します。
システムロール (組織向け) | 一般的なユーザーロール | 説明 |
---|---|---|
Owner | チームリード - テクニカルリード | このユーザーは、組織内の他のユーザーのアクセスを制御できます。プロジェクト、インベントリー、ジョブテンプレートに、ユーザー固有のアクセスを追加、削除、付与できます。このタイプのユーザーは、組織のプロジェクト、テンプレート、インベントリー、チーム、認証情報のあらゆる機能を作成、削除、または変更することもできます。 |
Auditor | セキュリティーエンジニア - プロジェクトマネージャー | このアカウントは、組織のすべての側面を読み取り専用モードで表示できます。このロールは、コンプライアンスの確認および管理するユーザーに適切です。また、ジョブデータを管理したり、Automation controller から他のデータコレクターにジョブデータを送信したりするサービスアカウントにも適切でしょう。 |
Member - Team | その他のすべてのユーザー | デフォルトでは、組織メンバーとしてのこれらのユーザーは、組織のどの機能にもアクセスできません。これらのユーザーにアクセスを許可するには、それぞれの組織の所有者がそのユーザーをそれぞれのチームに追加し、組織のプロジェクト、インベントリー、およびジョブテンプレートの各コンポーネントに対する管理者、実行、使用、更新、およびアドホックのアクセス許可を付与する必要があります。 |
Member - Team "Owner" | パワーユーザー - 主任開発者 | 組織の所有者は、チームインターフェイスを通じて、プロジェクト、インベントリー、ジョブテンプレートなどの組織のコンポーネントに対して "admin" ロールが割り当てられます。これらのユーザーは、アクセス権が与えられたそれぞれのコンポーネントを変更および使用できます。 |
Member - Team "Execute" | 開発者 - エンジニア | これは最も一般的なロールであり、組織メンバーがジョブテンプレートを実行し、特定のコンポーネントに対する読み取りパーミッションを付与できるようになります。このパーミッションはテンプレートに適用されます。 |
Member - Team "Use" | 開発者 - エンジニア | このパーミッションは、組織の信用情報、インベントリー、プロジェクトに適用されます。このパーミッションにより、ユーザーはジョブテンプレート内の各コンポーネントを使用できるようになります。 |
Member - Team "Update" | 開発者 - エンジニア | このパーミッションはプロジェクトに適用されます。ユーザーがプロジェクトで SCM 更新を実行できるようにします。 |