Azure AI Studio でのロールベースのアクセス制御

重要

この記事で説明する機能の一部は、プレビューでのみ使用できる場合があります。 このプレビューはサービス レベル アグリーメントなしで提供されており、運用環境ではお勧めしません。 特定の機能はサポート対象ではなく、機能が制限されることがあります。 詳しくは、Microsoft Azure プレビューの追加使用条件に関するページをご覧ください。

この記事では、Azure AI Studio ハブへのアクセス (認可) を管理する方法について説明します。 Azure ロールベースのアクセス制御 (Azure RBAC) は、Azure リソースへのアクセスを管理するために使用されます (新しいリソースの作成や既存のリソースの使用など)。 Microsoft Entra ID のユーザーには、リソースへのアクセス権を付与する特定のロールが割り当てられます。 Azure には、組み込みロールと、カスタム ロールを作成する機能の両方が用意されています。

警告

一部のロールを適用すると、他のユーザーが Azure AI Studio を使用するときに UI 機能が制限されることがあります。 たとえば、ユーザーのロールにコンピューティング インスタンスを作成する機能がない場合、コンピューティング インスタンスを作成するオプションをスタジオで使用できません。 この動作は想定されており、アクセス拒否エラーが返される操作をユーザーが実行できないようにしています。

AI Studio ハブとプロジェクト

Azure AI Studio には、ハブとプロジェクトという 2 つのレベルのアクセスがあります。 ハブはインフラストラクチャ (仮想ネットワークのセットアップ、カスタマー マネージド キー、マネージド ID、ポリシーなど) のホームであり、ここで Azure AI サービスを構成します。 ハブ アクセスを使うと、インフラストラクチャの変更、新しいハブの作成、プロジェクトの作成を行うことができます。 プロジェクトは、AI システムを構築およびデプロイできるワークスペースとして機能するハブのサブセットです。 プロジェクト内では、フローの開発、モデルのデプロイ、プロジェクト資産の管理を行うことができます。 プロジェクト アクセスを使うと、ハブでのインフラストラクチャ セットアップを利用しながら、AI をエンドツーエンドで開発できます。

AI Studio リソース間の関係の図。

ハブとプロジェクトの関係の主な利点の 1 つは、開発者がハブのセキュリティ設定を継承する独自のプロジェクトを作成できることです。 また、プロジェクトの共同作成者であり、新しいプロジェクトを作成できない開発者がいる場合もあります。

ハブの既定のロール

AI Studio ハブには、既定で使用できる組み込みロールがあります。

ハブの組み込みロールとそのアクセス許可を次の表に示します。

ロール 説明
所有者 新しいハブを管理および作成し、アクセス許可を割り当てる機能を含む、ハブに対するフル アクセス権。 このロールはハブ作成者に自動的に割り当てられます
Contributor ユーザーは、新しいハブを作成する機能を含め、ハブに対するフル アクセス権を持っていますが、既存のリソースに対するハブのアクセス許可を管理することはできません。
Azure AI 開発者 新しいハブの作成とハブのアクセス許可の管理を除くすべてのアクションを実行します。 たとえば、ユーザーはプロジェクト、コンピューティング、接続を作成できます。 ユーザーは自分のプロジェクト内でアクセス許可を割り当てることができます。 ユーザーは、Azure OpenAI、Azure AI 検索、Azure AI サービスなどの既存の Azure AI リソースとやり取りできます。
Azure AI の Inference Deployment Operator リソース グループ内でリソースのデプロイの作成に必要なすべてのアクションを実行します。
Reader ハブに対する読み取り専用アクセス。 このロールは、ハブ内のすべてのプロジェクト メンバーに自動的に割り当てられます。

共同作成者と Azure AI 開発者の主な違いは、新しいハブを作成する権限です。 (クォータ、コスト、または単に所有するハブ数の管理という理由で) ユーザーに新しいハブを作成させたくない場合は、Azure AI 開発者ロールを割り当てます。

ハブを作成できるのは、所有者と共同作成者のロールのみです。 現時点では、カスタム ロールでは、ハブを作成するためのアクセス許可は付与されません。

新しい "Azure AI 開発者" ロールのアクセス許可の完全なセットは次のとおりです。

