はじめに
Azureを利用するときに、ユーザーに対してリソースへアクセスするための権限(Azureロール)の付与すると思います。
しかし、ユーザー以外にもサービスプリンシパルにもAzureロールを付与することができます。
私自身がAzureの保守、運用を担当しているため、今回は運用目線でサービスプリンシパルについて利用用途や運用時のポイントなどを紹介できればと思います。
初心者向けにわかりやすくまとめたので最後まで読んでいただけると嬉しいです。
サービスプリンシパルとは
Azure環境でアプリケーションやスクリプトがリソースにアクセスするための「ユーザーの代わりに動くID」です。
例えば、自動化されたプロセスやアプリケーションがAzureリソースを操作する場合、このサービスプリンシパルを利用することでアクセスを行うことができます。
また、サービスプリンシパルを利用することで、自動化されたタスク管理を効率よく行うこと等が可能です。
サービスプリンシパルの利用方法
サービスプリンシパルは、主に以下の場合に利用されます。
1.アプリケーションなどがAzureリソースにアクセスするとき
2.AzureADの登録したアプリケーションを複数のAzureテナントにまたがって利用されるとき
3.特定のAzureリソースの監視
※ほかにも利用方法はありますが、一部の紹介となります。
【利点】
①個人アカウントを利用しないため、ユーザーに過剰な権限を付与してしまったことで発生する情報漏洩のリスクが減少
②ユーザーアカウントと比較し手間がかからない
・メンバーが退職、部署移動などが発生した場合に、利用していないアカウントの無効化の対応が
必要になり、手間がかかります。
・ユーザーアカウントの場合アカウントを移行対応などが発生する可能性がある。
③安全性
・サービスプリンシパルを認証るするときに利用する認証情報
(クライアントシークレット、証明書)は定期更新できるため、セキュリティリスクを減らす
ことができます。
サービスプリンシパルの運用時のポイント
■サービスプリンシパルのシークレットの有効期限を確認
サービスプリンシパルを利用する際、必要になるのかシークレットです。
シークレットはサービスプリンシパルが正常なもの(悪質なものではない)ことを証明することができます。
シークレットには期限があるため、有効期限が切れていることでサービスプリンシパルを利用することができなくなります。
そのため、利用中のサービスプリンシパルのシークレットの有効期限はチェックする必要があります。
サービスプリンシパルが利用されているか分からないときの判断方法
Azureロールをサービスプリンシパルから削除したい場合でもサービスプリンシパルが何に利用しているのか分からない。
そもそも誰が利用していたのか把握していないこともあると思います。
私も実際、サービスプリンシパルの利用用途が分からず、情報がない状態でサービスプリンシパルに付与されているAzureロールをどうすればよいのか分かりませんでした。
そのため、サービスプリンシパルに付与されているAzureロールを削除有無の判断方法について紹介します。
※あくまで一例となります。実際は、利用用途が分かっているのが理想的です。
①サインインログでサービスプリンシパルを過去に利用していたのかを確認する
以下の手順で、サービスプリンシパルが過去に利用していたのかどうか判断します。
履歴がある場合、サービスプリンシパルが利用されていることが分かります。
1.Azure Portalにログインします(※レポート閲覧者以上の権限を所持している必要があります)
2.「Microsoft」>「監視」>「サインインされたログ」を選択します
3.「サービスプリンシパルのサインイン」>「許可された時刻:」>「過去1か月」>「適用」
を選択し、確認します。
※サービスプリンシパルログ確認は最長過去1か月前のログの確認ができますが、それ以上の確認はできないため、注意が必要です
②シークレットの有効期限の確認
サービスプリンシパルを認証するときにはクライアントシークレットが必要です。
クライアントシークレットは有効期限があるため、期限切れでないかを確認し、期限が切れている
場合には利用されていない可能性が高いです。
【確認方法】
1.Azure Portalから「アプリの登録」画面をクリック
2.「すべてのアプリケーション」をクリックすると登録されているアプリケーションが表示されます
3.サービスプリンシパル名と同じ名前のアプリケーション名をクリック
※サービスプリンシパルがは「アプリの登録」>「新規登録」にてアプリを追加すると、
アプリケーション名と同じ名前でサービスプリンシパルが作成されます。
4.「証明書とシークレット」をクリック後、登録されているシークレットが表示されるため、
「有効期限」の列で期限を確認します
最後に
最後まで読んでいただきありがとうございました。
Azureを利用する上では避けられないサービスプリンシパルですが「サービスプリンシパルが何かよくわからない」「運用するときに何に気を付けるべきなのか」等知りたい場合はこの記事を読んでいただけると嬉しいです。