カスタムポリシーを作成して、きめ細かな権限管理を実装できます。
作成方法
-
Resource Access Management (RAM) は、WYSIWYG (見たままが得られる) のビジュアルエディターを提供します。エフェクト、サービス、アクション、リソース、条件を選択することで、カスタムポリシーを生成できます。組み込みのインテリジェントな検証機能により、ポリシーが有効かつ効果的であることが保証されます。この方法は直感的で分かりやすいです。
-
RAM は、JSON スクリプトエディターを提供します。ポリシーの構文と構造に従ってカスタムポリシーを記述する必要があります。この方法は柔軟性が高く、ポリシー構文に精通している場合に適しています。
-
-
ポリシーテンプレートのインポート:RAM は、システム管理者、財務スタッフ、ネットワーク管理者などの一般的なシナリオ向けのポリシーテンプレートを提供します。適切なポリシーテンプレートをインポートし、わずかな変更を加えるだけで、カスタムポリシーを迅速に作成できます。
-
システムポリシーのインポート:システムポリシーをインポートし、ビジネスニーズに合わせて変更できます。これにより、標準化されたテンプレートからカスタムポリシーを便利かつ迅速に作成できます。
-
ビジュアルエディターの使用
-
RAM 管理者として RAM コンソールにログインします。
-
左側のナビゲーションペインで、 を選択します。
-
ポリシー ページで、ポリシーの作成 をクリックします。
-
ポリシーの作成 ページで、視覚化 タブをクリックします。
ビジュアルエディターには、[エフェクト] (必須、[許可] または [拒否] に設定可能、デフォルト:[許可])、[サービス] (必須)、[アクション] (必須)、[リソース] (必須)、[条件] (任意) のフィールドを含むステートメントフォームが表示されます。[アクション]、[リソース]、[条件] を設定する前に、サービスを選択する必要があります。ページ下部で [ステートメントの追加] をクリックして、さらにステートメントを追加できます。
-
ポリシーを設定します。
ポリシーの基本要素の詳細については、「権限ポリシーの要素」をご参照ください。
-
効果 セクションで、許可 または 却下 を選択します。
-
サービス セクションで、サービスを選択します。
説明コンソールには、ビジュアルエディターをサポートするサービスが表示されます。
-
操作 セクションで、全部操作 または 指定操作 を選択します。
前の手順で選択したサービスに基づいて、利用可能なアクションが自動的に一覧表示されます。指定操作 を選択した場合は、特定のアクションを選択する必要があります。
-
リソース セクションで、すべてのリソース または 指定资源 を選択します。
選択したアクションに基づいて、利用可能なリソースタイプが自動的に一覧表示されます。指定资源 を選択した場合は、リソースを追加 をクリックして ARN を指定する必要があります。すべて選択 機能を使用して、設定項目のすべてのリソースをすばやく選択できます。
説明UI 上では、関連するアクションの ARN が 必須 としてマークされます。ポリシーが正しく機能するように、これらの ARN を指定してください。
-
条件 セクションで、条件を追加 をクリックして条件を設定します。
条件には、Alibaba Cloud の共通条件とサービス固有の条件が含まれます。設定したサービスとアクションに基づいて、利用可能な条件が自動的に一覧表示されます。条件キーを選択し、その値を設定するだけです。
-
ステートメントを追加 をクリックし、上記の手順を繰り返して複数のステートメントを設定します。
-
-
ページの上部で 最適化 をクリックし、次に 行う をクリックして、ポリシーの高度な最適化を実行します。
高度なポリシー最適化機能は、次のタスクを実行します。
-
互換性のないアクションのリソースまたは条件を分割します。
-
リソースの範囲を絞り込みます。
-
重複するステートメントを削除するか、ステートメントをマージします。
-
-
ポリシーの作成 ページで、OK をクリックします。
-
ポリシーの作成 ダイアログボックスで、ポリシー名 と 説明 を入力し、OK をクリックします。
スクリプトエディターの使用
-
RAM 管理者として RAM コンソールにログインします。
-
左側のナビゲーションペインで、 を選択します。
-
ポリシー ページで、ポリシーの作成 をクリックします。
-
ポリシーの作成 ページで、JSON タブをクリックします。
ページに JSON エディターが表示されます。デフォルトのポリシーテンプレートには、
Version要素 ("1"に設定) とStatement配列が含まれています。各ステートメントにはEffect(デフォルトは"Allow")、Action、Resource、Condition要素が含まれています。ActionとResource要素を入力する必要があります。 -
ポリシーの内容を入力します。
ポリシーの構文と構造の詳細については、「ポリシーの構造と構文」をご参照ください。
-
ページの上部で 最適化 をクリックし、次に 行う をクリックして、ポリシーの高度な最適化を実行します。
高度なポリシー最適化機能は、次のタスクを実行します。
-
互換性のないアクションのリソースまたは条件を分割します。
-
リソースの範囲を絞り込みます。
-
重複するステートメントを削除するか、ステートメントをマージします。
-
-
ポリシーの作成 ページで、OK をクリックします。
-
ポリシーの作成 ダイアログボックスで、ポリシー名 と 説明 を入力し、OK をクリックします。
一般的なカスタムポリシーの例
以下の例では、JSON モードでカスタムポリシーを設定するための一般的なシナリオと対応するポリシー JSON を示します。これらは、ポリシーを迅速に記述するのに役立ちます。
シナリオ 1:RAM ユーザー管理権限の付与 (アカウントレベル)
RAM ユーザー管理 API (ram:CreateUser、ram:CreateAccessKey、ram:ListUsers など) はアカウントレベルの操作です。Resource 要素は "*" に設定する必要があり、権限を付与する際には、認可範囲を [Alibaba Cloud アカウント全体] に設定する必要があります。これらの操作はリソースグループに制限できません。
ポリシー例:RAM ユーザーと AccessKey の作成を許可します。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ram:CreateUser",
"ram:CreateAccessKey",
"ram:ListUsers"
],
"Resource": ["*"]
}
]
}
このポリシーの認可範囲を特定のリソースグループに設定した場合、ポリシーは有効になりません。RAM ユーザー管理操作は、[Alibaba Cloud アカウント全体] の認可範囲のみをサポートします。
シナリオ 2:RAM ユーザーに自身のパスワードのみの変更を許可
RAM ユーザーに自身のログインパスワードのみの変更を許可するには、ram:ChangePassword 権限を付与します。過剰な権限付与はセキュリティリスクをもたらすため、AliyunRAMFullAccess (RAM のフルアクセス権限) は付与しないでください。
ポリシー例:自身のパスワードのみの変更を許可します。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ram:ChangePassword"
],
"Resource": ["*"]
}
]
}
シナリオ 3:特定のリソースへの読み取り専用アクセスの付与 (ECS インスタンスを例として)
RAM ユーザーに特定の Elastic Compute Service (ECS) インスタンスのみの表示を許可するには、Resource 要素にインスタンスの ARN を指定します。ARN の形式は acs:ecs:{region}:{account-id}:instance/{instance-id} です。instance の後にはフォワードスラッシュ / を付ける必要があることにご注意ください。
ポリシー例:指定された ECS インスタンスのみの表示を許可します。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ecs:DescribeInstances",
"ecs:DescribeInstanceAttribute",
"ecs:DescribeInstanceStatus"
],
"Resource": [
"acs:ecs:*:*:instance/i-bp1xxxxxxxxxxxxxxxxx"
]
}
]
}
i-bp1xxxxxxxxxxxxxxxxx を実際の ECS インスタンス ID に置き換えてください。複数のインスタンスへのアクセスを許可するには、Resource 配列に複数の ARN をカンマで区切って追加します。
シナリオ 4:Simple Log Service (SLS) のきめ細かな認可
SLS のクエリ操作には、プロジェクトレベルと Logstore レベルの ARN が必要です。SDK 呼び出しで依然として権限拒否エラーが返される場合は、log:GetProject と log:GetLogStore 権限を追加してください。
ポリシー例:特定の Logstore のログデータのクエリを許可します。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"log:GetLogStoreLogs",
"log:CreateStoreView",
"log:GetProject",
"log:GetLogStore"
],
"Resource": [
"acs:log:*:*:project/exampleproject",
"acs:log:*:*:project/exampleproject/logstore/examplelogstore"
]
}
]
}
exampleproject と examplelogstore を実際のプロジェクト名と Logstore 名に置き換えてください。
シナリオ 5:ビジュアルエディターでサポートされていない特定のアクションの設定
一部の製品のアクションは 視覚化 モードで選択できず、JSON モードで手動で設定する必要があります。このタイプの一般的なアクションは次のとおりです。
|
製品 |
アクション |
説明 |
|
Server Guard (Security Center) |
|
CDN IP リストのクエリ |
|
Milvus |
|
Milvus コンソールへのログインに必要な権限 |
シナリオ 6:ECS デプロイの最小権限
ECS インスタンスの作成には、複数のサービスにわたるアクションの組み合わせが含まれます。最小権限ポリシーには、インスタンス操作権限と、ネットワークとセキュリティグループのクエリ権限の両方を含める必要があります。
ポリシー例:ECS インスタンスの作成とデプロイに必要な最小権限。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ecs:RunInstances",
"ecs:DescribeInstances",
"vpc:DescribeVpcs",
"vpc:DescribeVSwitches",
"ecs:DescribeSecurityGroups"
],
"Resource": ["*"]
}
]
}
アクションの説明:ecs:RunInstances (インスタンスの作成と起動)、ecs:DescribeInstances (インスタンス情報のクエリ)、vpc:DescribeVpcs と vpc:DescribeVSwitches (インスタンス作成時の VPC と vSwitch の選択を許可)、ecs:DescribeSecurityGroups (セキュリティグループの選択)。
シナリオ 7:VPC ネットワーク設定の最小権限
仮想プライベートクラウド (VPC) と vSwitch を作成するために必要な最小権限ポリシーは次のとおりです。
ポリシー例:VPC と vSwitch の作成に必要な最小権限。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"vpc:CreateVpc",
"vpc:CreateVSwitch",
"vpc:CreateSecurityGroup",
"vpc:DescribeVpcs",
"vpc:DescribeVSwitches"
],
"Resource": ["*"]
}
]
}
アクションの説明:vpc:CreateVpc (VPC の作成)、vpc:CreateVSwitch (vSwitch の作成)、vpc:CreateSecurityGroup (セキュリティグループの作成)、vpc:DescribeVpcs と vpc:DescribeVSwitches (既存のネットワークリソースのクエリ)。
権限拒否エラーのトラブルシューティング
RAM ユーザーが API を呼び出して AccessForbidden エラーを受け取った場合、またはコンソールに権限拒否メッセージが表示された場合は、次のように問題をトラブルシューティングしてください。
-
API トラブルシューティングツールを使用して不足している権限を特定する
エラーと共に返された RequestID を Alibaba Cloud API トラブルシューティングツールに入力します。ツールに不足している特定の AuthAction が表示されるため、プロンプトに従って必要な権限を追加できます。
-
認可範囲が一致していることを確認する
アカウントレベルの操作 (
ram:CreateUserなど) の場合、認可範囲は [Alibaba Cloud アカウント全体] である必要があります。リソースグループを認識する API の場合、ポリシーが正しいリソースグループまたは [Alibaba Cloud アカウント全体] に付与されていることを確認してください。認可範囲がポリシーのResource定義と一致しない場合、権限は有効になりません。 -
暗黙的な依存関係の権限を確認する
一部の操作では、主要なアクションに加えて、Describe、List、Connect などの関連する基本権限が正しく機能するために必要です。例:
-
SLS:ログをクエリするための
log:GetLogStoreLogsに加えて、log:GetProjectとlog:GetLogStore権限も必要です。 -
Milvus:コンソールにログインするための主要な操作権限に加えて、
CreateConnectionやDbmConnectなどの接続権限も必要です。
対応する Alibaba Cloud サービスの RAM 認可ドキュメントを参照して、必要な権限を追加することを推奨します。
-
ポリシーサイズの最適化
カスタムポリシーの JSON コンテンツは 6,144 バイトを超えることはできません。この上限を超えると、CreatePolicy API は InvalidParameter.PolicyDocument.Length エラー (メッセージ:"The policy document size is limited to 6144 bytes") を返します。次の方法を使用して、ポリシーの長さを短縮できます。
機能によるポリシーの分割
複数の機能をカバーする大規模なポリシーを個別のポリシーに分割し、それぞれを異なる RAM ユーザーまたはユーザーグループにアタッチします。たとえば、読み取り操作と書き込み操作を 2 つのポリシーに分割します。
-
読み取り専用ポリシー:
{"Action": ["oss:Get*", "oss:List*"]} -
書き込みポリシー:
{"Action": ["oss:Put*", "oss:Delete*"]}
リソースによるポリシーの分割
リソースごとにポリシーを分割します。たとえば、異なる OSS バケットの権限を異なるポリシーに分割し、各ポリシーが特定のバケットのみの権限を付与するようにします。これにより、単一のポリシーが管理するリソースが多すぎるのを防ぎます。
注意事項
-
ビジュアルエディターでポリシーを設定する際は、すべてのアクションを選択しないでください。まず、最小権限のアクションセットを選択します。
-
ポリシーを分割した後、各ポリシーを RAM ユーザーまたはユーザーグループに個別に付与する必要があるため、管理が複雑になります。
-
ワイルドカードは、過剰な権限付与を引き起こす可能性があります。使用する前に、権限の範囲を慎重に確認してください。
-
ポリシーは付与されるとすぐに有効になります。待機する必要はありません。
ポリシーのインポート
-
RAM 管理者として RAM コンソールにログインします。
-
左側のナビゲーションペインで、 を選択します。
-
ポリシー ページで、ポリシーの作成 をクリックします。
-
ポリシーの作成 ページで、引用ポリシー をクリックします。
-
引用ポリシー ダイアログボックスで、右上のドロップダウンリストからポリシーテンプレートまたは システムポリシー を選択し、ポリシーをインポートします。
-
ポリシーテンプレートまたはシステムポリシーを選択します。
-
一部のポリシーテンプレートでは、ビジネス要件に基づいてパラメーターを設定する必要があります。
-
インポートされたポリシーの上書きルールを選択します。
デフォルトでは、新しくインポートされたポリシーの内容が既存の内容を完全に上書きします。上書きする代わりに、新しいステートメントを最後に追加する。 を選択して、新しくインポートされたポリシーの内容を既存の内容の末尾に追加することもできます。
-
インポート をクリックします。
-
-
ビジュアルエディターまたはスクリプトエディターで、インポートされたポリシーの内容を表示および変更します。
-
ページの上部で 最適化 をクリックし、次に 行う をクリックして、ポリシーの高度な最適化を実行します。
高度なポリシー最適化機能は、次のタスクを実行します。
-
互換性のないアクションのリソースまたは条件を分割します。
-
リソースの範囲を絞り込みます。
-
重複するステートメントを削除するか、ステートメントをマージします。
-
-
ポリシーの作成 ページで、OK をクリックします。
-
ポリシーの作成 ダイアログボックスで、ポリシー名 と 説明 を入力し、OK をクリックします。
よくある質問
ビジュアルエディターで特定の権限が見つからない、またはポリシーの保存に失敗するのはなぜですか?
この問題は、次の理由で発生する可能性があります。
-
一部のアクションがビジュアルリストで更新されていない:一部の新しくリリースされた API や低レベルの API は、視覚化 モードのアクションリストにまだ同期されていないか、ワイルドカード (例:
swas-open:*) が特定のリソース制限下で解析で競合が発生している可能性があります。JSON モードに切り替えて、アクションを手動で入力することを推奨します。 -
アクション名のスペルが間違っている:一部の API アクション名には単数形と複数形の違いがあります (たとえば、ディスクを再初期化するための ECS 操作は
ecs:ReInitDisksであり、ecs:ReInitDiskではありません)。対応する Alibaba Cloud サービスの API ドキュメントで正確なアクション名を確認してください。 -
システムポリシーが同期されていない:特定のシステムポリシー (例:
AliyunAccountCenterFullAccess) が見つからない場合は、そのシステムポリシーの公式 JSON コンテンツを表示し、JSON モードで同じ効果を持つカスタムポリシーを作成できます。 -
JSON 形式の検証に失敗した:JSON 構文が正しいかどうかを確認してください。特に次の一般的な間違いに注意してください。
-
Resourceは複数回定義できません。複数のリソースを指定するには、それらを単一の配列にカンマで区切ってリストします。 -
ARN の形式は、
acs:<service>:<region>:<account-id>:<resource-type>/<resource-id>のパターンに準拠する必要があります。
-
FullAccess またはカスタムポリシーを付与した後、コンソールにアクセスしたり操作を実行したりできないのはなぜですか?
この問題は、次の理由で発生する可能性があります。
-
コンソールアクセスには追加の基本権限が必要:一部の製品コンソール (ICP 申請付加価値サービスなど) は、ビジネス権限に加えて、
PowerUserAccessなどの基本的なコンソールアクセス権限も必要です。ビジネス固有の FullAccess ポリシーだけでは、コンソールページをロードするのに十分でない場合があります。製品ドキュメントを参照して、コンソールアクセスに必要な権限の完全な組み合わせを確認してください。 -
認可範囲がポリシーの Resource と一致しない:権限を付与する際に選択する認可範囲 ([Alibaba Cloud アカウント全体] または特定のリソースグループ) は、ポリシーの
Resource定義と一致している必要があります。たとえば、OceanBase などのインスタンスレベルの操作では、認可範囲を [Alibaba Cloud アカウント全体] にし、ポリシーで特定のインスタンス ARN を定義する必要があります。 -
ポリシーの競合または Deny の上書き:
DenyステートメントがAllowを上書きしているか、またはカスタムポリシーとシステムポリシーの間に競合が存在するかどうかを確認してください。RAM のポリシー評価ロジックは、明示的な Deny > Allow > デフォルトの Deny です。複雑なシナリオ (MQTT パブリックネットワークアクセスなど) でカスタムポリシーが有効にならない場合は、まず公式に推奨されているシステムポリシー (例:AliyunMQFullAccess) を使用して接続性を検証し、その後段階的に権限を絞り込むことを推奨します。