Azure Chaos Studio でのアクセス許可とセキュリティ

Azure Chaos Studio を使用して、Azure リソースにフォールトを体系的に挿入することで、サービスの回復性を向上させることができます。 フォールト挿入は、サービスの回復性を向上させる強力な方法ですが、危険を伴う可能性もあります。 アプリケーションで障害を発生させると、当初意図したより多くの影響を与え、悪意のあるアクターにアプリケーションに侵入する機会を与える可能性があります。

Chaos Studio には、誤って、または不正なアクターによってフォールトが実行されないようにする堅牢なアクセス許可モデルがあります。 この記事では、Chaos Studio を使用して、フォールト挿入のターゲットとなるリソースをセキュリティで保護する方法について学びます。

Chaos Studio でフォールトを挿入する機能を制限するにはどうすればよいですか。

Chaos Studio には 3 つのレベルのセキュリティがあり、リソースに対するエラーのインジェクションがいつどのように発生させられるかを制御するのに役立ちます:

  • まず、カオス実験は、リージョン、リソース グループ、サブスクリプションにデプロイされる Azure リソースです。 ユーザーは、実験を作成、更新、開始、キャンセル、削除、または表示するための適切な Azure Resource Manager アクセス許可を持っている必要があります。

    各アクセス許可は、ID に対して細かく割り当てたり、ワイルドカード アクセス許可を持つ役割の一部として割り当てたりできる Resource Manager の操作です。 たとえば、Azure の共同作成者役割には、割り当てられたスコープで */write アクセス許可があり、これには Microsoft.Chaos/experiments/write アクセス許可が含まれます。

    リソースに対してエラーをインジェクトする機能を制御しようとする場合、制限する最も重要な操作は Microsoft.Chaos/experiments/start/action です。 この操作により、エラーをインジェクトするカオス実験が開始されます。

  • 次に、カオス実験には、リソースに対してエラーを実行するシステム割り当てマネージド ID、またはユーザー割り当てマネージド ID があります。 実験にシステム割り当てマネージド ID を使用することを選択した場合は、実験作成時に Microsoft Entra テナントに ID が作成されます。 ユーザー割り当てマネージド ID は、任意の数の実験で使用できます。

    カオス実験では、システム割り当てマネージド ID またはユーザー割り当てマネージド ID の選択でカスタム役割の割り当てを有効にすることを選択できます。 この機能を有効にすると、Chaos Studio では、(ID の選択ではまだ存在しない) 必要な実験操作機能を含むカスタム役割を作成し、実験の ID に割り当てることができます。 カオス実験でユーザー割り当てマネージド ID を使用している場合、Chaos Studio によって実験 ID に割り当てられたカスタム役割は、実験の削除後も保持されます。

    実験のアクセス許可を手動で付与する場合は、その ID すべてのターゲット リソースに適切なアクセス許可を付与する必要があります。 リソースに対する適切なアクセス許可が実験 ID にない場合、実験 ID はそのリソースに対してエラーを実行することはできません。

  • 3 番目に、各リソースは、対応する機能が有効になっているターゲットとして Chaos Studio にオンボードにする必要があります。 実行されているエラーのターゲットまたは機能が存在しない場合、実験はリソースに影響を与えずに失敗します。

ユーザー割り当てマネージド ID

カオス実験では、ユーザー割り当てマネージド ID を利用して、実験のターゲット リソースにエラーをインジェクトするための十分なアクセス許可を取得できます。 さらに、Chaos Studio の任意の数の実験で、ユーザー割り当てマネージド ID を使用できます。 この機能を利用するには、次の操作を行う必要があります:

  • まず、マネージド ID サービス内にユーザー割り当てマネージド ID を作成します。 この時点で、カオス実験を実行するために必要なユーザー割り当てマネージド ID のアクセス許可を割り当てることができます。
  • 次に、カオス実験を作成するときに、サブスクリプションからユーザー割り当てマネージド ID を選択します。 この手順では、カスタム役割の割り当てを有効にすることができます。 この機能を有効にすると、実験に含まれるエラーに基づいて必要なアクセス許可が ID に付与されます。
  • 3 つ目は、混乱実験にすべての障害を追加した後、混乱実験を正常に実行するために必要なすべてのアクションが ID 構成に含まれているかどうかを確認することです。 含まれていない場合は、システム管理者にアクセスするか、実験のエラー選択を編集してください。

エージェントの認証

エージェント ベースのエラーを実行する場合は、Chaos Studio エージェントを仮想マシン (VM) または仮想マシン スケール セットにインストールする必要があります。 エージェンでは、ユーザー割り当てマネージド ID を使用して Chaos Studio を認証し、'エージェントプ ロファイルを使用して特定の VM リソースとの関係を確立します。

エージェントベースのフォールトに対して VM または仮想マシン スケール セットをオンボードする場合は、まずエージェント ターゲットを作成します。 エージェント ターゲットには、認証に使用されるユーザー割り当てマネージド ID への参照が必要です。 エージェント ターゲットには、エージェントのインストール時に構成として指定されるエージェント プロファイル ID が含まれます。 エージェント プロファイルはターゲットごとに一意であり、ターゲットはリソースごとに一意となります。

Azure Resource Manager の操作と役割

Chaos Studio には次の操作があります。

