すべてのプロダクト
Search
ドキュメントセンター

Resource Access Management:ポリシー要素

最終更新日:Oct 31, 2024

このトピックでは、RAM (Resource Access Management) で権限を定義するために使用されるポリシーの要素について説明します。 要素は、Effect、Action、Resource、Condition、およびPrincipalです。

要素

説明

Effect

ステートメントの結果が明示的な許可か、明示的な拒否かを指定します。 有効な値は、Allow および Deny です。

Action

許可または拒否される、1 つまたは複数の API 操作について説明します。

Resource

ステートメントが対象とする、1 つまたは複数のオブジェクトを指定します。

Condition

ポリシーの適用に必要な条件を指定します。

依頼人

リソースへのアクセスを許可または拒否するプリンシパルを指定します。 この要素は、RAMロールを引き受ける信頼済みエンティティを指定する信頼ポリシーなど、リソースベースのポリシーでのみ使用できます。

Effect

Effect要素は、ステートメント結果が明示的許可であるか、明示的拒否であるかを指定する。 この要素は必須です。 有効な値は、Allow および Deny です。

説明

RAMポリシーにAllowステートメントとDenyステートメントが同時に含まれている場合、DenyステートメントがAllowステートメントよりも優先されます。

例:

"Effect": "Allow"

Action

Action要素は、許可または拒否される1つ以上のAPI操作を記述します。 この要素は必須です。 有効値: Alibaba Cloudサービスからの操作名。

形式: <ram-code >:< action-name>

  • ram-code: Alibaba Cloudサービスを示すためにRAMで使用されるコード。 詳細については、[RAMで動作するサービス][RAMコード] 列にリストされているコードをご参照ください。

  • action-name: サービス内の1つ以上のAPI操作の名前。

ほとんどの場合、Action要素の値は大文字と小文字を区別しません。 ただし、Alibaba Cloudサービスのアクセス許可のドキュメントに基づいて、<ram-code> および <action-name> を指定することを推奨します。 これは一貫性の確保に役立ちます。

例:

"Action": [
  "oss:ListBuckets",
  "ecs:Describe*",
  "rds:Describe*"
]

Resource

Resource要素は、ステートメントがカバーする1つ以上のオブジェクトを指定します。 この要素は必須であり、IDベースのポリシーでのみ使用できます。 有効値: リソースのAlibaba Cloudリソース名 (ARN) 。

Resource要素は、acs:<ram-code >:< region >:< account-id >:< relative-id> 形式です。 Alibaba Cloudサービスのアクセス許可のドキュメントに基づいてARNを指定してください。 Resource要素には、次のフィールドが含まれます。

  • acs: Alibaba Cloudサービスの頭文字で、Alibaba cloudのパブリッククラウドを示します。

  • ram-code: Alibaba Cloudサービスを示すためにRAMで使用されるコード。 詳細については、[RAMで動作するサービス][RAMコード] 列にリストされているコードをご参照ください。

  • region: リージョンに関する情報です。 ステートメントがグローバルリソースをカバーする場合、このフィールドにアスタリスク (*) を設定します。 グローバルリソースには、リージョンを指定する必要なしにアクセスできます。 詳細については、「リージョンとゾーン」をご参照ください。

  • account-id: Apsara StackテナントアカウントのID。 たとえば、123456789012 **** と入力できます。

  • relative-id: サービス関連リソースの識別子。 この要素の意味はサービスによって異なります。 relative-id要素の形式は、ファイルパスに似ています。 たとえば、relative-id = "mybucket/dir1/object1.jpg" はObject Storage Service (OSS) オブジェクトを示します。

例:

"Resource": [
  "acs:ecs:*:*:instance/inst-001",
  "acs:ecs:*:*:instance/inst-002",
  "acs:oss:*:*:mybucket",
  "acs:oss:*:*:mybucket/*"
]

Condition

Condition要素は、ポリシーが有効になるために必要な条件を指定します。 この要素はオプションです。 Condition要素は、1つまたは複数の条件を含む条件ブロックと見なされます。 各Condition要素は、条件演算子、条件キー、および条件値で構成されます。

条件块判断逻辑

説明

Condition要素はオプションです。 Condition要素が指定されているかどうかはチェックされません。 Condition要素の値を指定する場合は、スペルと大文字が正しいことを確認してください。

