Resource Access Management (RAM) では、権限ポリシーを使用して特定の権限を定義します。権限ポリシーは、Effect、Action/NotAction、リソース、条件、プリンシパルなどの基本要素で構成されます。
要素 | 説明 |
Effect | ポリシーステートメントがアクセスを許可するか拒否するかを指定します。有効な値は次のとおりです。
|
Action/NotAction | 特定のリソースに対して実行される操作です。ポリシーステートメントでは、Action または NotAction のいずれかを指定する必要があります。
|
リソース | ポリシーが適用される特定のオブジェクトです。 |
条件 | 認可が有効になる条件です。 |
プリンシパル | リソースへのアクセスを許可または拒否されるエンティティです。この要素は、RAM ロールの信頼ポリシーなど、リソースベースのポリシーにのみ適用されます。 |
Effect
Effect 要素は、ポリシーがアクセスを許可するか拒否するかを指定します。この要素は必須です。
Effect 要素の有効な値は Allow と Deny です。
権限ポリシーに Allow と Deny の両方が含まれている場合、Deny が優先されます。
例:
"Effect": "Allow"Action/NotAction
ポリシーステートメントには、Action 要素または NotAction 要素のいずれかを含める必要があります。Action は、許可または拒否される操作を指定します。NotAction は、ポリシーから除外される操作を指定します。
Action/NotAction 要素の有効な値は、クラウドサービスで定義されている API 名です。
Action/NotAction 要素の形式は <ram-code>:<action-name> です。
ram-code:クラウドサービスの RAM コードです。詳細については、「RAM をサポートする Alibaba Cloud サービス」の [RAM Code] 列をご参照ください。action-name:関連する API の名前です。
Action/NotAction 要素の値では、通常、大文字と小文字は区別されません。ただし、一貫した動作を保証するために、クラウドサービスの認可ドキュメントで指定されているとおりに、正確な <ram-code> プレフィックスと <action-name> を使用してください。
例:
Action の例
"Action": [ "oss:ListBuckets", "ecs:Describe*", "rds:Describe*" ]順序の独立性
Action 配列内の要素の順序は、認可結果に影響しません。各アクションは、配列内の位置に関係なく、個別に評価されます。したがって、次の 2 つの表記は同等です。
"Action": [ "ecs:DescribeSecurityGroups", "ecs:DescribeInstances" ]"Action": [ "ecs:DescribeInstances", "ecs:DescribeSecurityGroups" ]NotAction の例
次の例では、RAM 内の操作を除くすべての操作を許可します。このポリシーでは、許可されるすべての操作をリストする代わりに、除外される操作 (ram:*) のみをリストするため、ポリシーステートメントが短くなります。ただし、これにより広範な権限が付与されます。注意して使用し、ポリシーが期待どおりに動作することを確認してください。
{ "Effect": "Allow", "NotAction": "ram:*", "Resource": "*" }
リソース
Resource 要素は、ポリシーが適用される 1 つ以上のオブジェクトを記述します。この要素はアイデンティティベースのポリシーで使用され、必須です。
Resource 要素の値は、クラウドサービスで定義されているリソースの Aliyun Resource Name (ARN) です。
Resource 要素の形式は acs:<ram-code>:<region>:<account-id>:<relative-id> です。クラウドサービスの認可ドキュメントで指定されているとおりに、正確な ARN を使用してください。
形式は次のとおりです。
acs:Alibaba Cloud サービスの略語です。リクエストの対象が Alibaba Cloud パブリッククラウドプラットフォームであることを示します。ram-code:クラウドサービスの RAM コードです。詳細については、「RAM をサポートする Alibaba Cloud サービス」の [RAM Code] 列をご参照ください。region:リージョン情報です。リージョンを指定せずにアクセスできるグローバルリソースの場合は、アスタリスク (*) を使用します。 詳細については、「リージョンとアベイラビリティゾーン」をご参照ください。account-id:Alibaba Cloud アカウントの ID です。例:123456789012****。relative-id:リソースを記述する ARN の一部で、セマンティクスは、特定のクラウドサービスで定義されます。この部分は、ファイルパスと同様のツリー構造をサポートします。たとえば、OSS オブジェクトを指定する場合、形式はrelative-id = "mybucket/dir1/object1.jpg"です。
例:
"Resource": [
"acs:ecs:*:*:instance/inst-001",
"acs:ecs:*:*:instance/inst-002",
"acs:oss:*:*:mybucket",
"acs:oss:*:*:mybucket/*"
]条件
Condition 要素は、ポリシーが有効になるために満たす必要がある条件を指定します。この要素はオプションです。
Condition 要素は、条件ブロックとも呼ばれ、1 つ以上の条件句で構成されます。各句には、条件演算子、条件キー、および 1 つ以上の条件値が含まれます。