{
    "Permissions": [ 
        { 
        "Actions": [ 
    
            "Microsoft.MachineLearningServices/workspaces/*/read", 
            "Microsoft.MachineLearningServices/workspaces/*/action", 
            "Microsoft.MachineLearningServices/workspaces/*/delete", 
            "Microsoft.MachineLearningServices/workspaces/*/write" 
        ], 
    
        "NotActions": [ 
            "Microsoft.MachineLearningServices/workspaces/delete", 
            "Microsoft.MachineLearningServices/workspaces/write", 
            "Microsoft.MachineLearningServices/workspaces/listKeys/action", 
            "Microsoft.MachineLearningServices/workspaces/hubs/write", 
            "Microsoft.MachineLearningServices/workspaces/hubs/delete", 
            "Microsoft.MachineLearningServices/workspaces/featurestores/write", 
            "Microsoft.MachineLearningServices/workspaces/featurestores/delete" 
        ], 
        "DataActions": [ 
            "Microsoft.CognitiveServices/accounts/OpenAI/*", 
            "Microsoft.CognitiveServices/accounts/SpeechServices/*", 
            "Microsoft.CognitiveServices/accounts/ContentSafety/*" 
        ], 
        "NotDataActions": [], 
        "Condition": null, 
        "ConditionVersion": null 
        } 
    ] 
}

プロジェクトの既定のロール

AI Studio のプロジェクトには、既定で使用できる組み込みロールがあります。

プロジェクトの組み込みロールとそのアクセス許可を次の表に示します。

ロール 説明
所有者 プロジェクト ユーザーにアクセス許可を割り当てる機能を含む、プロジェクトに対するフル アクセス権。
Contributor ユーザーは、プロジェクトに対してフル アクセス権を持っていますが、プロジェクト ユーザーにアクセス許可を割り当てることはできません。
Azure AI 開発者 ユーザーはデプロイの作成など、ほとんどのアクションを実行できますが、プロジェクト ユーザーにアクセス許可を割り当てることはできません。
Azure AI の Inference Deployment Operator リソース グループ内でリソースのデプロイの作成に必要なすべてのアクションを実行します。
Reader プロジェクトに対する読み取り専用アクセス権。

ユーザーにプロジェクトへのアクセス権が付与されると (たとえば、AI Studio のアクセス許可管理を通じて)、さらに 2 つのロールがユーザーに自動的に割り当てられます。 最初のロールはハブに対する閲覧者です。 2 番目のロールは Inference Deployment Operator ロールです。これにより、ユーザーはプロジェクトが存在するリソース グループにデプロイを作成できます。 このロールは、"Microsoft.Authorization/*/read""Microsoft.Resources/deployments/*" の 2 つのアクセス許可で構成されます。

エンド ツー エンドの AI の開発とデプロイを完了するために、ユーザーが必要とするのは、これら 2 つの自動割り当てロールと、プロジェクトの共同作成者または Azure AI 開発者ロールだけです。

プロジェクトを作成するために必要な最小限のアクセス許可は、ハブに対して Microsoft.MachineLearningServices/workspaces/hubs/join の許可アクションがあるロールです。 Azure AI Developer の組み込みロールには、このアクセス許可があります。

依存関係サービスの Azure RBAC アクセス許可

ハブには、他の Azure サービスへの依存関係があります。 ハブを作成する際に、これらのサービスに必要なアクセス許可を以下の表に示します。 ハブを作成するユーザーには、これらのアクセス許可が必要です。 ハブからプロジェクトを作成するユーザーは、これらを必要としません。

権限 目的
Microsoft.Storage/storageAccounts/write 指定されたパラメーターを使用してストレージ アカウントを作成するか、プロパティまたはタグを更新します。または、指定されたストレージ アカウントのカスタム ドメインを追加します。
Microsoft.KeyVault/vaults/write 新しい Key Vault を作成するか、既存の Key Vault のプロパティを更新します。 プロパティによっては、より多くのアクセス許可が必要な場合があります。
Microsoft.CognitiveServices/accounts/write API アカウントを記述します。
Microsoft.MachineLearningServices/workspaces/write 新しいワークスペースを作成するか、既存のワークスペースのプロパティを更新します。

エンタープライズ RBAC セットアップのサンプル

企業向けの Azure AI Studio のロールベースのアクセス制御を設定する方法の例を次の表に示します。