条件キーは大文字と小文字を区別します。 条件の大文字と小文字の区別は、使用する条件演算子によって異なります。 条件キーが文字列型で、StringEquals条件演算子を使用している場合、システムは要求の値と条件値を比較することによって大文字と小文字を区別する一致を実行します。 キーが文字列型で、StringEqualsIgnoreCase条件演算子を使用している場合、システムはリクエストの値を条件値と比較することにより、大文字と小文字を区別しない一致を実行します。

  • 評価ロジック

    • 条件キーには1つ以上の値を指定できます。 リクエストの値が指定された値のいずれかと一致する場合、条件は満たされます。

    • 条件は、単一の条件演算子に添付される複数のキーを持つことができます。 このタイプの条件は、キーのすべての要件が満たされている場合にのみ満たされます。

    • 条件ブロックは、すべての条件が満たされている場合にのみ満たされます。

  • 条件付き演算子

    条件付き演算子は、文字列、数字、日付と時刻、ブール値、およびIPアドレスのカテゴリに分類できます。

    カテゴリ

    条件付き演算子

    String

    • StringEquals

    • StringNotEquals

    • StringEqualsIgnoreCase

    • StringNotEqualsIgnoreCase

    • StringLike

    • StringNotLike

    • NumericEquals

    • NumericNotEquals

    • NumericLessThan

    • NumericLessThanEquals

    • NumericGreaterThan

    • NumericGreaterThanEquals

    日付と時刻

    • DateEquals

    • DateNotEquals

    • DateLessThan

    • DateLessThanEquals

    • DateGreaterThan

    • DateGreaterThanEquals

    Boolean

    Bool

    IP アドレス

    • IpAddress

    • NotIpAddress

  • 条件キー

    • 共通条件キーの形式はacs:<condition-key> です。

      共通条件キー

      タイプ

      説明

      acs:CurrentTime

      日付と時刻

      webサーバーがリクエストを受信した時刻。

      説明

      ISO 8601標準で時間を指定します。 時刻は UTC である必要があります。  

      たとえば、2023-01-10T20:00:00 + 08:00または2023-01-10T12:00:00Zを使用して、2023年1月10日20:00:00 (UTC + 8) を示します。

      acs:SecureTransport

      Boolean

      要求の送信に安全なチャネルを使用するかどうかを指定します。 たとえば、リクエストはHTTPSを介して送信できます。

      acs:SourceIp

      IP アドレス

      リクエストを送信するクライアントの IP アドレス。

      説明

      acs:SourceIpフィールドの値は、単一のIPアドレスまたはCIDRブロックにすることができます。 値が単一のIPアドレスの場合、CIDRブロックではなく特定のIPアドレスを指定する必要があります。 たとえば、10.0.0.1/32ではなく10.0.0.1を指定する必要があります。

      acs:MFAPresent

      Boolean

      ユーザーログイン中に多要素認証 (MFA) を使用するかどうかを指定します。

      説明

      RAMユーザーのセキュリティ設定で、RAMユーザーログインのMFA[異常ログインの場合のみ] に設定されている場合、acs:MFAPresent条件キーは無効になります。 詳細については、「RAMユーザーのセキュリティ設定の管理」をご参照ください。

      acs:PrincipalARN

      String

      リクエスタのID。 条件キーは、リソースディレクトリのアクセス制御ポリシーとRAMロールの信頼ポリシーでのみ使用できます。 例: acs:ram:*:*:role/* resourcedirectory *

      説明

      ARNは、指定したRAMロールに対してのみ指定できます。 名前には小文字しか使用できません。 RAMコンソールのロールの詳細ページで、RAMロールのARNを表示できます。

      acs:PrincipalRDId

      String

      要求者のAlibaba Cloudアカウントが属するリソースディレクトリのID。 条件キーは、RAMロールの信頼ポリシーとOSSバケットポリシーでのみ使用できます。

      acs:PrincipalRDPath

      String

      要求者のAlibaba Cloudアカウントが属するリソースディレクトリ内のパス。 条件キーは、RAMロールの信頼ポリシーとOSSバケットポリシーでのみ使用できます。

      acs:RequestTag/<tag-key>

      String

      リクエストで渡されるタグ。 <tag-key> はタグキーを示します。 <tag-key> を実際のタグキーに置き換えます。 サポートされているAlibaba Cloudサービスとリソースタイプの詳細については、「タグと連携するサービス」の「タグラムサポート」をご参照ください。

      acs:ResourceTag/<tag-key>

      String

      要求されたリソースにバインドされているタグ。 <tag-key> はタグキーを示します。 <tag-key> を実際のタグキーに置き換えます。 サポートされているAlibaba Cloudサービスとリソースタイプの詳細については、「タグと連携するサービス」の「タグラムサポート」をご参照ください。

    • Alibaba Cloudサービスに固有の条件キーの形式は、<ram-code >:< condition-key> です。

      たとえば、oss:Delimiterを使用して、ListObjects操作を呼び出して一覧表示するオブジェクトの名前をグループ化します。

      各クラウドサービスの条件キーの詳細については、各クラウドサービスの承認ドキュメントをご参照ください。

  • ステートメント内の2つの条件間の論理関係はANDです。 条件間の論理関係をORに設定する場合は、2つの文で条件を別々に指定する必要があります。

    例1: MFAが有効になっており、IPアドレス203.0.113.2からECSインスタンスにアクセスするRAMユーザーのみにECSインスタンスへのアクセスを許可します。

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "ecs:*",
          "Resource": "*",
          "Condition": {
            "IpAddress": {
              "acs:SourceIp": [
                "203.0.113.2"
              ]
            },
            "Bool": {
              "acs:MFAPresent": [
                "true"
              ]
            }
          }
        }
      ]
    }

    例2: MFAが有効になっているRAMユーザー、またはIPアドレス203.0.113.2からECSインスタンスにアクセスする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ロールを引き受ける信頼済みエンティティを指定できます。 Principal要素は、リソースベースのポリシーで必要です。

説明

IDベースのポリシーでPrincipal要素を指定することはできません。 IDベースのポリシーは、RAMユーザー、RAMユーザーグループ、RAMロールなどのRAM IDにアタッチされます。 IDベースのポリシーがアタッチされているRAM IDがプリンシパルです。

ポリシーのPrincipal要素には、複数の種類のプリンシパルを指定できます。 ポリシーのPrincipal要素に同じ型の複数のプリンシパルを指定することもできます。 複数種類のプリンシパルを指定する場合は、コンマ (,) で区切ります。 同じ型の複数のプリンシパルを指定する場合は、プリンシパルをコンマ (,) で区切り、プリンシパルを括弧 [] で囲みます。 複数のプリンシパルは、OR演算子によって互いに関連付けられます。 ポリシーは、ポリシー内のすべてのプリンシパルにアタッチされます。

例:

"Principal": {
  "RAM": [
    "acs:ram::123456789012****:root",
    "acs:ram::987654321098****:root"
  ],
  "Service": "ecs.aliyuncs.com"
}

プリンシパルは認証されたRAMエンティティで、次のタイプに分類されます。

  • Alibaba Cloud アカウント

    ポリシーでPrincipal要素をAlibaba Cloudアカウントに設定した場合、ポリシーはAlibaba Cloudアカウントに属するすべてのRAMユーザーとRAMロールにアタッチされます。 ポリシーでAlibaba CloudアカウントのARNを指定する必要があります。 ARNは、acs:ram ::< account-id>:root形式です。 例:

    "Principal": {
        "RAM": "acs:ram::123456789012****:root"
    }
    説明

    ポリシーでPrincipal要素をAlibaba Cloudアカウントに設定した場合、ポリシーはAlibaba Cloudアカウントにアタッチされません。

  • RAM ユーザー

    ポリシーでPrincipal要素を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を指定する場合、アスタリスク (*) を使用したファジー一致はサポートされません。

    重要

    Principal要素の値に、信頼ポリシーを作成または変更するときにRAMロールを引き受けるRAMユーザーのARNが含まれている場合、システムはポリシーを保存するときにARNをIDに変換します。 例えば、システムは、ARNを29695932303672 **** に変換することができる。 IDは、RAMユーザーが削除された後にのみ信頼ポリシーに表示されます。 RAMユーザーを削除した後、IDを削除するか、既存のRAMユーザーのARNに置き換えることができます。 これにより、セキュリティリスクを軽減できます。 信頼ポリシーを作成または変更する場合、<user-name> の値は大文字と小文字を区別しません。 システムは、入力した値を標準のARNに自動的に変換します。

  • 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を指定する場合、アスタリスク (*) を使用したファジーマッチはサポートされません。

    重要

    Principal要素の値に、信頼ポリシーを作成または変更するときに別のRAMロールを引き受けるRAMロールのARNが含まれている場合、システムはポリシーを保存するときにARNをIDに変換します。 例えば、システムは、ARNを38915594982675 **** に変換することができます。 IDは、別のRAMロールを引き受けるRAMロールが削除された後にのみ、信頼ポリシーに表示されます。 別のRAMロールを引き受けるRAMロールが削除された後、IDを削除するか、またはIDを既存のRAMロールのARNに置き換えることができます。 これにより、セキュリティリスクを軽減できます。 信頼ポリシーを作成または変更する場合、<role-name> の値は大文字と小文字を区別しません。 システムは、入力した値を標準のARNに自動的に変換します。

  • Alibaba Cloud のサービス

    ポリシーでPrincipal要素をAlibaba Cloudサービスに設定する場合、Alibaba Cloudサービスの名前を指定する必要があります。 サービス名は <service-nam e>.aliyuncs.comの形式です。 <service-name> を有効な値に設定してください。 例:

    "Principal": {
      "Service": [
        "ecs.aliyuncs.com"
      ]
    }
  • ID プロバイダ (IDP)

    ポリシーでPrincipal要素をIdPに設定する場合は、IdPのARNを指定する必要があります。 Alibaba Cloudは、Security Assertion Markup Language (SAML) 2.0とOpenID Connect (OIDC) に基づくシングルサインオン (SSO) をサポートしています。 SAML IdPのARNは、acs:ram ::< account-id>:saml-provider/<provider-name> 形式です。 OIDCベースのSSOを実装するには、OIDC IdPを作成する必要があります。 OIDC IdPのARNは、acs:ram ::< account-id>:oidc-provider/<provider-name> 形式です。 Principal要素のARNの値は大文字と小文字が区別されます。 有効なARNを指定してください。

    "Principal": {
      "Federated": [
        "acs:ram::123456789012****:saml-provider/<provider-name>"
      ]
    }