目次
概要
Managed ID は、 Azure Active Directory (Azure AD) で提供されるリソースに割り当てられた ID 。 Managed ID を有効にすることで Azure AD による管理と資格情報を使わないサービス間の認証を可能にする。
以前は Azure Managed Service ID の名称だった。
Managed ID の種類は2種類。
システム割り当て
リソースに対して Azure AD によって作成される。ライフサイクルはリソースとひも付き、リソースに対して1対1となる。
ユーザー割り当て
各リソースとは別にスタンドアローンとして作成される。ライフサイクルは独自になり、複数のリソースに割り当てて共有することができる。
(引用)
基本的な流れ。
- Managed ID をサポートするサービス(Source)に対して ID を有効にする。
- Azure AD 認証をサポートしているサービス(Target)に対して、上記 ID にアクセスを割り当てる。
- プログラムからは接続情報などは用いず、各 Target のエンドポイントを使ってアクセスする。
Azure Functions にアクセスを割り当てる場合
対象の Azure Functions を開いて設定から ID を選択する。
システム割り当て済みをオンにする。
例えば App Configuration や Azure Storage を開いてアクセス制御(IAM)を選択し、Functions にロールの割り当てを追加する。
Azure Key Vault ではアクセス制御(IAM)ではなく、アクセスポリシーを使って許可を与える。シークレット、キー、証明書に対して、各リソースがどのような操作を実行できるかを細かく設定できる。
Azure Key Vault アクセス ポリシーを割り当てる (ポータル) | Microsoft Docs
プログラムからは、App Configuration の設定のアクセスキーからエンドポイントを取得してこれを使って接続する。
class Startup : FunctionsStartup { public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder) { builder.ConfigurationBuilder.AddAzureAppConfiguration(options => options.Connect(new Uri(builtConfig["AppConfigEndpoint"]), new ManagedIdentityCredential())); } }
マネージド ID を使用して App Configuration にアクセスする - Azure App Configuration | Microsoft Docs
Blob ストレージの場合。
var containerEndpoint = string.Format("https://{0}.blob.core.windows.net/{1}", accountName, containerName); var containerClient = new BlobContainerClient(new Uri(containerEndpoint), new DefaultAzureCredential());
マネージド ID を使用してデータへのアクセスを認証する - Azure Storage | Microsoft Docs
Key Vault もエンドポイントを使って接続する。
class Startup : FunctionsStartup { public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder) { var builtConfig = builder.ConfigurationBuilder.Build(); builder.ConfigurationBuilder.AddAzureKeyVault(new Uri(builtConfig["KeyVaultEndpoint"]), new DefaultAzureCredential()); } }
関連記事
- Azure Functions で Azure App Configuration から設定を読み込む
- Azure Functions で Azure Key Valut から設定を読み込む
- Azure Functions で Startup クラスを定義して DI を利用する
- Azure Functions で Azure Cosmos DB (Table) を操作する
- Azure Functions で Azure Table Storage を操作する
- Azure Functions で Azure Queue Storage を操作する
- Azure Functions で Azure Blob Storage にファイルを保存する
- Azure Functions で Azure Blob Storage からファイルを取得する
- Azure Functions で Azure Storage への接続情報