ペルソナ ロール 目的
IT 管理者 ハブの所有者 IT 管理者は、ハブが企業の標準に合わせて設定されていることを確認できます。 マネージャーが新しいハブを作成することを許可する場合は、リソースに対する共同作成者ロールをマネージャーに割り当てることができます。 または、リソースに対する Azure AI 開発者ロールをマネージャーに割り当てて、新しいハブの作成を許可しないようにすることもできます。
Managers ハブに対する共同作成者または Azure AI 開発者 マネージャーは、ハブの管理、コンピューティング リソースの監査、接続の監査、共有接続の作成を行うことができます。
チーム リーダー/リード開発者 ハブに対する Azure AI 開発者 リード開発者は、チームのプロジェクトを作成し、ハブ レベルで共有リソース (例: コンピューティングや接続) を作成できます。 プロジェクトの作成後、プロジェクト所有者は他のメンバーを招待できます。
チーム メンバー/開発者 プロジェクトに対する共同作成者または Azure AI 開発者 開発者は、プロジェクト内で AI モデルを構築してデプロイし、コンピューティングや接続などの開発を可能にする資産を作成できます。

ハブの外部で作成されたリソースに対するアクセス権

ハブを作成すると、組み込みのロールベースのアクセス制御アクセス許可によって、リソースを使うためのアクセス権が付与されます。 ただし、ユーザーに代わって作成されたもの以外のリソースを使用する場合は、次の両方を確認する必要があります。

  • 使用しようとしているリソースには、アクセス許可が設定されています。
  • ハブはそれに対するアクセスが許可されています。

たとえば、新しい BLOB ストレージを使おうとしている場合は、その BLOB の Blob Storage 閲覧者ロールにハブのマネージド ID が追加されていることを確認する必要があります。 新しい Azure AI 検索ソースを使おうとしている場合は、必要に応じて Azure AI 検索のロールの割り当てにハブを追加します。

ロールでアクセスを管理する

ハブの所有者である場合は、AI Studio 用のロールを追加および削除できます。 AI Studio[ホーム] ページに移動し、ハブを選択します。 次に、[ユーザー] を選び、ハブのユーザーを追加および削除します。 Azure portal のアクセス制御 (IAM) または Azure CLI を通じてアクセス許可を管理することもできます。 たとえば、Azure CLI を使用して、次のコマンドでリソース グループ "this-rg" の joe@contoso.com に Azure AI 開発者ロールを割り当てます。

az role assignment create --role "Azure AI Developer" --assignee "joe@contoso.com" --resource-group this-rg 

カスタム ロールを作成する

Note

新しいハブを作成するには、所有者または共同作成者のロールが必要です。 現時点では、すべてのアクションが許可されている場合でも、カスタム ロールではハブを作成できません。

組み込みロールが十分ではない場合は、カスタム ロールを作成できます。 カスタム ロールには、その AI Studio 内のリソースの読み取り、書き込み、削除、コンピューティングのアクセス許可を与えることができます。 ロールは、特定のプロジェクト レベル、特定のリソース グループ レベル、または特定のサブスクリプション レベルで使用できるようにすることができます。

Note

そのリソース内のカスタム ロールを作成するには、そのレベルでのリソースの所有者でなければなりません。

次の JSON の例では、サブスクリプション レベルでカスタム AI Studio 開発者ロールを定義します。

{
    "properties": {
        "roleName": "AI Studio Developer",
        "description": "Custom role for AI Studio. At subscription level",
        "assignableScopes": [
            "/subscriptions/<your-subscription-id>"
        ],
        "permissions": [
            {
                "actions": [
                    "Microsoft.MachineLearningServices/workspaces/write",
                    "Microsoft.MachineLearningServices/workspaces/endpoints/write",
                    "Microsoft.Storage/storageAccounts/write",
                    "Microsoft.Resources/deployments/validate/action",
                    "Microsoft.KeyVault/vaults/write",
                    "Microsoft.Authorization/roleAssignments/read",
                    "Microsoft.Authorization/roleDefinitions/read",
                    "Microsoft.CognitiveServices/*/read"
                ],
                "notActions": [
                    "Microsoft.MachineLearningServices/workspaces/delete",
                    "Microsoft.MachineLearningServices/workspaces/write",
                    "Microsoft.MachineLearningServices/workspaces/listKeys/action",
                    "Microsoft.MachineLearningServices/workspaces/hubs/write",
                    "Microsoft.MachineLearningServices/workspaces/hubs/delete",
                    "Microsoft.MachineLearningServices/workspaces/featurestores/write",
                    "Microsoft.MachineLearningServices/workspaces/featurestores/delete"
                ],
                "dataActions": [
                    "Microsoft.CognitiveServices/accounts/OpenAI/*/read",
                    "Microsoft.CognitiveServices/accounts/OpenAI/engines/completions/action",
                    "Microsoft.CognitiveServices/accounts/OpenAI/engines/search/action",
                    "Microsoft.CognitiveServices/accounts/OpenAI/engines/generate/action",
                    "Microsoft.CognitiveServices/accounts/OpenAI/deployments/search/action",
                    "Microsoft.CognitiveServices/accounts/OpenAI/deployments/completions/action",
                    "Microsoft.CognitiveServices/accounts/OpenAI/deployments/chat/completions/action",
                    "Microsoft.CognitiveServices/accounts/OpenAI/deployments/extensions/chat/completions/action",
                    "Microsoft.CognitiveServices/accounts/OpenAI/deployments/embeddings/action",
                    "Microsoft.CognitiveServices/accounts/OpenAI/images/generations/action"
                ],
                "notDataActions": []
            }
        ]
    }
}

