Resource Access Management (RAM) の権限ポリシーは、特定の権限を定義し、Effect、Action または NotAction、Resource、Condition、および Principal という基本的な要素で構成されています。
要素 | 説明 |
Effect | 権限付与には、次の 2 つの効果があります。
|
Action/NotAction | アクションは、特定のリソースに対する操作です。ポリシーステートメントでは、Action または NotAction のいずれかのみを指定できます。
|
Resource | リソースは、権限を付与できる特定のオブジェクトです。 |
Condition | ポリシーを有効にするために必要な条件を指定します。 |
Principal | リソースへのアクセスを許可または拒否されるプリンシパルを指定します。この要素は、RAM ロールの信頼ポリシーなど、リソースベースのポリシーにのみ適用されます。 |
Effect
`Effect` 要素は必須であり、ステートメントの結果が明示的な許可か拒否かを指定します。
`Effect` 要素の有効な値は `Allow` と `Deny` です。
権限ポリシーに `Allow` と `Deny` の両方のステートメントが含まれている場合、明示的な拒否のルールが適用されます。
次のコードに例を示します。
"Effect": "Allow"Action/NotAction
この必須要素は、許可または拒否される操作を指定します。ステートメントでは `Action` または `NotAction` のいずれかを使用できますが、両方は使用できません。`Action` 要素は、ポリシーが許可または拒否する操作をリストします。`NotAction` 要素は、ポリシーから除外される操作を指定します。これは、`NotAction` で指定された操作を除くすべての操作がポリシーの影響を受けることを意味します。
`Action` または `NotAction` 要素の値は、Alibaba Cloud サービスによって定義された API 操作の名前です。
`Action` または `NotAction` 要素のフォーマットは <ram-code>:<action-name> です。
ram-code: RAM で Alibaba Cloud サービスを識別するために使用されるコードです。詳細については、「RAM と連携するサービス」の [RAM コード] 列に記載されているコードをご参照ください。action-name: 関連する API 操作の名前です。
`Action` または `NotAction` 要素の値は、ほとんどの場合、大文字と小文字を区別しません。ただし、一貫した動作を保証するために、対応する Alibaba Cloud サービスの権限付与に関するドキュメントで指定されているとおりの正確なアクションプレフィックス <ram-code> とアクション名 <action-name> を使用することをお勧めします。
次のコードに例を示します。
Action の例
"Action": [ "oss:ListBuckets", "ecs:Describe*", "rds:Describe*" ]NotAction の例
次の例では、RAM 操作を除くすべての操作を許可します。許可されるすべての操作をリストする代わりに、ポリシーは例外 (`ram:*`) のみをリストするため、ポリシーステートメントがより簡潔になります。ただし、これにより広範な権限が付与されます。注意して使用し、ポリシーがセキュリティ要件を満たしていることを確認してください。
{ "Effect": "Allow", "NotAction": "ram:*", "Resource": "*" }
Resource
`Resource` 要素は、ID ベースのポリシーで必須の要素であり、権限が付与される 1 つ以上のオブジェクトを指定します。
`Resource` 要素の値は、リソースの Alibaba Cloud リソースネーム (ARN) です。
`Resource` 要素のフォーマットは acs:<ram-code>:<region>:<account-id>:<relative-id> です。対応する Alibaba Cloud サービスの権限付与に関するドキュメントで指定されているとおりの正確なリソース ARN を使用してください。
フォーマットの詳細は次のとおりです。
acs: `Alibaba Cloud Service` の頭字語で、Alibaba Cloud パブリッククラウドプラットフォームを示します。ram-code: RAM で Alibaba Cloud サービスを識別するコードです。詳細については、「RAM と連携するサービス」の [RAM コード] 列に記載されているコードをご参照ください。region: リージョン情報。リージョンを指定せずにアクセスできるグローバルリソースの場合、このフィールドをアスタリスク (*) に設定します。 詳細については、「リージョンとゾーン」をご参照ください。account-id: Alibaba Cloud アカウントの ID です。例:123456789012****。relative-id: サービスに固有のリソース記述の一部です。そのセマンティクスは Alibaba Cloud サービスによって定義されます。この部分は、ファイルパスに似たツリー状の構造をサポートします。たとえば、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` 要素は、ポリシーが有効になる条件を指定するオプションの要素です。
`Condition` 要素は、条件ブロックとも呼ばれます。1 つ以上の条件句で構成されます。条件句は、条件演算子タイプ、条件キー、および条件値で構成されます。

`Condition` 要素はオプションであるため、システムはその存在をチェックしません。`Condition` 要素を使用する場合は、すべてのコンポーネントに正しいスペルと大文字/小文字を使用していることを確認してください。
条件 キー は、大文字と小文字を厳密に区別します。条件 値 が大文字と小文字を区別するかどうかは、条件演算子によって異なります。たとえば、文字列の条件キーの場合、StringEquals 演算子は大文字と小文字を区別する比較を実行しますが、StringEqualsIgnoreCase 演算子は大文字と小文字を区別しない比較を実行します。
`Condition` 要素の詳細は次のとおりです。
評価ロジック
条件キーは 1 つ以上の値を持つことができます。評価中、リクエスト内の条件キーの値がポリシーで指定されたいずれかの値と一致する場合、条件は満たされます (OR ロジック)。
条件句は複数の条件キーを持つことができます。条件句は、そのすべての条件キーが満たされた場合にのみ満たされます (AND ロジック)。
条件ブロックは複数の条件句を持つことができます。条件ブロックは、そのすべての条件句が満たされた場合にのみ満たされます (AND ロジック)。
条件演算子タイプ
条件演算子は、文字列、数値、日時、ブール値、IP アドレスのカテゴリに分類できます。定義と例については、「条件演算子」をご参照ください。
条件キー
グローバルな Alibaba Cloud 条件キーの命名フォーマットは
acs:<condition-key>です。グローバル条件キー
タイプ
説明
acs:CurrentTime日付と時刻
Web サーバーがリクエストを受信した時刻。
説明時刻は UTC で、ISO 8601 標準に基づいてフォーマットする必要があります。
たとえば、2023 年 1 月 10 日 20:00:00 (UTC + 08: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 ユーザーのセキュリティ設定で [RAM ユーザーログインの MFA] が [異常なログインの場合にのみ必須] に設定されている場合、
acs:MFAPresent条件キーは無効になります。詳細については、「RAM ユーザーのセキュリティ設定の管理」をご参照ください。acs:PrincipalARN文字列
リクエスターの ID。この条件キーは、リソースディレクトリのコントロールポリシーと RAM ロールの信頼ポリシーでのみ使用できます。例:
acs:ram:*:*:role/*resourcedirectory*。説明現在、指定できるのは RAM ロールの ARN のみで、小文字で入力する必要があります。RAM ロールの ARN は、RAM コンソールのロール詳細ページで確認できます。
acs:PrincipalRDId文字列
リクエスターの Alibaba Cloud アカウントが属するリソースディレクトリの ID。この条件キーは、RAM ロールの信頼ポリシーと OSS バケットポリシーでのみ使用できます。
acs:PrincipalRDPath文字列
リソースディレクトリ内のリクエスターの Alibaba Cloud アカウントのパス。この条件キーは、RAM ロールの信頼ポリシーと OSS バケットポリシーでのみ使用できます。
acs:RequestTag/<tag-key>文字列
リクエストで渡されるタグ。<tag-key> はタグキーを示します。<tag-key> を実際のタグキーに置き換えてください。サポートされている Alibaba Cloud サービスとリソースタイプの詳細については、「タグをサポートするサービス」の [リソースタイプ別の権限付与] をご参照ください。
acs:ResourceTag/<tag-key>文字列
リクエストされたリソースにバインドされているタグ。<tag-key> はタグキーを示します。<tag-key> を実際のタグキーに置き換えてください。サポートされている Alibaba Cloud サービスとリソースタイプの詳細については、「タグをサポートするサービス」にある [リソースタイプ別の権限付与] の情報をご参照ください。
サービスレベルの Alibaba Cloud 条件キーの命名フォーマットは
<ram-code>:<condition-key>です。たとえば、OSS 条件キー
oss:Delimiterは、`ListObjects` リクエストでオブジェクト名をグループ化するために使用される文字です。特定の Alibaba Cloud サービスの条件キーについては、そのサービスの権限付与に関するドキュメントをご参照ください。
条件の例
単一のステートメント内の条件は、論理 AND を使用して評価されます。論理 OR を使用して条件を評価するには、それらを別々のステートメントに配置する必要があります。
例 1: RAM ユーザーが MFA を有効にしていて、かつ IP アドレス 203.0.113.2 からアクセスしている場合にのみ、ECS インスタンスへのアクセスを許可します。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "ecs:*", "Resource": "*", "Condition": { "IpAddress": { "acs:SourceIp": [ "203.0.113.2" ] }, "Bool": { "acs:MFAPresent": [ "true" ] } } } ] }例 2: RAM ユーザーが MFA を有効にしているか、または IP アドレス 203.0.113.2 からアクセスしている場合に、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 ロールの信頼ポリシーなど、リソースベースのポリシーで必須です。信頼ポリシーでは、`Principal` 要素はロールを偽装できるエンティティを指定します。
`Principal` 要素を ID ベースのポリシーで使用することはできません。ID ベースのポリシーは、RAM ユーザー、ユーザーグループ、RAM ロールなどの RAM ID にアタッチされます。この場合、RAM ID が暗黙的なプリンシパルになります。
Principal 要素では、複数のプリンシパルタイプを追加し、各タイプに複数のプリンシパルを指定できます。複数のプリンシパルタイプを区切るには、カンマ (,) を使用します。プリンシパルタイプに複数の値がある場合は、値を角括弧 ([]) で囲み、カンマ (,) で区切ります。複数のプリンシパル間の関係は、論理 OR です。これは、ポリシーで指定されたプリンシパルのいずれかが承認されることを意味します。
権限付与エンティティの例:
"Principal": {
"RAM": [
"acs:ram::123456789012****:root",
"acs:ram::987654321098****:root"
],
"Service": "ecs.aliyuncs.com"
}プリンシパルは、認証された RAM エンティティです。利用可能なプリンシパルタイプは次のとおりです。
Alibaba Cloud アカウント
Alibaba Cloud アカウントをプリンシパルとして指定できます。これにより、指定されたアカウントに属するすべての RAM ユーザーと RAM ロールが承認されます。Alibaba Cloud アカウントを指定する場合、その ARN を
acs:ram::<account-id>:rootのフォーマットで使用する必要があります。次のコードに例を示します。"Principal": { "RAM": "acs:ram::123456789012****:root" }説明アカウント ARN をプリンシパルとして使用する場合、指定された Alibaba Cloud アカウントのルートユーザーは含まれません。
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>" ] }RAM ユーザーを指定する場合、部分一致にワイルドカード文字 (*) を使用することはできません。完全な ARN を指定する必要があります。
重要RAM ロールの信頼ポリシーで、`Principal` 要素に RAM ユーザーの ARN が含まれている場合、ポリシーの保存時に、システムはこの ARN を一意の ID (例: `29695932303672****`) に変換します。この ID は通常表示されません。RAM ユーザーが削除された場合にのみ、信頼ポリシーに表示されます。この場合、ID を削除するか、有効な RAM ユーザーの ARN に置き換えることができます。このメカニズムは、セキュリティリスクを軽減するのに役立ちます。信頼ポリシーを作成または更新する際、システムが自動的に標準の ARN に変換するため、
<user-name>の大文字と小文字は区別されません。RAM ロール
ポリシーの Principal 要素に RAM ロールを指定する場合は、RAM ロールの ARN を
acs:ram::<account-id>:role/<role-name>フォーマットで指定する必要があります。このフォーマットでは、<role-name>は RAM ロールの名前です。例:"Principal": { "RAM": [ "acs:ram::123456789012****:role/<role-name>" ] }RAM ロールの ARN は、アスタリスク (*) によるワイルドカードマッチングをサポートしていません。
重要RAM ロールの信頼ポリシーで、Principal 要素に別の RAM ロールの Alibaba Cloud リソースネーム (ARN) が含まれている場合、ポリシーの保存時に、システムはその ARN を ID に変換します。例: 38915594982675****。この ID は通常表示されず、指定された RAM ロールが削除された後にのみ信頼ポリシーに表示されます。この場合、ID を削除するか、有効な RAM ロールの ARN に置き換えてください。これはセキュリティリスクを軽減するのに役立ちます。信頼ポリシーを作成または更新する際、
<role-name>の大文字と小文字は区別されません。システムは自動的にそれを標準の ARN に変換します。Alibaba Cloud サービス
Alibaba Cloud サービスをプリンシパルとして指定できます。サービスの識別子であるサービスプリンシパル名を指定する必要があります。名前は通常、
<service-name>.aliyuncs.comのフォーマットです。<service-name>の具体的な値については、ロールを偽装する Alibaba Cloud サービスのドキュメントをご参照ください。次のコードに例を示します。"Principal": { "Service": [ "ecs.aliyuncs.com" ] }ID プロバイダー
ID プロバイダー (IdP) の ARN を使用して、IdP のフェデレーションユーザーをプリンシパルとして指定できます。Alibaba Cloud は、Security Assertion Markup Language (SAML) 2.0 および OpenID Connect (OIDC) に基づくシングルサインオン (SSO) をサポートしています。SAML プロトコルに基づく SSO の場合、SAML IdP の ARN は
acs:ram::<account-id>:saml-provider/<provider-name>です。OIDC プロトコルに基づく SSO の場合、OIDC IdP の ARN はacs:ram::<account-id>:oidc-provider/<provider-name>です。`Principal` 要素の ARN 値は、大文字と小文字を区別するため、IdP の正確な ARN を使用する必要があります。"Principal": { "Federated": [ "acs:ram::123456789012****:saml-provider/<provider-name>" ] }