企業がクラウドに複数のアカウントを持っている場合、セキュリティおよび緊急対応チームと O&M チームは、クラウド内の企業のすべてのリソース変更をリアルタイムで監視する必要があります。これらのチームは、重要なリソースまたはリスクの高いリソースの構成変更イベントをサブスクライブして、できるだけ早くリソースを監視および維持する必要があります。リソースディレクトリを使用して複数アカウントのリソースを一元管理する場合、Cloud Config を使用してリソースの構成変更イベントを EventBridge に配信できます。また、Function Compute 2.0 が提供するトリガーを使用して、EventBridge 内のリソースの構成変更イベントを Function Compute 2.0 に配信することもできます。
シナリオ
次の図は、企業 A の複数アカウントの構造を示しています。この構造に基づいて、アカウントのリソースの構成変更イベントを一元管理できます。
管理アカウントを使用して Cloud Config コンソールにログインし、ログアーカイブアカウント A を使用して、ビジネスアカウント B とビジネスアカウント C のリソースの構成変更イベントを表示します。このトピックでは、名前にプレフィックス sg-
が付いた RAM ロールのリソースの構成変更イベントを表示する方法の例を示します。
前提条件
ログアーカイブアカウント A、ビジネスアカウント B、およびビジネスアカウント C は、リソースディレクトリの管理アカウントを使用してリソースディレクトリに追加されます。詳細については、「メンバーを作成する」または「Alibaba Cloud アカウントをリソースディレクトリに参加するように招待する」をご参照ください。
Function Compute がアクティブ化されています。詳細については、「関数をすばやく作成する」をご参照ください。
EventBridge がアクティブ化されています。詳細については、「EventBridge をアクティブ化し、RAM ユーザーに権限を付与する」をご参照ください。
設定項目
このトピックでは、Cloud Config、EventBridge、および Function Compute を使用してリソースの構成変更イベントをサブスクライブする方法について説明します。この例では、RAM ロールのリソースの構成変更イベントがサブスクライブされます。次の表に、関連する設定項目を示します。
Alibaba Cloud サービス | アカウント | 項目 | 例 |
リソース管理 | 管理アカウント | ログアーカイブアカウント A (RAM ユーザー) | - |
ビジネスアカウント B (RAM ユーザー) | - | ||
ビジネスアカウント C (RAM ユーザー) | - | ||
EventBridge | ビジネスアカウント B | ルール名 | b-eb-filter-ram-role |
ビジネスアカウント C | ルール名 | c-eb-filter-ram-role | |
Function Compute | ログアーカイブアカウント A | サービス | eb_event_action |
システムポリシー | AliyunFCDefaultRolePolicy | ||
関数 | eb_event_trigger | ||
トリガー | ConfigurationItemChangeTrigger | ||
Resource Access Management (RAM) | ログアーカイブアカウント A | RAM ロール | account-eb-role |
ビジネスアカウント B | RAM ロール | sg-01 | |
ビジネスアカウント C | RAM ロール | sg-02 |
手順
次の図は、複数アカウント環境のリソースの構成変更イベントをサブスクライブするプロセスを示しています。
手順 1: ログアーカイブアカウント A を使用して RAM ロールを作成する
EventBridge が提供するアカウント横断イベントルーティング機能を使用して、ビジネスアカウント B とビジネスアカウント C のイベントをログアーカイブアカウント A の EventBridge に送信します。ログアーカイブアカウント A を使用して、ビジネスアカウント B とビジネスアカウント C のリソースの構成変更イベントを一元的に表示できます。
account-eb-role という名前の RAM ロールを作成し、アカウント間でイベントを送信する権限をロールに付与し、ログアーカイブアカウント A にロールを割り当て、EventBridge にログアーカイブアカウント A にイベントを送信する権限を付与します。
RAM ロールを作成し、EventBridge に割り当てます。
RAM コンソール にログインします。
左側のナビゲーションウィンドウで、 を選択します。
[ロール] ページで、[ロールの作成] をクリックします。
[ロールの作成] ページで、[クラウドアカウント] パラメーターの [プリンシパルタイプ] に選択し、[プリンシパル名] パラメーターにデフォルト値の [現在のアカウント] を選択し、[OK] をクリックします。
[ロールの作成] ダイアログボックスで、[ロール名] フィールドに account-eb-role と入力します。
ロールの詳細ページで、[権限の付与] をクリックします。[権限の付与] パネルの [ポリシー] セクションで、AliyunEventBridgePutEventsPolicy を検索してクリックします。その他のパラメーターにはデフォルト値を保持します。次に、[権限の付与] をクリックします。
信頼ポリシーを変更します。
[ロール] ページで、目的の RAM ロールの名前をクリックします。
[信頼ポリシー] タブをクリックします。[信頼ポリシー] タブで、[信頼ポリシーの編集] をクリックします。
信頼ポリシーの内容を変更します。
ビジネスアカウント B とビジネスアカウント C に対する権限をログアーカイブアカウント A に付与すると、ログアーカイブアカウント A の EventBridge が RAM ロールをアシュームできます。信頼ポリシーの例:
{ "Statement":[ { "Action":"sts:AssumeRole", "Effect":"Allow", "Principal":{ "Service":[ "<ビジネスアカウント B の ID>@eventbridge.aliyuncs.com", "<ビジネスアカウント C の ID>@eventbridge.aliyuncs.com" ] } } ], "Version":"1" }
[OK] をクリックします。
手順 2: ビジネスアカウントを使用してイベントバスを構成する
ビジネスアカウント B を使用して b-eb-filter-ram-role という名前のイベントバスルールを作成し、ビジネスアカウント C を使用して c-eb-filter-ram-role という名前のイベントバスルールを作成します。account-eb-role RAM ロールを使用して、ビジネスアカウント B とビジネスアカウント C のリソースの構成変更イベントをログアーカイブアカウント A の EventBridge に送信します。
EventBridge コンソール にログインします。
左側のナビゲーションウィンドウで、[イベントバス] をクリックします。
上部のナビゲーションバーで、シンガポール などのリージョンを選択します。
[イベントバス] ページの [ルールを作成][システムイベントバス] セクションで、 をクリックします。
[ルールの作成] パネルで、パラメーターを構成します。
[基本情報の構成] ステップで、イベントバスの名前を入力し、[次のステップ] をクリックします。
[イベントパターンの構成] ステップで、[イベントソースタイプ] パラメーターを [alibaba Cloud サービスイベントソース] に設定し、[イベントソース] パラメーターを [acs.ram Resource Access Management] に設定し、[イベントタイプ] パラメーターを [ram:config:configurationitemchangenotification] に設定し、[パターンの内容] セクションに次のコードを入力し、[次のステップ] をクリックします。
EventBridge は、名前にプレフィックス
sg-
が付いた RAM ユーザーまたは RAM ロールのリソースの構成が変更された場合にのみイベントを生成します。イベントパターンの例:{ "source": [ "acs.ram" ], "data": { "resourceName": [ { "prefix": "sg-" } ] }, "type": [ "ram:Config:ConfigurationItemChangeNotification" ] }
[ターゲットの構成] ステップで、[サービスタイプ] パラメーターを [eventbridge] に設定し、[宛先タイプ] パラメーターを [アカウント横断イベントバス] に設定し、[リージョン] を選択し、[アカウント ID] パラメーターをログアーカイブアカウント A の ID に設定し、[イベントバス名] パラメーターを default に設定し、[ロール] パラメーターを account-eb-role に設定し、[イベント] パラメーターを [完全なイベント] に設定し、[作成] をクリックします。
手順 3: ログアーカイブアカウント A を使用して Function Compute を構成する
ログアーカイブアカウント A を使用して Function Compute に関数を作成し、トリガーを使用してリソースの構成変更イベントを Function Compute に送信します。
サービスを作成します。
Function Compute コンソール にログインします。
左側のナビゲーションウィンドウで、[サービスと関数] をクリックします。
上部のナビゲーションバーで、シンガポール などのリージョンを選択します。
[サービス] ページで、[サービスの作成] をクリックします。
[サービスの作成] パネルで、イベントアクション[名前] フィールドに と入力します。
[OK] をクリックします。
関数を作成します。
[eb_event_action] サービスの [関数] ページで、[関数の作成] をクリックします。
[関数の作成] ページで、基本情報を指定し、トリガーを構成します。
[基本設定] セクションで、[関数名] フィールドに eb_event_trigger と入力します。[コード] セクションで、[ランタイム] パラメーターを [python 3.6] に設定し、その他のパラメーターにはデフォルト値を保持します。
[トリガーの構成] セクションで、[alibaba Cloud サービスのイベントトリガー] の [トリガータイプ] パラメーターを [resource Access Management] に設定し、[名前] パラメーターを ConfigurationItemChangeTrigger に設定し、[イベントタイプ] パラメーターを [すべてのイベントタイプを選択] に設定します。イベントパターンの例:
{ "source": [ "acs.ram" ], "type": [ "ram:ActionTrail:AliyunServiceEvent", /* RAM の ActionTrail イベント */ "ram:ActionTrail:ApiCall", /* RAM API 呼び出しイベント */ "ram:ActionTrail:ConsoleOperation", /* RAM コンソール操作イベント */ "ram:Config:ConfigurationItemChangeNotification", /* RAM 構成変更イベント */ "ram:Config:NonCompliantNotification" /* RAM 非準拠イベント */ ] }
その他のパラメーターにはデフォルト値を保持します。
説明Function Compute が EventBridge に初めてアクセスすると、Function Compute に EventBridge へのアクセス権限を付与するように求められます。
[作成] をクリックします。
関数の呼び出しログを表示します。
コード[eb_event_trigger] 関数ページの
logger.info('hello world')
index.pylogger.info(event) // イベントをログに記録します。
タブで、 ファイルの を に変更します。エディターの左上隅にある [デプロイ] をクリックします。
手順 4: ビジネスアカウントを使用してリソースを作成する
ビジネスアカウント B を使用して sg-01 という名前の RAM ロールを作成し、ビジネスアカウント C を使用して sg-02 という名前の RAM ロールを作成します。詳細については、「信頼された Alibaba Cloud アカウントの RAM ロールを作成する」をご参照ください。
手順 5: ログアーカイブアカウント A を使用してリソースの構成変更イベントを表示する
ログアーカイブアカウント A を使用して、ビジネスアカウント B とビジネスアカウント C のリソースの構成変更イベントを表示します。次のいずれかの方法を使用します。
EventBridge コンソールを使用してイベントを表示する
上部のナビゲーションバーで、シンガポール などのリージョンを選択します。
左側のナビゲーションウィンドウで、[イベントバス] をクリックします。
default を見つけ、[アクション] 列の [イベントトラッキング] をクリックします。
時間範囲を指定し、[イベントソース] パラメーターを [acs.ram Resource Access Management] に設定し、[イベントタイプ] パラメーターを [ram:config:configurationitemchangenotification] に設定し、[クエリ] をクリックします。
表示するイベントを見つけて、[アクション] 列の [イベントの詳細] をクリックします。
次の図は、ビジネスアカウント B を使用して作成された sg-01 RAM ロールのサンプルイベントの詳細を示しています。
次の図は、ビジネスアカウント C を使用して作成された sg-02 RAM ロールのサンプルイベントの詳細を示しています。
Function Compute コンソールを使用してイベントを表示する
Function Compute コンソール にログインします。
上部のナビゲーションバーで、シンガポール などのリージョンを選択します。
左側のナビゲーションウィンドウで、[サービスと関数] をクリックします。
表示されるページで、[eb_event_action] をクリックします。
表示されるページで、[eb_event_trigger] をクリックします。
表示されるページで、[ログ] をクリックします。表示されるタブで、時間範囲を指定します。
説明関数の呼び出しログを初めて表示する場合は、[有効化] をクリックして機能を有効にする必要があります。
次の図は、ビジネスアカウント B を使用して作成された sg-01 RAM ロールのサンプルイベントの詳細を示しています。
次の図は、ビジネスアカウント C を使用して作成された sg-02 RAM ロールのサンプルイベントの詳細を示しています。