Azureの認証認可周りを整理する

はじめに

Azureの権限設計を考える上で、頻出するサービスプリンシパルとマネージドIDについて、調べた事項のメモです。 ※調べながら書いているのに、誤っている点などあればご指摘いただけると嬉しいです。

前提 :AAD空間とサブスクリプション空間

Azureには2つのリソース空間が存在します。

AAD空間

1つ目は、 Azure Active Directory (以下、AAD)により管理されるリソース空間です。このリソース空間には、Azure ADテナントおよびその配下のリソースが収容されます。

サブスクリプション空間

2つ目は、 Azure Resource Manager (ARM)により管理されるリソース空間です。このリソース空間には、管理グループ - サブスクリプション - リソースグループ - リソース という階層構造が存在し、VMやVNetなどAzureが提供する各サービスのリソースが収容されます。

Azureのハイレベルな認証認可のモデル

Azureの認証認可ですが、概ね以下のような設計となっています。 ※理解を容易にするため、AAD空間やサブスクリプション空間内部の詳細な構造は割愛しています。

サブスクリプション空間 : ロールベースのアクセス制御(RBAC)による認可

Azureのロールベースアクセス制御(RBAC) では、以下の2要素で認可の権限を割り当てます。

Azure RBAC におけるロール

  • 各リソースへのアクセス権限のコレクションをロール と呼びます
  • Azure には以下の2種のロールが存在します

    • 組み込みロール
    • カスタムロール
  • 代表的な4種の組み込みロール

Azure RBACにおけるロールの適用スコープ

AAD空間 : セキュリティプリンシパルの類型

前述の通り、AAD空間とはAzure Active Directory (以下、AAD)により管理されるリソース空間です。AAD空間にはセキュリティプリンシパルが格納されます。セキュリティプリンシパルは認証IDとPWを持ちユーザーアカウントとして機能するエンティティであり、4つのサブタイプが存在します。マネージドIDについては、更に2種のサブタイプに別れます。

それぞれのセキュリティプリンシパルが想定する利用者

セキュリティプリンシパルの4つのサブタイプが想定するユースケースを以下に整理します。

  • ユーザーグループ は、人間のアクターが利用することを想定しています
  • サービスプリンパルマネージドID は、人間以外のアクター利用することを想定しています。マネージドIDはAzure上に存在のリソースのみが使用するプリンシパルであり、Azure外のリソースは使用する事ができません。

サービスプリンシパルとアプリケーションオブジェクト

前項で「サービスプリンシパルは人間ではないシステムによる利用を想定されている」と説明しました。このケースにおいては、システムによるアクセスに際し、間に アプリケーションオブジェクト というAADリソースが入る形のアクセス経路となります。アプリケーションオブジェクト は「Azureを利用するアプリケーションを表すオブジェクト」であり、サービスプリンシパルとの関係性は以下となります。

  • サービスプリンシパル:AAD認証に際し使われる、ユーザーアカウント(認証ID + 認証PW)
  • アプリケーションオブジェクト:認証を実行するアクター(システム)

参考にした記事

/* https://sunrise033.com/entry/hatena-blog-how-to-hierarchicalize-categories */