AWS サービスアカウントのアクセスセットアップ
クラウドディスカバリー および クラウドプロビジョニングとガバナンス では、Amazon Web サービス (AWS) サービスアカウントのリソースにアクセスする必要があります。このようなアクセスを設定するためのさまざまな方法について説明します。
クラウドディスカバリー および クラウドプロビジョニングとガバナンス は、MID サーバー を通じて AWS サービスアカウントのリソースにアクセスします。初期通信をセットアップするには、MID サーバーから Amazon EC2 インスタンスへの受信トラフィックを許可する必要があります。詳細については、「AWS Management Console を使用してセキュリティグループのインバウンドルールを設定」を参照してください。
AWS 認証情報のタイプ
- 永続的
- 永続的な認証情報は、Now Platform の 接続情報と認証情報 モジュールに追加するサービスアカウントに対する実際の AWS 認証情報です。Now Platform での認証情報管理には時間がかかることがありますが、一時的な認証情報を使用する場合の複雑な構成を避けることができます。
- 一時的
一時的な認証情報は 、IAM ロールの AWS Security Token Service (AWS STS) によって生成されます。AWS アカウントの IAM ロールを構成すると、MID サーバー はこれらの一時的な認証情報を使用して AWS リソースにアクセスします。デフォルトの IAM ロール、OrganizationAccountAccessRole を使用することも、カスタム IAM ロールを作成することもできます。
大規模な AWS 組織で IAM ロールを担うほうが、すべての AWS アカウントに永続的な認証情報を大量に使用するよりも便利で、かつ優れたセキュリティを提供できます。一時的な認証情報は、サービスアカウント [cmdb_ci_cloud_service_account] テーブルに、そのサービスアカウントに対して永続的な認証情報が指定されていない場合にのみ、サービスアカウントの代わりに取得されます。
MID サーバー は、AWS Security Token Service API の AssumeRole アクションを使用して、メンバーアカウントのロールを想定します。この API に渡されるパラメーターによって、AWS リソースへのアクセス時にロールに適用される追加のセキュリティ制限が決定されます。
デフォルトで、MID サーバー はプライマリアカウントのすべてのメンバーに一時的な認証情報を付与する OrganizationAccountAccessRole を担うように構成されます。このアクションは、メンバーアカウントに永続的な認証情報が存在しない場合に自動的に実行されます。この構成では追加のセキュリティは適用されず、メンバーアカウントのリソースに対するアクセスは制限されません。
デフォルトで、ServiceNow インスタンスはメンバーアカウントの一時的な認証情報を 60 分間キャッシュします。この期間があることで、ディスカバリー時に毎回新しい認証情報が生成されることなく、水平ディスカバリープロセスが複数回実行されます。MID サーバープロパティを使用して、認証情報のキャッシュを防止したり、キャッシュ期間を変更したりすることができます。
IAM ロールと権限
デフォルトの AWS OrganizationAccountAccessRole ロールによって提供されるセキュリティを強化するために、MID Servers が担うことができる AWS ロールをカスタマイズして、メンバーアカウントの一時的な認証情報を受け取ることができます。追加の権限を設定してセキュリティを強化し、クラウドリソースを検出するときにメンバーアカウントのロールを引き受ける方法をカスタマイズできます。
アクセスを許可する方法
- トラスティングアカウント
- トラスティングアカウントには、永続的な AWS 認証情報がありません。これらのアカウントの IAM ロールが他のアカウントに依存してアクセスするための信頼関係を構成します。
- トラステッドアカウント
- トラステッドアカウントは、トラスティングアカウントによってアクセスに使用されます。ServiceNow UI では、トラステッドアカウントが「アクセサーアカウント」という名称になっています。
- 永続的な AWS 認証情報を使用した AWS アカウントへのアクセス構成
実際の AWS 認証情報を Now Platform で構成すれば、IAM ロールを作成して設定するという複雑な作業を回避できます。
- AWS 認証情報を持つトラステッド AWS アカウントに基づく一時的な認証情報を使用したアクセス構成
トラステッドアカウントに依存してアクセスするように、AWS アカウントを構成します。このセットアップは、離散 (独立)、管理、メンバーのどのタイプのアカウントでも機能します。AWS 認証情報を使用して Now Platform でトラステッドアカウントを構成する場合は、トラスティングアカウントに属する IAM ロールを構成して、トラステッドアカウントのユーザーを信頼させることができます。この方法により、複数の AWS アカウントへのアクセスを提供する AWS 認証情報をワンセットだけ使用できるようになります。
図 : 1. 任意の AWS アカウントを AWS 認証情報を備えたトラステッドアカウントに依存させる設定
- AWS 認証情報を持たないトラステッド AWS アカウントに基づく一時的な認証情報を使用したアクセス構成
AWS 認証情報を持たないアカウント (認証情報なしアカウント) を使用するには、最初に IAM ロールを持つアカウントとトラスティングサービスアカウントにアクセスするための権限を設定する必要があります。次に、トラスティングアカウント IAM ロールを構成して、トラステッドアカウントの IAM ロールへのアクセス権を付与します。
図 : 2. 任意の AWS アカウントを AWS 認証情報のないトラステッドアカウントに依存させる設定
- トラスティング AWS メンバーアカウントの一時認証情報を使用したアクセス構成
AWS 組織がある場合は、 AWS メンバーアカウントがその管理アカウントにアクセスを依存するように構成できます。その場合は、管理アカウントの IAM ロールを信頼するように、メンバーアカウントの IAM ロールを構成します。管理アカウントが依存するアカウントに AWS 認証情報があるかどうかは関係ありません。
図 : 3. アクセスに管理アカウントを使用するメンバーアカウントの設定
クラウドディスカバリー が使用する認証情報の決定方法
- 永続的な認証情報がクラウドサービスアカウント [cmdb_ci_cloud_service_account] テーブルのメンバーアカウントに対して定義されている場合、ディスカバリー はその認証情報を使用します。クラウドサービスアカウントの [cmdb_ci_cloud_service_account] テーブルには、サービスアカウントのタイプ (管理/メンバー) とその認証情報に関する情報が含まれています。
- メンバーアカウントに永続的な認証情報が定義されていない場合、ディスカバリー はメンバーアカウントに関連付けられた特別なパラメーターについてクラウドサービスアカウント AWS 組織想定ロールパラメーター [cloud_service_account_aws_org_assume_role_params] テーブルをチェックします。そのテーブルにパラメーターが存在する場合、ディスカバリー は AWS Security Token Service API AssumeRole アクションでロールとそのパラメーターを指定することによって取得された一時的な認証情報を使用します。
- [cloud_service_account_aws_org_assume_role_params] テーブルでメンバーアカウントに特別なパラメーターが関連付けられていない場合、ディスカバリー はそのテーブルで、管理アカウントに関連付けられたパラメーターをチェックします。管理アカウントのロールを定義するパラメーターが存在する場合、ディスカバリー はそのロールで提供される一時的な認証情報を使用します。
- 管理アカウントまたはメンバーアカウントのいずれかに対して [cloud_service_account_aws_org_assume_role_params] テーブルに特別なパラメーターが存在しない場合、ディスカバリー は OrganizationAccountAccessRole ロールに定義されているデフォルトを使用します。