本日、クラウドおよびハイブリッド クラウド環境でのセキュリティ制御を評価するために、 Azure Functionsの上に構築されたクラウド ネイティブのサーバーレス アプリケーションであるCloud Katanaをオープン ソース化しています。現在、Azure でのユース ケースのみをカバーしていますが、他のクラウド プロバイダーへの拡張に取り組んでいます。
Cloud Katana の設計原則
図 1: Cloud Katana の設計原則。
Cloud Katana は、次の原則に基づいて設計および開発されました。
- サーバーレス実行モデル。
- Web API としてオンデマンドで計算します。
- YAML ベースの攻撃定義。
- オーケストレーションされたステートフルな実行。
- 安全な認証と承認。
- マネージド ID の統合。
- Azure リソースへのきめ細かいアクセス制御。
- プログラミング言語に依存しないクライアント。
- クラウドとオンプレミスのカバレッジ。
サーバーレス実行モデル
Cloud Katana は、サービスとしてのプラットフォーム (PaaS) の概念に依存するクラウドネイティブ ソリューションであり、シミュレーションの実行に使用される基盤となるインフラストラクチャのデプロイと保守を心配することなく、簡素化されたスケーラブルなイベント駆動型ソリューションを提供します。
このニーズを満たすために、Cloud Katana は Azure Functions を使用して、トリガー呼び出しに基づいて自動的にスケーリングする実行ごとの課金モデルを通じて、コードからオペレーティング システム レイヤーを抽象化します。
図 2: サーバーレス実行モデルの基本的な定義。
Web API としてオンデマンドで計算
シミュレーション ステップは、関数と呼ばれるコードのブロックとして表され、組み込みのサーバーレス Web API を介してHTTP 要求を介して呼び出されます。
この機能を使用すると、特定のシミュレーションに関する情報を含む HTTP 要求を単純に送信し、その下のインフラストラクチャが要求を処理するのを待つことができます。現在、すべての関数は PowerShell で記述されており (変更される可能性があります)、MITRE ATT&CK フレームワークに従って分類されています。
図 3: サーバーレス Web API を介してオンデマンドで計算し、ATT&CK 戦術によって分類します。
YAML ベースの攻撃定義
すべての攻撃シミュレーションは YAML ベースの形式で文書化され、タイトル、説明、ATT&CK マッピング、予想される入力と出力、シミュレーション ステップを実行する前に適切な権限があることを確認するための前提条件などのメタデータを集約します。これにより、文書化されたすべてのアクションのプログラムによる処理と、他のいくつかのリソースの自動セットアップが容易になります。
図 4: YAML ベースのドキュメントの例。
オーケストレーションされたステートフルな実行
このプロジェクトは、 durable functionsという名前の Azure 関数の拡張機能を使用して、状態を処理し、多数の攻撃シミュレーションにわたって信頼性を確保するようにも設計されています。この機能により、アクションが他のシミュレーション ステップの状態と出力に依存するシナリオのオーケストレーションと実行が可能になります。これは、特定の攻撃パスをコードとして定義するのに適しています。
図 5: 一連のイベントを実行するためのオーケストレーションされたステートフル実行。
安全な認証と認可
Cloud Katana は、アプリケーションを保護するための認証と承認のベスト プラクティスも適用します。
認証
このプロジェクトでは、クライアントを認証するための ID プロバイダーとしてMicrosoft Identity Platform (Azure Active Directory または Azure AD とも呼ばれます) を使用します。この機能には、登録済みの Azure AD アプリケーションが必要です。これにより、ユーザーは OAuth 認証を使用して Azure 関数アプリに接続できます。
さらに、ID プロバイダーを使用すると、次の機能が有効になります。
- 条件付きアクセス ポリシー。
- 多要素認証の使用。
- シングル サインオン (SSO)。
図 6: Cloud Katana で使用される OAuth デバイス認可付与フロー。
認可
シミュレーションを実行する前にユーザーに認証を強制するだけでなく、プロジェクトは「アプリケーション ロールの割り当て」を実装して、選択したユーザーへのアクセスを制限します。これにより、組織はその環境でプロジェクトを使用できるユーザーを選択できます。
マネージド ID の統合
さらに、Azure でシミュレーションを実行する場合、Cloud Katana はユーザー割り当てのマネージド IDを使用して、Azure AD で保護されたリソースにアクセスします。マネージド ID の利点の 1 つは、シークレットをプロビジョニングまたはローテーションする必要がないことです。
図 7: Azure リソースにアクセスするユーザー割り当てマネージド ID。
Azure リソースへのきめ細かいアクセス制御
Azure リソースへのアクセスは、マネージド ID に割り当てられたアクセス許可によって定義されます。現在、Azure ベースのシナリオについて説明しています。そのため、 Microsoft Graph APIの各主要セットに関連付けられたアクセス許可を使用して、特定の Azure リソースへのアクセスを制御します。
たとえば、Cloud Katana を使用して資格情報をアプリケーションに追加する場合は、マネージド ID に次のアクセス許可(最小から最大の特権の順) を付与する必要があります。
- Application.ReadWrite.OwnedBy
- アプリケーション.読み取り.書き込み.すべて
図 8: Cloud Katana は、Microsoft Graph API を介して Azure AD アプリケーションに資格情報を追加します。
プログラミング言語に依存しないクライアント
Cloud Katana を非常に強力なツールにしているもう 1 つの機能は、任意のプログラミング言語を使用してシミュレーションを要求できる柔軟性です。 Cloud Katana との対話に使用されるクライアントが Azure AD 認証プロセスを処理できる場合、シミュレーションがどのように要求されたかは関係ありません。
図 9: サーバーレス Web API と対話する言語に依存しないクライアントのプログラミング。
Microsoft 認証ライブラリは、 PowerShell を介して MSAL.PS として、 Python を MSALとして利用できます。また、 Jupyter Notebookなどの他のオープンソース プロジェクトを使用して、シミュレーションの実行を示し、他のセキュリティ研究者とプロセスを共有するための繰り返しテンプレートを作成することもできます。
図 10: シミュレーションを実行するための Jupyter Notebook の実行。
クラウドおよびオンプレミスのシミュレーション
最後に、現在、クラウドだけでなくオンプレミスでもシミュレーションを実行するために、 Azure App Service ハイブリッド接続を実験しています。ハイブリッド接続は、 リレー エージェントを使用して、オンプレミスで実行されるサービスをパブリック クラウドに安全に公開します。リレー エージェントは、オンプレミス サーバーと Cloud Katana Azure Function アプリの中間に位置します。
リレー エージェント ( Hybrid Connection Manager (HCM)) がオンプレミス サーバーにセットアップされ、ポート 443 経由で Azure Relay を呼び出すように構成されています。構内サーバーに接続し、シミュレーションをローカルで実行します。この接続では、セキュリティに TLS 1.2 を使用し、認証と承認に Shared Access Signature (SAS) キーを使用します。
図 11: Cloud Katana 関数アプリからオンプレミスのリソースでシミュレーションを実行しています。
クラウドカタナを展開する
Cloud Katana の設計原則について学習したら、ドキュメントを参照してプロジェクトをデプロイできます。
セキュリティ管理を評価する
Azure 関数アプリが正常にデプロイされたら、ドキュメントで利用可能ないくつかのデモを実行できます。主なアイデアは、シミュレーション ステップをコードとして記述し、オンデマンドで実行するだけでなく、検出とセキュリティ制御を評価することです。
これからの仕事
より多くのシミュレーション ステップを自動化してリリースするだけでなく、ツールの展開と実行範囲を改善するためのいくつかの機能にも取り組んでいきます。以下のリストは、私たちが現在持っているアイデアの一部を示しています (特定の順序ではありません)。
- 他のクラウド プロバイダーでのシミュレーション。
- Azure ハイブリッド接続管理サービスによるオンプレミス シミュレーション。
- より柔軟な方法で一連のシミュレーション ステップを文書化するためのデータ モデル。
- Azure 関数アプリをデプロイおよび維持するための Azure DevOps 継続的統合および継続的遅延 (CI/CD) パイプライン。
- SimuLand との統合により、セキュリティ研究者はすべてをまとめて展開することができます。
- ネットワーク環境で機能をサービスとして定期的に実行するようにスケジュールする方法。
- 各シミュレーション後にアラートがトリガーされたか、またはデータが生成されたかを確認する方法。
- Atomic Red Teamなどの他のプロジェクトをフレームワークに統合するプラグインのような機能。
コミュニティへの貢献
コミュニティからの貢献とフィードバックをお待ちしております。プロジェクトの特定の領域に貢献したい場合は、 GitHub リポジトリで問題を開いてアイデアを共有してください。いくつかのアイデアについては、前の「今後の作業」セクションを参照してください。
もっと詳しく知る
このオープンソース イニシアチブの詳細については、 Cloud Katana GitHub リポジトリにアクセスしてください。
Microsoft セキュリティ ソリューションの詳細については、 当社の Web サイト を参照してください。セキュリティ ブログをブックマークして、セキュリティに関する専門家の記事を入手してください。また、 @MSFTSecurityをフォローして、サイバーセキュリティに関する最新ニュースと更新情報を入手してください。
参考: https ://www.microsoft.com/en-us/security/blog/2021/08/19/automating-security-assessments-using-cloud-katana/
Comments