👋

マルチAzureAD環境の検討(ログ集約編)by Lighthouse(後編)

2023/04/26に公開

はじめに

「AzureADのマネージドな機能を利用して、マルチAAD環境を作ってみよう」という想定で、必要な機能とその実現方式をまとめているシリーズ。
マルチAAD環境におけるログ集約について検討中です。
前編をまだ読んでいない場合は、先にそちらをご確認下さい。
https://zenn.dev/tomot/articles/c3ae8582a096cc

検討の続き

前回の記事で、1:1(ログを保存したい側:ログを保存する側)の構成を作り、実際にログ保存できるところまで確認しました。

しかし、「マルチAAD」と言うからには登場人物がたった2つのAADでは足りません。さらに追加でログ保存する場合を想定します。

ポイントとなる仕様と構成

図中でも明記していますが、1つのリソースグループを複数のAADに対して「委任」することは、Lighthouseの仕様上OKとなっています。
今回は、1つのストレージアカウント(を含むリソースグループ)を複数のAADに対して委任して、ログを保存させる方式を考えます。

課題と考慮点

2つ以上の環境からのログを受けるにあたって、考慮すべきポイントがいくつかあります。

ログの見分けがつくか

ActivityLogであれば、下記のように「サブスクリプションID」ごとにフォルダ(BLOBのプレフィックス)が分かれます。

SigninLogであれば、下記のように「テナントID」で分かれます。

なので、ログが混ざってしまうことはありません。

他環境のログが見えてしまわないか

Lighthouseの仕組みの都合上、「組み込みロール」でしか委任することができません。ABAC(属性ベースのアクセス制御)と組み合わせられるようになれば、ログを書き込んでいる側の環境自身の範囲に権限を絞れそうですが、現時点では権限で振り分けるのは難しいだろうと考えます。
残念ながら他環境のログが見えてしまいますが、そもそもの目的(ログの集約管理)の中に統制も含まれるとすると、それを嫌う環境は多いと思います。

その場合は「1つのストレージアカウント」ではなくて、「委任先の環境ごとにストレージアカウントを分割作成」するのが現時点での解となります。

とはいえ、現時点での「マルチAAD」は、1組織の中でAADが割れている場合が想定されていますので(Microsoft公式ドキュメントより)、『見えてもいいじゃん?』という整理で進めるのが現実的かなと思います。

他環境含めログを変更できてしまわないか

また、「組み込みロール」を使う都合上、現時点では『ログの書き込みはできるけど削除や変更は出来ない』という便利なロールはありません。(無いと思いますが、ゼロの証明は難しい…。もしあったらゴメンナサイ)
するとストレージアカウント側の機能で守ることになりますが「不変ストレージ」機能を使うのが現実的です。追記は可能、かつ削除が出来ない…という状態で実装することになるかなと思います。

おわりに

今回は、「AAD跨ぎでログを集約する」という前回の検討に加えて、「複数のAAD環境からログを集約してくる」という観点で追加確認しました。
目的は果たせるのですが、確実な固い統制を…と考えるとまだ課題はありそうです。とはいえ一部の制約に目をつぶれば、十分使える世界になっていますね。
ここまででSSO、ログ管理と機能検証を進めてきましたが、「これもできたらいいのになー」があればぜひコメント欄で教えて下さい。

Discussion