シナリオ: カスタマー マネージド キーを使用する

カスタマー マネージド キー (CMK) を使うようにハブを構成する場合は、Azure キー コンテナーを使ってキーを格納します。 ワークスペースの作成に使用されるユーザーまたはサービス プリンシパルには、キー コンテナーへの所有者または共同作成者アクセス権が必要です。

AI Studio ハブがユーザー割り当てマネージド ID を使用して構成されている場合、ID に次のロールが付与されている必要があります。 これらのロールにより、マネージド ID は、カスタマー マネージド キーを使用するときに使用される Azure Storage、Azure Cosmos DB、および Azure Search リソースを作成できます。

  • Microsoft.Storage/storageAccounts/write
  • Microsoft.Search/searchServices/write
  • Microsoft.DocumentDB/databaseAccounts/write

キー コンテナー内では、ユーザーまたはサービス プリンシパルに、キー コンテナー アクセス ポリシーを使ってキーに対する作成、取得、削除、消去のアクセス権を付与する必要があります。 詳細については、「Azure Key Vault セキュリティ」を参照してください。

シナリオ: 既存の Azure OpenAI リソース

既存の Azure OpenAI リソースへの接続を作成するときは、ユーザーがリソースにアクセスできるようにロールをユーザーに割り当てる必要もあります。 実行する必要があるタスクに応じて、Cognitive Services OpenAI ユーザーまたは Cognitive Services OpenAI 共同作成者ロールのいずれかを割り当てる必要があります。 これらのロールとそれらが有効にするタスクの情報については、Azure OpenAI ロールに関するページを参照してください。

シナリオ: Azure Container Registry を使用する

Azure Container Registry インスタンスは、Azure AI Studio ハブとのオプションの依存関係があります。 次の表に、認証方法と Azure Container Registry の公衆ネットワーク アクセスの構成に応じた、Azure Container Registry へのハブに対する認証のサポート マトリックスを示します。

認証方法 無効になっている
パブリック ネットワーク アクセス
Azure Container Registry
公衆ネットワーク アクセスが有効
管理者ユーザー
AI Studio ハブのシステム割り当てマネージド ID
ACRPull ロールが ID に割り当てられている
AI Studio ハブのユーザー割り当てマネージド ID

システム割り当てマネージド ID は、ハブの作成時に正しいロールに自動的に割り当てられます。 ユーザー割り当てマネージド ID を使用している場合は、その ID に対して ACRPull ロールを割り当てる必要があります。

シナリオ: ログに Azure Application Insights を使う

Azure Application Insights は、Azure AI Studio ハブの省略可能な依存関係です。 次の表に、ハブの作成時に Application Insights を使う場合に必要なアクセス許可を示します。 ハブを作成するユーザーには、これらのアクセス許可が必要です。 ハブからプロジェクトを作成するユーザーには、これらのアクセス許可は必要ありません。

権限 目的
Microsoft.Insights/Components/Write Application Insights コンポーネントの構成を書き込みます。
Microsoft.OperationalInsights/workspaces/write 新しいワークスペースを作成するか、既存のワークスペースの顧客 ID を指定して既存のワークスペースにリンクします。

シナリオ: プロビジョニング済みスループット ユニットの調達者

次の例では、プロビジョニング済みスループット ユニット (PTU) を調達できるカスタム ロールを定義します。

