認証について考慮する
既定では、Azure AI Services リソースへのアクセスはサブスクリプション キーを使用することで制限されます。 これらのキーに対するアクセスの管理が、セキュリティの主な考慮事項です。
キーを再生成する
キーを定期的に再生成し、承認されていないユーザーによってキーが共有またはアクセスされるリスクから保護する必要があります。 キーを再生成するには、Azure portal を使用するか、Azure コマンドライン インターフェイス (CLI) の az cognitiveservices account keys regenerate
コマンドを使用します。
各 AI サービスには 2 つのキーが用意されており、サービスを中断することなくキーを再生成できます。 これには、以下を行う必要があります。
- 運用環境で両方のキーを使用している場合は、1 つのキーのみが使用されるようにコードを変更します。 たとえば、すべての実稼働アプリケーションがキー 1 を使用するように構成します。
- キー 2 を再生成します。
- すべての実稼働アプリケーションが、新しく再生成されたキー 2 を使用するように切り替えます。
- キー 1 を再生成します
- 最後に、新しいキー 1 を使用するように実稼働コードを更新します。
たとえば、Azure portal でキーを再生成するには、次の操作を行います。
- Azure portal で、リソースの [キーとエンドポイント] ウィンドウに移動します。
- 次に、その時点でどちらを再生成するかに応じて、[Key1 の再生成] を選択するか、[Key2 の再生成] を選択します。
Azure Key Vault を使用してキーを保護する
Azure Key Vault は、シークレット (パスワードやキーなど) を安全に格納できる Azure サービスです。 キー コンテナーへのアクセスは "セキュリティ プリンシパル" に付与されます。これは、Microsoft Entra ID を使用して認証されたユーザー ID と考えることができます。 管理者は、セキュリティ プリンシパルをアプリケーションに割り当て (その場合は "サービス プリンシパル" と呼ばれる)、アプリケーションの "マネージド ID" を定義できます。 その後、アプリケーションは、この ID を使用してキー コンテナーにアクセスし、アクセス権があるシークレットを取得できます。 この方法でシークレットへのアクセスを制御すると、アプリケーションへのハードコーディングや構成ファイルへの保存によって侵害されるリスクを最小限に抑えることができます。
AI サービス リソースのサブスクリプション キーを Azure Key Vault に保存し、そのサービスを使用する必要があるクライアント アプリケーションにマネージド ID を割り当てることができます。 その後、アプリケーションは、必要に応じてキー コンテナーからキーを取得でき、承認されていないユーザーに公開するリスクは発生しません。
トークンベースの認証
REST インターフェイスを使用する場合、一部の AI サービスではトークンベース認証がサポート (場合によっては "必要" と) されています。 このような場合、最初の要求でサブスクリプション キーが提示されて、認証トークンを取得します。その有効期間は 10 分です。 後続の要求では、トークンを提示して、呼び出し元が認証されていることを検証する必要があります。
ヒント
SDK を使用する場合、トークンを取得したり提示したりする呼び出しは、SDK によって自動的に処理されます。
Microsoft Entra ID 認証
Azure AI サービスでは Microsoft Entra ID 認証がサポートされているため、特定のサービス プリンシパルまたはマネージド ID に Azure で実行されているアプリとサービスに対するアクセスを付与できます。
Note
AI サービスの認証オプションの詳細については、AI サービスのドキュメントを参照してください。
Microsoft Entra ID を使用して Azure AI サービスに対して認証を行うには、次のようなさまざまな方法があります。
サービス プリンシパルを使って認証を受ける
サービス プリンシパルを使用して Azure AI サービスに対して認証を行う全体的なプロセスは次のとおりです。
カスタム サブドメインを作成する
カスタム サブドメインは、Azure portal、Azure CLI、PowerShell など、さまざまな方法で作成できます。
たとえば、Azure Cloud Shell で PowerShell を使用してサブドメインを作成できます。 これを行うには、次のコマンドを使用してサブスクリプションを選択します。
Set-AzContext -SubscriptionName <Your-Subscription-Name>
その後、次を実行することでカスタム サブドメインを指定して Azure AI サービス リソースを作成します。
$account = New-AzCognitiveServicesAccount -ResourceGroupName <your-resource-group-name> -name <your-account-name> -Type <your-account-type> -SkuName <your-sku-type> -Location <your-region> -CustomSubdomainName <your-unique-subdomain-name>
作成されると、応答でサブドメイン名が返されます。
サービス プリンシパルにロールを割り当てる
カスタム サブドメインにリンクされた Azure AI リソースを作成しました。 次に、サービス プリンシパルにロールを割り当てます。
開始するには、アプリケーションを登録する必要があります。 そのためには、次のコマンドを実行します。
$SecureStringPassword = ConvertTo-SecureString -String <your-password> -AsPlainText -Force
$app = New-AzureADApplication -DisplayName <your-app-display-name> -IdentifierUris <your-app-uris> -PasswordCredentials $SecureStringPassword
これで、アプリケーション リソースが作成されます。
次に、New-AzADServicePrincipal コマンドを使用して、サービス プリンシパルを作成し、アプリケーションの ID を指定します。
New-AzADServicePrincipal -ApplicationId <app-id>
最後に、次のように実行して Cognitive Services ユーザー ロールをサービス プリンシパルに割り当てます。
New-AzRoleAssignment -ObjectId <your-service-principal-object-id> -Scope <account-id> -RoleDefinitionName "Cognitive Services User"
マネージド ID を使用して認証する
マネージド ID は 2 種類あります。
- システム割り当てマネージド ID:マネージド ID が作成され、特定のリソース (Azure AI サービスにアクセスする必要がある仮想マシンなど) にリンクされます。 リソースが削除されると、ID も削除されます。
- ユーザー割り当てマネージド ID:マネージド ID は、1 つのリソースに関連付けるためではなく、複数で使用できるように作成されます。 これはどのリソースからも独立して存在します。
それぞれの種類のマネージド ID を、リソースの作成時でも既に作成された後でも、リソースに割り当てることができます。
たとえば、Azure AI サービスへの毎日のアクセスに使おうとする仮想マシンが Azure にあるとします。 この仮想マシンのシステム割り当て ID を有効にするには、まず、Azure アカウントに仮想マシン共同作成者ロールがあることを確認します。 その後、Azure Cloud Shell のターミナルで Azure CLI を使用して次のコマンドを実行できます。
az vm identity assign -g <my-resource-group> -n <my-vm>
その後、次を使用して、Azure portal で Azure AI サービスへのアクセスを許可できます。
仮想マシンのマネージド ID アクセスを許可する Azure AI サービス リソースに移動します。
[概要] パネルで [アクセス制御 (IAM)] を選択します。
追加を選択し、ロール割り当ての追加を選択します。
[ロール] タブで [Cognitive Services Contributor] (Cognitive Services 共同作成者) を選択します。
[メンバー] タブの [アクセスの割り当て先] で、[マネージド ID] を選択します。 次に、[+ メンバーの選択] を選択します。
[サブスクリプション] ドロップダウンで、サブスクリプションが選択されていることを確認します。 [マネージド ID] では、[仮想マシン] を選択します。
一覧で仮想マシンを選択し、[選択] を選択します。
最後に、[Review + assign] (確認と割り当て) を選択して確認し、もう一度 [Review + assign] (確認と割り当て) を選択して完了します。
Note
ユーザーマネージド ID を含むマネージド ID を構成する方法の詳細については、「Azure CLI を使用して Azure VM 上の Azure リソースのマネージド ID を構成する」を参照してください。