Condition 要素はオプションであるため、システムはその存在を検証しません。Condition 要素を使用して条件を指定する場合は、正しいスペルと大文字/小文字を使用していることを確認してください。
条件キーの 名前 (キー) は大文字と小文字が区別されます。条件値 (値) で大文字と小文字が区別されるかどうかは、使用する条件演算子によって異なります。たとえば、文字列型の条件キーの場合、StringEquals 演算子を使用すると、ポリシー内の値とリクエスト内の値が照合され、大文字と小文字が区別されます。StringEqualsIgnoreCase 演算子を使用すると、ポリシー内の値とリクエスト内の値が照合されますが、大文字と小文字は区別されません。
Condition 要素には次の特徴があります。
評価ロジック
リクエスト内のキーの値がポリシー内のいずれかの値と一致する場合、条件が満たされます (論理和 OR)。
条件句に複数の条件キーが含まれている場合、句が満たされるためにはすべてのキーが一致する必要があります (論理積 AND)。
条件ブロック全体は、そのすべての句が満たされた場合にのみ満たされます (論理積 AND)。
条件演算子のタイプ
条件演算子のタイプには、文字列、数値、日時、ブール値、IP アドレスなどがあります。条件演算子の意味と例については、「条件演算子」をご参照ください。
条件キー
Alibaba Cloud のグローバル条件キーは、
acs:<condition-key>の形式を使用します。グローバル条件キー
タイプ
説明
acs:CurrentTime日時
Web サーバーがリクエストを受信した時刻。
説明ISO 8601 標準形式の UTC 時刻を使用してください。
たとえば、北京時間 (UTC+8) の 2023 年 1 月 10 日 20:00:00 は、
2023-01-10T20:00:00+08:00または2023-01-10T12:00:00Zと表されます。acs:SecureTransportブール値
リクエストが HTTPS などのセキュアなチャネルを介して送信されたかどうかを示します。
acs:SourceIpIP アドレス
リクエスト元のクライアント IP アドレス。
説明acs:SourceIpの値は、特定の IP アドレスまたは CIDR ブロックにすることができます。特定の IP アドレスを CIDR 形式で記述しないでください。たとえば、10.0.0.1 を 10.0.0.1/32 と記述しないでください。acs:MFAPresentブール値
ユーザーが多要素認証 (MFA) でログオンしたかどうかを示します。
説明RAM ユーザーのセキュリティ設定で ログイン時に MFA を必須にする が 通常とは異なるログインに対してのみ必要 に設定されている場合、
acs:MFAPresent条件は無効になります。詳細については、「RAM ユーザーのセキュリティ設定の管理」をご参照ください。acs:PrincipalARN文字列
リクエストプリンシパルのアイデンティティです。これは、Resource Directory のコントロールポリシーおよび RAM ロールの信頼ポリシーでのみ使用できます。例:
acs:ram:*:*:role/*resourcedirectory*。説明現在、RAM ロールの ARN のみがサポートされており、小文字である必要があります。RAM ロールの ARN は、RAM コンソールの詳細ページで確認できます。
acs:PrincipalRDId文字列
リクエストプリンシパルのクラウドアカウントが属する Resource Directory の ID です (例:
rd-AA****)。Resource Directory ID を表示するには、「リソースディレクトリの基本情報の表示」をご参照ください。これは、RAM ロールの信頼ポリシーと OSS バケットポリシーでのみ使用できます。
acs:PrincipalRDPath文字列
Resource Directory 内のリクエストプリンシパルのクラウドアカウントのパスです。形式は通常
<RD-Id>/<Root-folder-Id>/<Sub-folder-Id>/<Member-account-Id>です (例:rd-AA****/r-aQ****/fd-caiJfl****/199386846043****)。メンバーアカウントの完全な RDPath を表示する方法については、「メンバー情報の表示」をご参照ください。指定された RDPath の下のすべてのメンバーアカウントを照合するには、
StringLike条件演算子とともにワイルドカード文字*を使用できます。例:"Condition": {"StringLike": {"acs:PrincipalRDPath": ["<RD-Id>/<Root-folder-Id>/<Sub-folder-Id>*"]}}。これは、RAM ロールの信頼ポリシーと OSS バケットポリシーでのみ使用できます。
acs:RequestTag/<tag-key>文字列
リクエストに含まれるタグです。<tag-key> を実際のタグキーに置き換えてください。サポートされているクラウドサービスとリソースタイプについては、「タグをサポートする Alibaba Cloud サービス」の [リソースタイプによる認証] 情報をご参照ください。
acs:ResourceTag/<tag-key>文字列
リクエスト対象のリソースにアタッチされているタグです。<tag-key> を実際のタグキーに置き換えてください。サポートされているクラウドサービスとリソースタイプについては、「タグをサポートする Alibaba Cloud サービス」の [リソースタイプによる認証] 情報をご参照ください。
サービス固有の条件キーは、
<ram-code>:<condition-key>の形式を使用します。たとえば、OSS の条件キー
oss:Delimiterは、ListObjects リクエストでオブジェクト名を文字でグループ化するために使用されます。各クラウドサービスに固有の条件キーについては、そのサービスの認可ドキュメントをご参照ください。
条件の例
単一の Condition ブロック内の条件句 (IpAddress や Bool など) は、論理積 AND で評価されます。論理和 OR を作成するには、各条件を別々のポリシーステートメントに配置します。
例 1:ユーザーが MFA を有効にしており、 かつ IP アドレス 203.0.113.2 からリクエストを行っている場合にのみ、RAM ユーザーが ECS インスタンスにアクセスすることを許可します。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "ecs:*", "Resource": "*", "Condition": { "IpAddress": { "acs:SourceIp": [ "203.0.113.2" ] }, "Bool": { "acs:MFAPresent": [ "true" ] } } } ] }例 2:ユーザーが MFA を有効にしているか、 または IP アドレス 203.0.113.2 からリクエストを行っている場合に、RAM ユーザーが ECS インスタンスにアクセスすることを許可します。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "ecs:*", "Resource": "*", "Condition": { "IpAddress": { "acs:SourceIp": [ "203.0.113.2" ] } } }, { "Effect": "Allow", "Action": "ecs:*", "Resource": "*", "Condition": { "Bool": { "acs:MFAPresent": [ "true" ] } } } ] }
プリンシパル
Principal 要素は、リソースベースのポリシーで必須であり、リソースへのアクセスを許可または拒否されるエンティティを指定します。
アイデンティティベースのポリシーでは Principal 要素を使用できません。アイデンティティベースのポリシーは、RAM アイデンティティ (RAM ユーザー、ユーザーグループ、または RAM ロール) にアタッチされた権限ポリシーです。ポリシーがアタッチされているアイデンティティが、暗黙的なプリンシパルになります。
Principal 要素では、複数のプリンシパルタイプを追加し、タイプごとに複数のプリンシパルを指定できます。複数のプリンシパルタイプはコンマ (,) で区切ります。プリンシパルタイプに複数の値が含まれる場合は、角括弧 ([ ]) で囲み、コンマ (,) で区切ります。複数のプリンシパルは 論理和 (OR) の関係にあり、指定されたすべてのプリンシパルに権限が付与されることを意味します。
以下は Principal 要素の例です。
"Principal": {
"RAM": [
"acs:ram::123456789012****:root",
"acs:ram::987654321098****:root"
],
"Service": "ecs.aliyuncs.com"
}プリンシパルは認証されたエンティティです。次のいずれかのタイプになります。
Alibaba Cloud アカウント
Alibaba Cloud アカウントをプリンシパルとして指定できます。これにより、そのアカウントのすべての RAM ユーザーと RAM ロールに権限が付与されます。Alibaba Cloud アカウントを指定する場合は、その ARN (
acs:ram::<account-id>:root) を使用する必要があります。以下に例を示します。"Principal": { "RAM": "acs:ram::123456789012****:root" }説明アカウント ARN (...:root) をプリンシパルとして指定すると、特定のユーザーアイデンティティではなく、アカウント全体が信頼されます。その後、そのアカウント内で権限を委任できます。
RAM ユーザー
RAM ユーザーをプリンシパルとして指定できます。RAM ユーザーの ARN (
acs:ram::<account-id>:user/<user-name>) を指定する必要があります。ここで、<user-name>は RAM ユーザーの名前である必要があります。以下に例を示します。"Principal": { "RAM": [ "acs:ram::123456789012****:user/<user1-name>", "acs:ram::123456789012****:user/<user2-name>" ] }Principal 要素で RAM ユーザーを指定する場合、部分一致にワイルドカード文字 (*) を使用することはできません。RAM ユーザーのフルネームを指定する必要があります。
重要RAM ロールの信頼ポリシーで、
Principal要素に RAM ユーザーの ARN が含まれている場合、信頼ポリシーを保存すると、システムはこの ARN を ID (例: 29695932303672****) に変換します。通常、この ID は表示されません。指定された RAM ユーザーが削除された場合にのみ、信頼ポリシーに表示されます。この場合、ID を削除するか、有効な RAM ユーザーの ARN に置き換えることができます。このメカニズムは、セキュリティリスクを軽減するのに役立ちます。さらに、信頼ポリシーを作成または更新するときに、システムが自動的に標準 ARN に変換するため、<user-name>の大文字と小文字の区別を気にする必要はありません。RAM ロール
RAM ロールをプリンシパルとして指定できます。RAM ロールの ARN (
acs:ram::<account-id>:role/<role-name>) を指定する必要があります。ここで、<role-name>は RAM ロールの名前である必要があります。以下に例を示します。"Principal": { "RAM": [ "acs:ram::123456789012****:role/<role-name>" ] }Principal 要素で RAM ロールを指定する場合、部分一致にワイルドカード文字 (*) を使用することはできません。RAM ロールのフルネームを指定する必要があります。
重要RAM ロールの信頼ポリシーで、
Principal要素に RAM ロールの ARN が含まれている場合、信頼ポリシーを保存すると、システムはこの ARN を ID (例: 38915594982675****) に変換します。通常、この ID を意識することはありません。指定された RAM ロールが削除された場合にのみ、信頼ポリシーに表示されます。この場合、ID を削除するか、有効な RAM ロールの ARN に置き換えることができます。このメカニズムは、セキュリティリスクを軽減するのに役立ちます。さらに、信頼ポリシーを作成または更新するときに、システムが自動的に標準 ARN に変換するため、<role-name>の大文字と小文字の区別を気にする必要はありません。Alibaba Cloud サービス
Alibaba Cloud サービスをプリンシパルとして指定できます。サービスプリンシパルはサービスの識別子であり、通常は
<service-name>.aliyuncs.comという形式を使用します。<service-name>の値には、クラウドサービスから提供される完全なサービス名を使用します。以下に例を示します。"Principal": { "Service": [ "ecs.aliyuncs.com" ] }ID プロバイダー
ID プロバイダーをプリンシパルとして指定できます。ポリシーの
Principal要素では、Federatedキーを使用して ID プロバイダーの ARN を指定する必要があります。Alibaba Cloud は、SAML 2.0 と OIDC に基づくシングルサインオン (SSO) をサポートしています。SAML プロトコルを使用する SSO には SAML ID プロバイダーが必要で、その ARN はacs:ram::<account-id>:saml-provider/<provider-name>という形式です。OIDC プロトコルを使用する SSO には OIDC ID プロバイダーが必要で、その ARN はacs:ram::<account-id>:oidc-provider/<provider-name>という形式です。Principal要素の ARN 値では、大文字と小文字が区別されます。システムから提供される ID プロバイダーの標準 ARN 情報を使用してください。"Principal": { "Federated": [ "acs:ram::123456789012****:saml-provider/<provider-name>" ] }