Azure DataFactoryでAzure DataExploreとの接続を確立したかったので、リンクサービスの設定を実施していたところ、資格情報の選択で何を設定してよいかさっぱりわからず、途方にくれました。そこでAzureの資格情報についていろいろ調べてみました。
私が悩んだのは、サービスプリンシパル・システム割り当てマネージドID・ユーザー割り当てマネージドIDの内、どれを選択したらよいかということでした。
調べた限りの私が考えた結論は、
- Azure外のオンプレミスや別サービスのリソースを使用する→サービスプリンシパル
- リソースはすべてAzure内で完結している→マネージドID
- 比較的小規模なリソース構成→システム割り当てマネージドID
- 大規模なリソース構成→ユーザー割り当てマネージドID
という考え方が一番しっくりくるような気がします。私の場合は、Azure DataFactoryとAzure DataExploreともにマネージドIDに対応したサービスで、テスト用の小規模なシステムを構築したかったのでシステム割り当てのマネージドIDを資格情報に使用することにしました。
サービスプリンシパル
AzureADに作成したアプリケーションのIDとパスワードの認証を委任することができる。
Azureサブスクリプションのアクセス許可がないと作成できない。
マネージドID
システム割り当てマネージドID
システム割り当てマネージドIDは、Azureのリソースの設定で直接有効にする。マネージドIDを有効にするとAzure Resource Managerを通じて、Azure内にサービスプリンシパルが作成される。リソースごとに割り当たる。
リソースが削除されたときは、マネージドIDも一緒に削除される。
1つのリソースに1つのマネージドIDしか持つことができない。
ユーザー割り当てマネージャーID
リソースに関係なく、独立した形で割り当てられるマネージドID。例えばWebアプリ10個のリソースを使用している場合、10個のアプリに1つのユーザー割り当てマネージドIDを付与すれば、1つのIDで済ますことが可能。比較的大規模なシステム構成の場合に使用する。マネージドID画面から作成。
システム割り当てとユーザー割り当ての違い
プロパティ | システム割り当て マネージドID | ユーザー割り当て マネージドID |
---|---|---|
作成 | リソースの一部として作成 | 独立した形で作成 |
ライフサイクル | リソースが削除されると一緒に削除される。 | 明示的に削除する必要あり |
リソース間の共有 | 共有できない | 共有できる ※複数のリソースに同じIDを紐づけ可能 |
例 | Azure内の1つのリソースで処理が完結するアプリケーションで利用 | Azure内の複数のリソースで処理が行われている場合に利用 |
コメント