AWS サービスアカウントのアクセスセットアップ
クラウドディスカバリー および Cloud Provisioning and Governance では、Amazon Web サービス (AWS) サービスアカウントのリソースにアクセスする必要があります。このようなアクセスを設定するためのさまざまな方法について説明します。
クラウドディスカバリー および Cloud Provisioning and Governance は、MID サーバー を通じて AWS サービスアカウントのリソースにアクセスします。初期通信をセットアップするには、MID Server から Amazon EC2 インスタンスへの受信トラフィックを許可する必要があります。詳細については、「AWS Management Console を使用してセキュリティグループのインバウンドルールを設定」を参照してください。
AWS 資格情報のタイプ
- 永続的
- 永続的な資格情報は、Now Platform の 接続情報と認証情報 モジュールに追加するサービスアカウントに対する実際の AWS 資格情報です。Now Platform での資格情報管理には時間がかかることがありますが、一時的な資格情報を使用する場合の複雑な構成を避けることができます。
- 一時的
一時的な資格情報は 、IAM ロールの AWS Security Token Service (AWS STS) によって生成されます。アカウントの IAM ロール AWS を設定すると、 は 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 Server プロパティを使用して、資格情報のキャッシュを防止したり、キャッシュ期間を変更したりすることができます。
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 ロールに定義されているデフォルトを使用します。