操作 説明
Microsoft.Chaos/targets/[Read,Write,Delete] ターゲットを取得、作成、更新、または削除します。
Microsoft.Chaos/targets/capabilities/[Read,Write,Delete] 機能を取得、作成、更新、または削除します。
Microsoft.Chaos/locations/targetTypes/Read すべてのターゲットの種類を取得します。
Microsoft.Chaos/locations/targetTypes/capabilityTypes/Read すべての機能の種類を取得します。
Microsoft.Chaos/experiments/[Read,Write,Delete] カオス実験を取得、作成、更新、または削除します。
Microsoft.Chaos/experiments/start/action カオス実験を開始します。
Microsoft.Chaos/experiments/cancel/action カオス実験を停止します。
Microsoft.Chaos/experiments/executions/Read カオス実験の実行状態を取得します。
Microsoft.Chaos/experiments/executions/getExecutionDetails/action カオス実験の実行について、実行の詳細 (各アクションの状態とエラー) を取得します。

これらのアクセス許可を細かく割り当てるために、カスタム ロールを作成することができます。

ネットワークのセキュリティ

Chaos Studio とのユーザーのすべてのやり取りは、Azure Resource Manager を通して行われます。 ユーザーが実験を開始した場合、実験では、エラーに応じて Resource Manager 以外のエンドポイントとやり取りすることがあります:

  • サービス直接エラー: ほとんどのサービス直接エラーは Azure Resource Manager を介して実行され、許可リストに登録されたネットワーク エンドポイントは必要ありません。
  • サービス直接 AKS Chaos Mesh の障害: Chaos Mesh を使用する Azure Kubernetes Service のサービスダイレクト エラーには、AKS クラスターの Kubernetes API サーバーへのアクセス権が必要です。
  • エージェントベースのエラー: エージェントベースのエラーには、Chaos Studio エージェント サービスへのエージェント アクセス権が必要です。 エージェントが正常に接続するには、VM または仮想マシン スケール セットにエージェント サービス エンドポイントへの送信アクセス権がある必要があります。 エージェント サービス エンドポイントは https://acs-prod-<region>.chaosagent.trafficmanager.net です。 <region> プレースホルダーは、VM がデプロイされているリージョンに置き換える必要があります。 たとえば、米国東部の VM の場合は https://acs-prod-eastus.chaosagent.trafficmanager.net です。
  • エージェントベースのプライベート ネットワーク: Chaos Studio エージェントでプライベート ネットワークがサポートされるようになりました。 Chaos Agent のプライベート ネットワークに関する記事を参照してください。

サービス タグ

サービス タグ とは、ネットワーク セキュリティ グループのインバウンド規則とアウトバウンド規則に割り当てることができる IP アドレス プレフィックスのグループです。 これは、IP アドレス プレフィックスのグループに対する更新を、介入なしで自動的に処理します。 サービス タグは主に IP アドレスのフィルター処理を有効にするため、トラフィックのセキュリティによる保護は、サービス タグだけでは十分ではありません。

サービス タグを使用すると、プラットフォームの IP アドレスを知る必要なく、Chaos Studio からの受信トラフィックを明示的に許可できます。 Chaos Studio のサービス タグは ChaosStudio です。

サービス タグの制限は、パブリック IP アドレスを持つアプリケーションでしか使用できないことです。 リソースにプライベート IP アドレスしかない場合、サービス タグはトラフィックをルーティングできません。

ユース ケース

Chaos Studio では、いくつかのユース ケースにサービス タグが使用されます。

  • エージェントベースの障害を使用するには、顧客の仮想マシン内で実行されている Chaos Studio エージェントが Chaos Studio バックエンド サービスと通信する必要があります。 サービス タグを使用すると、顧客が、仮想マシンから Chaos Studio サービスへのトラフィックを許可リストに追加できます。
  • Azure Kubernetes Service の Chaos Mesh 障害などの、management.azure.com 名前空間外の通信を必要とする特定の障害を使用する場合、トラフィックは Chaos Studio サービスから顧客のリソースに送信されます。 サービス タグを使用すると、顧客は、Chaos Studio サービスからターゲット リソースへのトラフィックを許可リストに追加できます。
  • 顧客は、ネットワーク セキュリティ グループ ルールの障害の一部として他のサービス タグを使用して、特定の Azure サービスとの間のトラフィックに影響を与えることができます。

セキュリティ規則で ChaosStudio サービス タグを指定すると、個々の IP アドレスを指定する必要なく、Chaos Studio サービスのトラフィックを許可または拒否できます。

セキュリティに関する考慮事項

サービス タグを評価して使用する場合は、個々の IP アドレスに対するきめ細かい制御が提供されないこと、および、ネットワークをセキュリティで保護するための唯一の方法として依存してはならないことに注意することが重要です。 これらは、適切なネットワーク セキュリティ対策の代わりではありません。

データの暗号化

Chaos Studio によって、既定ですべてのデータが暗号化されます。 Chaos Studio は、マネージド ID オブジェクト ID、実験/ステップ/ブランチ名、障害パラメーターなどのシステム プロパティに対する入力のみを受け入れます。 たとえば、ネットワーク切断エラーでブロックするネットワーク ポート範囲があります。

これらのプロパティを使用して、支払い情報やパスワードなどの機密データを格納することはできません。 Chaos Studio でのデータの保護方法について詳しくは、「Azure での顧客データの保護」を参照してください。

カスタマー ロックボックス

お客様は、ロックボックスを使用して、サポート リクエストへの対応時の Microsoft のエンジニアによる顧客実験データへのアクセス要求を承認または拒否できます。

ロックボックスは混乱実験情報に対して有効にすることができ、ロックボックスが有効になっている場合は、サブスクリプション レベルでデータにアクセスするためのアクセス許可が顧客によって付与されます。

詳細については、「Microsoft Azure 用カスタマー ロックボックス」を参照してください。

次のステップ

混乱の実験をセキュリティで保護する方法を理解したら、次の準備ができました: