Platform for AI (PAI) の AI コンピューティングリソースに対して詳細な権限管理を実装する場合、カスタム権限ポリシーを作成して、Resource Access Management (RAM) ユーザーにリソースの作成、更新、削除、またはスケーリングの権限を付与できます。
背景情報
RAM 権限は、クラウドネイティブなリソースとリソースクォータの管理に使用されます。クラウドネイティブなリソースには、汎用コンピューティングリソースと Lingjun リソースが含まれます。
リソースプール
リソースプールには、ご利用の AI 開発用に専用リソースグループ (ResourceGroup) で購入したコンピューティングリソースが含まれています。
詳細については、「概要」をご参照ください。
リソースクォータ
リソースクォータは、リソースプールからの AI コンピューティングリソースのサブコレクションです。リソースクォータをワークスペースに関連付けた後、ワークスペースメンバーは対応するリソースを使用して AI 開発を実行し、オンラインサービスをデプロイできます。詳細については、「概要」をご参照ください。
次の図に示すように、ツリー構造に従うリソースクォータを作成できます。リソースプールからのリソースを使用して作成されたリソースクォータは、ルートリソースクォータと呼ばれます。各ルートリソースクォータは複数の子リソースクォータに分割できます。各子リソースクォータもさらに分割できます。
操作手順
RAM ユーザーを作成します。詳細については、「RAM ユーザーの作成」をご参照ください。
カスタムポリシーを作成します。カスタムポリシーの作成方法については、「カスタムポリシーの作成」トピックの「JSON タブでのカスタムポリシーの作成」セクションをご参照ください。
異なるカスタムポリシーによって付与される権限の詳細については、このトピックの「例」セクションをご参照ください。
カスタムポリシーを RAM ユーザーにアタッチします。詳細については、「RAM ユーザーへの権限付与」をご参照ください。
例
リソースプールの管理権限
リソースプールを管理する権限を持つ RAM ユーザーは、リソースプール内の専用リソースグループを表示、作成、更新、および削除できます。
ポリシー設定例:
RAM ユーザーにリソースプールを管理する権限を付与するには、Virtual Private Cloud (VPC) 権限をユーザーに付与する必要があります。これは、PAI コンソールの [リソースプール] ページでユーザーが専用リソースグループを作成する際に VPC 構成が必要となるためです。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"pai:*ResourceGroup*"
],
"Resource": [
"*"
]
},
{
"Effect": "Allow",
"Action": [
"vpc:DescribeVpcs",
"vpc:DescribeVSwitches",
"ecs:DescribeSecurityGroups"
],
"Resource": "*"
}
]
}ルートリソースクォータの作成、スケーリング、および削除権限
ルートリソースクォータ (第1レベル) は、関連付けられたリソースグループからコンピューティングリソースをリソースプールで取得します。この目的のために、1つ以上のリソースグループを選択できます。したがって、ルートリソースクォータを作成またはスケーリングするには、RAM ユーザーはリソースプールとリソースクォータの両方に対する権限が必要です。
以下のサンプル権限ポリシーは、3 つのリソースプール (resourcegroup1、resourcegroup2、および resourcegroup3) の Get、List、および Update 権限を定義します。これは、権限を付与された RAM ユーザーは、これら 3 つのリソースプールからリソースを割り当てることによってのみ、ルートリソースクォータを作成できることを意味します。
"acs:pai:*:*:quota/*" は、この権限ポリシーを付与されたユーザーがすべてのリソースクォータツリーで操作できることを示しますが、リソースのソースは、リソースプール内の resourcegroup1、resourcegroup2、および resourcegroup3 専用リソースグループに限定されます。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"pai:GetResourceGroup",
"pai:ListResourceGroups",
"pai:UpdateResourceGroup"
],
"Resource": [
"acs:pai:*:*:resourcegroup/resourcegroup1",
"acs:pai:*:*:resourcegroup/resourcegroup2",
"acs:pai:*:*:resourcegroup/resourcegroup3"
]
},
{
"Effect": "Allow",
"Action": [
"pai:CreateQuota",
"pai:UpdateQuota",
"pai:ScaleQuota",
"pai:DeleteQuota",
"pai:GetQuota",
"pai:ListQuotas"
],
"Resource": [
"acs:pai:*:*:quota/*"
]
}
]
}ルートリソースクォータの管理権限
ルートリソースクォータを管理する権限は、リソースプールを管理する権限を必要としません。たとえば、quota1 を管理する権限を持つ RAM ユーザーは、次の操作を実行できます。
quota1 を表示します。
quota1 のメタデータ (クォータのタグや説明など) を更新します。
quota1 の子リソースクォータ (クォータの作成、更新、スケーリング、削除など) を管理します。
quota1 の権限ポリシーは2つのステートメントを定義します。最初のステートメントは、quota1 をルートとするリソースクォータツリーに対する操作の権限を定義します。2番目のステートメントは、quota1 自体に対する操作の権限を定義します。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"pai:CreateQuota",
"pai:UpdateQuota",
"pai:ScaleQuota",
"pai:DeleteQuota",
"pai:GetQuota",
"pai:ListQuotas"
],
"Resource": [
"acs:pai:*:*:quota/quota1/*"
]
},
{
"Effect": "Allow",
"Action": [
"pai:UpdateQuota",
"pai:GetQuota",
"pai:ListQuotas"
],
"Resource": [
"acs:pai:*:*:quota/quota1"
]
}
]
}子リソースクォータの管理権限
たとえば、quota1.2 を管理する権限を持つ RAM ユーザーは、次の操作を実行できます。
quota1.2 を表示します。
quota1.2 のメタデータ (クォータのタグや説明など) を更新します。
quota1.2 の子リソースクォータ (クォータの作成、更新、スケーリング、削除など) を管理します。
quota1.2 を管理するための権限ポリシーは2つのステートメントを定義します。最初のステートメントは、quota1.2 をルートとするリソースクォータツリーに対する操作の権限を定義し、2番目のステートメントは、quota1.2 自体に対する操作の権限を定義します。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"pai:CreateQuota",
"pai:UpdateQuota",
"pai:ScaleQuota",
"pai:DeleteQuota",
"pai:GetQuota",
"pai:ListQuotas"
],
"Resource": [
"acs:pai:*:*:quota/*/quota1.2/*"
]
},
{
"Effect": "Allow",
"Action": [
"pai:UpdateQuota",
"pai:GetQuota",
"pai:ListQuotas"
],
"Resource": [
"acs:pai:*:*:quota/*/quota1.2"
]
}
]
}VPC 権限
中国 (ウランチャブ) リージョンで Lingjun リソースを購入する場合、PAI コンソールでルートおよび子リソースクォータを作成する際に VPC を構成できます。この場合、クォータ関連ポリシーに VPC 権限も追加する必要があります。ポリシー設定例:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"vpc:DescribeVpcs",
"vpc:DescribeVSwitches",
"ecs:DescribeSecurityGroups"
],
"Resource": "*"
}
]
}