{
    "properties": {
        "roleName": "PTU procurer",
        "description": "Custom role to purchase PTU",
        "assignableScopes": [
            "/subscriptions/<your-subscription-id>"
        ],
        "permissions": [
            {
                "actions": [
                    "Microsoft.CognitiveServices/accounts/commitmentplans/read",
                    "Microsoft.CognitiveServices/accounts/commitmentplans/write",
                    "Microsoft.CognitiveServices/accounts/commitmentplans/delete",
                    "Microsoft.CognitiveServices/locations/commitmentTiers/read",
                    "Microsoft.CognitiveServices/accounts/commitmentplans/read",
                    "Microsoft.CognitiveServices/accounts/commitmentplans/write",
                    "Microsoft.CognitiveServices/accounts/commitmentplans/delete",
                    "Microsoft.Features/features/read",
                    "Microsoft.Features/providers/features/read",
                    "Microsoft.Features/providers/features/register/action",
                    "Microsoft.Insights/logDefinitions/read",
                    "Microsoft.Insights/metricdefinitions/read",
                    "Microsoft.Insights/metrics/read",
                    "Microsoft.ResourceHealth/availabilityStatuses/read",
                    "Microsoft.Resources/deployments/operations/read",
                    "Microsoft.Resources/subscriptions/operationresults/read",
                    "Microsoft.Resources/subscriptions/read",
                    "Microsoft.Resources/subscriptions/resourcegroups/deployments/*",
                    "Microsoft.Resources/subscriptions/resourceGroups/read"
                ],
                "notActions": [],
                "dataActions": [],
                "notDataActions": []
            }
        ]
    }
}

シナリオ: Azure OpenAI Assistants API

次の例では、Azure OpenAI Assistants を使用して開発者のロールを定義します。

{
    "id": "",
    "properties": {
        "roleName": "CognitiveServices OpenAI Assistants API Developer",
        "description": "Custom role to work with AOAI Assistants API",
        "assignableScopes": [
            "<your-scope>"
        ],
        "permissions": [
            {
                "actions": [
                    "Microsoft.CognitiveServices/*/read",
                    "Microsoft.Authorization/roleAssignments/read",
                    "Microsoft.Authorization/roleDefinitions/read"
                ],
                "notActions": [],
                "dataActions": [
                    "Microsoft.CognitiveServices/accounts/OpenAI/*/read",
                    "Microsoft.CognitiveServices/accounts/OpenAI/engines/completions/action",
                    "Microsoft.CognitiveServices/accounts/OpenAI/engines/search/action",
                    "Microsoft.CognitiveServices/accounts/OpenAI/engines/generate/action",
                    "Microsoft.CognitiveServices/accounts/OpenAI/deployments/search/action",
                    "Microsoft.CognitiveServices/accounts/OpenAI/deployments/completions/action",
                    "Microsoft.CognitiveServices/accounts/OpenAI/deployments/chat/completions/action",
                    "Microsoft.CognitiveServices/accounts/OpenAI/deployments/extensions/chat/completions/action",
                    "Microsoft.CognitiveServices/accounts/OpenAI/deployments/embeddings/action",
                    "Microsoft.CognitiveServices/accounts/OpenAI/images/generations/action",
                    "Microsoft.CognitiveServices/accounts/OpenAI/assistants/write",
                    "Microsoft.CognitiveServices/accounts/OpenAI/assistants/read",
                    "Microsoft.CognitiveServices/accounts/OpenAI/assistants/delete",
                    "Microsoft.CognitiveServices/accounts/OpenAI/assistants/files/write",
                    "Microsoft.CognitiveServices/accounts/OpenAI/assistants/files/read",
                    "Microsoft.CognitiveServices/accounts/OpenAI/assistants/files/delete",
                    "Microsoft.CognitiveServices/accounts/OpenAI/assistants/threads/write",
                    "Microsoft.CognitiveServices/accounts/OpenAI/assistants/threads/read",
                    "Microsoft.CognitiveServices/accounts/OpenAI/assistants/threads/delete",
                    "Microsoft.CognitiveServices/accounts/OpenAI/assistants/threads/messages/write",
                    "Microsoft.CognitiveServices/accounts/OpenAI/assistants/threads/messages/read",
                    "Microsoft.CognitiveServices/accounts/OpenAI/assistants/threads/messages/files/read",
                    "Microsoft.CognitiveServices/accounts/OpenAI/assistants/threads/runs/write",
                    "Microsoft.CognitiveServices/accounts/OpenAI/assistants/threads/runs/read",
                    "Microsoft.CognitiveServices/accounts/OpenAI/assistants/threads/runs/steps/read"
                ],
                "notDataActions": []
            }
        ]
    }
}

次のステップ