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

Object Storage Service:RAMポリシーの一般的な例

最終更新日:Mar 05, 2024

RAM (Resource Access Management) ポリシーを設定して、従業員、システム、アプリケーションなどのユーザーの権限、およびユーザーがアクセスできるリソースを管理できます。 たとえば、RAMポリシーを作成して、特定のバケットに格納されているオブジェクトの一覧表示と読み取りをユーザーに許可できます。

RAMユーザーにカスタムポリシーをアタッチする

  1. カスタムポリシーを作成します。

    実際のシナリオに基づいてこのトピックで説明する例を参照し、スクリプトを使用してカスタムRAMポリシーを作成できます。 詳細については、「カスタムポリシーの作成」をご参照ください。

    RAMポリシーには、バージョン番号とステートメントが含まれます。 各ステートメントには、Effect、Action、Resource、およびConditionの要素が含まれています。 Condition要素はオプションです。 詳細については、「概要」をご参照ください。

    重要

    Object Storage Service (OSS) では、Resource要素をアスタリスクのワイルドカード文字 (*) に設定して、特定のタイプのリソースを指定できます。 Resource要素の値は、acs:oss:{region }:{ bucket_owner }:{ bucket_name}/{object_name} の形式です。 たとえば、Resource要素がacs:oss:*:*:mybucket/* に設定されている場合、mybucketバケット内のすべてのリソースが指定されます。 Resource要素がacs:oss:*:*:mybucket/abc *.txtに設定されている場合、すべて。mybucketバケット内のabcプレフィックスを名前に含むtxtオブジェクトが指定されます。

  2. カスタムポリシーをRAMユーザーにアタッチします。

    手順1で作成したRAMポリシーをRAMユーザーにアタッチします。 詳細については、「RAMユーザーへの権限付与」をご参照ください。

例1: RAMユーザーにバケットを完全に制御する権限を付与する

次のRAMポリシーは、RAMユーザーにmybucketバケットの完全な制御を許可します。

警告

セキュリティ上の理由から、モバイルアプリで使用されるバケットをRAMユーザーに完全に制御させないことをお勧めします。

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "oss:*",
            "Resource": [
                "acs:oss:*:*:mybucket",
                "acs:oss:*:*:mybucket/*"
            ]
        }
    ]
}

例2: RAMユーザーがバケット内の複数のオブジェクトを削除することを禁止する

次のRAMポリシーは、RAMユーザーがすべてを削除することを禁止します。mybucketバケット内のabcプレフィックスを名前に含むtxtオブジェクト:

{
  "Version": "1",
  "Statement": [
        {
         "Effect": "Deny",
         "Action": [
           "oss:DeleteObject"
         ],
         "Resource": [
           "acs:oss:*:*:mybucket/abc *.txt"
         ]
     }
   ]
}

例3: RAMユーザーにバケット内のオブジェクトの一覧表示と読み取りを許可する

  • OSS SDKまたはossutilを使用して、RAMユーザーにバケット内のオブジェクトの一覧表示と読み取りを許可する

    次のRAMポリシーは、OSS SDKまたはossutilを使用して、RAMユーザーがmybucketバケット内のすべてのオブジェクトを一覧表示して読み取ることを許可します。

    説明

    ListObjectsアクションのResource要素は、目的のバケット内のすべてのリソースを指定する必要があります。

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "oss:ListObjects",
                "リソース": "acs:oss:*:*:mybucket"
            },
            {
                "Effect": "Allow",
                "Action": "oss:GetObject",
                "Resource": "acs:oss:*:*:mybucket/*"
            }
        ]
    }
  • OSSコンソールを使用して、RAMユーザーにバケット内のオブジェクトの一覧表示と読み取りを許可する

    次のRAMポリシーは、OSSコンソールを使用して、RAMユーザーがmybucketバケット内のすべてのオブジェクトを一覧表示して読み取ることを許可します。

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                          "oss:ListBuckets",
                          "oss:GetBucketStat",
                          "oss:GetBucketInfo",
                          "oss:GetBucketTagging",
                          "oss:GetBucketLifecycle" 、
                          "oss:GetBucketWorm" 、                      
                          "oss:GetBucketVersioning" 、 
                          "oss:GetBucketAcl" 
                          ],    
                "Resource": "acs:oss:*:*:*"
            },
            {
                "Effect": "Allow",
                "Action": [
                    "oss:ListObjects",
                    "oss:GetBucketAcl"
                ],
                "リソース": "acs:oss:*:*:mybucket"
            },
            {
                "Effect": "Allow",
                "Action": [
                    "oss:GetObject"、
                    "oss:GetObjectAcl"
                ],
                "Resource": "acs:oss:*:*:mybucket/*"
            }
        ]
    }

例4: RAMユーザーがバケットを削除することを禁止する

次のRAMポリシーは、RAMユーザーがmybucketバケットを削除することを禁止します。

{
  "Version": "1",
  "Statement": [
      {
          "Effect": "Allow",
          "Action": "oss:*",
          "Resource": [
              "acs:oss:*:*:mybucket",
              "acs:oss:*:*:mybucket/*"
          ]
      },
        {
         "Effect": "Deny",
         "Action": [
           "oss:DeleteBucket"
         ],
         "Resource": [
           "acs:oss:*:*:mybucket"
         ]
     }
   ]
}

例5: RAMユーザーにバケット内の複数のディレクトリへのアクセスを許可する

この例では、mybucketという名前のバケットを使用して写真を保存します。 バケットには、写真がキャプチャされた場所に基づいて名前が付けられた複数のディレクトリが含まれます。 各ディレクトリには、写真がキャプチャされた年に基づいて名前が付けられたサブディレクトリが含まれます。

mybucket [バケット]
  ├── beijing
  │   ├── 2014
  │   └── 2015
  ├── hangzhou
  │   ├── 2013
  │   ├── 2014
  │   └── 2015 
  └── qingdao
      ├── 2014
      └ ─ ─ 2015 

たとえば、mybucket/hangzhou/2014/ およびmybucket/hangzhou/2015/ ディレクトリに対する読み取り専用権限をRAMユーザーに付与する場合。 ディレクトリレベルの承認はRAMポリシーの高度な機能であり、実際のユースケースに基づいてさまざまな複雑さレベルのRAMポリシーが必要です。 次のRAMポリシーはさまざまなシナリオに適しており、参照用にのみ提供されています。

  • mybucket/hangzhou/2014/ およびmybucket/hangzhou/2015/ ディレクトリ内のオブジェクトに対してRAMユーザーに読み取り専用権限を付与する

    このシナリオでは、RAMユーザーはアクセス可能なオブジェクトの完全なパスを知っています。 オブジェクトのフルパスを使用してオブジェクトにアクセスする権限をRAMユーザーに付与するようにRAMポリシーを設定することを推奨します。

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "oss:GetObject"
                ],
                "Resource": [
                    "acs:oss:*:*:mybucket/hangzhou/2014/*" 、
                    "acs:oss:*:*:mybucket/hangzhou/2015/*"
                ]
            }
        ]
    }
  • RAMユーザーに、mybucket/hangzhou/2014/ およびmybucket/hangzhou/2015/ ディレクトリにアクセスし、ossutilを使用してディレクトリ内のオブジェクトを一覧表示する権限を付与します。

    このシナリオでは、RAMユーザーはディレクトリ内のオブジェクトを知らず、ossutilを使用するか、API操作を呼び出してディレクトリ内のオブジェクトに関する情報を取得できます。 この場合、ポリシーでListObjects権限を指定する必要があります。

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "oss:GetObject"
                ],
                "Resource": [
                    "acs:oss:*:*:mybucket/hangzhou/2014/*" 、
                    "acs:oss:*:*:mybucket/hangzhou/2015/*"
                ]
            },
            {
                "Effect": "Allow",
                "Action": [
                    "oss:ListObjects"
                ],
                "Resource": [
                    "acs:oss:*:*:mybucket"
                ],
                "Condition":{
                    "StringLike":{
                        "oss:Prefix": [
                            "hangzhou/2014/*" 、
                        "hangzhou/2015/*"
                         ]
                    }
                }
            }
        ]
    }
  • OSSコンソールを使用して、RAMユーザーにディレクトリにアクセスする権限を付与する

    このシナリオでは、RAMユーザーはOSSコンソールを使用して、ルートディレクトリからレベルごとにmybucket/hangzhou/2014/ およびmybucket/hangzhou/2015/ ディレクトリにアクセスできます。

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                          "oss:ListBuckets",
                          "oss:GetBucketStat",
                          "oss:GetBucketInfo",
                          "oss:GetBucketTagging",
                          "oss:GetBucketLifecycle" 、
                          "oss:GetBucketWorm" 、                      
                          "oss:GetBucketVersioning" 、 
                          "oss:GetBucketAcl" 
                          ], 
                "Resource": [
                    "acs:oss:*:*:*"
                ]
            },
            {
                "Effect": "Allow",
                "Action": [
                    "oss:GetObject"、
                    "oss:GetObjectAcl"
                ],
                "Resource": [
                    "acs:oss:*:*:mybucket/hangzhou/2014/*" 、
                    "acs:oss:*:*:mybucket/hangzhou/2015/*"
                ]
            },
            {
                "Effect": "Allow",
                "Action": [
                    "oss:ListObjects"
                ],
                "Resource": [
                    "acs:oss:*:*:mybucket"
                ],
                "Condition": {
                    "StringLike": {
                        "oss:Delimiter": "/",
                        "oss:Prefix": [
                            "",
                            "hangzhou/",
                            "hangzhou/2014/*" 、
                            "hangzhou/2015/*"
                        ]
                    }
                }
            }
        ]
    }

例6: RAMユーザーがバケット内のオブジェクトを削除することを禁止する

次のRAMポリシーは、RAMユーザーがmybucketバケット内のオブジェクトを削除することを禁止します。

{
  "Version": "1",
  "Statement": [
        {
         "Effect": "Deny",
         "Action": [
           "oss:DeleteObject"
         ],
         "Resource": [
           "acs:oss:*:*:mybucket/*"
         ]
     }
   ]
}

例7: RAMユーザーが特定のタグを持つオブジェクトにアクセスすることを禁止する

次のRAMポリシーには、examplebucketバケットに格納され、status:okおよびkey1:value1タグを持つオブジェクトにRAMユーザーがアクセスできないようにするDenyステートメントが含まれています。

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "oss:GetObject"
            ],
            "Resource": [
                "acs:oss:*:1746495857602745:examplebucket/*"
            ],
            "Condition": {
                "StringEquals": {
                    "oss:ExistingObjectTag/status":"ok" 、
                    "oss:ExistingObjectTag/key1":"value1"
                }
            }
        }
    ]
}

例8: RAMユーザーに特定のIPアドレスからOSSにアクセスする権限を付与する

  • 特定のIPアドレスからのアクセスを許可する

    次のRAMポリシーは、RAMユーザーがmybucketバケット内のすべてのオブジェクトを、Allowステートメントで指定された192.168.0.0/16および198.51.100.0/24 CIDRブロック内のIPアドレスからのみ読み取ることを許可します。

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                          "oss:ListBuckets",
                          "oss:GetBucketStat",
                          "oss:GetBucketInfo",
                          "oss:GetBucketTagging",
                          "oss:GetBucketAcl" 
                          ], 
                "Resource": [
                    "acs:oss:*:*:*"
                ]
            },
            {
                "Effect": "Allow",
                "Action": [
                    "oss:ListObjects",
                    "oss:GetObject"
                ],
                "Resource": [
                    "acs:oss:*:*:mybucket",
                    "acs:oss:*:*:mybucket/*"
                ],
                "Condition":{
                    "IpAddress": {
                        "acs:SourceIp": ["192.168.0.0/16", "198.51.100.0/24"]
                    }
                }
            }
        ]
    }
  • 特定のIPアドレスからのアクセスを拒否する

    次のRAMポリシーは、Denyステートメントで指定された192.168.0.0/16 CIDRブロックにないIPアドレスからRAMユーザーがOSSリソースにアクセスすることを禁止します。

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                          "oss:ListBuckets",
                          "oss:GetBucketStat",
                          "oss:GetBucketInfo",
                          "oss:GetBucketTagging",
                          "oss:GetBucketAcl" 
                          ], 
                "Resource": [
                    "acs:oss:*:*:*"
                ]
            },
            {
                "Effect": "Allow",
                "Action": [
                    "oss:ListObjects",
                    "oss:GetObject"
                ],
                "Resource": [
                    "acs:oss:*:*:mybucket",
                    "acs:oss:*:*:mybucket/*"
                ]
            },
            {
                "Effect": "Deny",
                "Action": "oss:*",
                "Resource": [
                    "acs:oss:*:*:*"
                ],
                "Condition":{
                    "NotIpAddress": {
                        "acs:SourceIp": ["192.168.0.0/16"]
                    }
                }
            }
        ]
    }
    説明

    RAMポリシーでは、許可ステートメントよりも拒否ステートメントが優先されます。 したがって、RAMユーザーが192.168.0.0/16 CIDRブロックにないIPアドレスからmybucketバケット内のデータを読み取ろうとすると、RAMユーザーに必要な権限がないことを示すエラーメッセージが返されます。

例9: RAMまたはSTSを使用してユーザーにOSSリソースへのアクセスを許可する

たとえば、RAMまたはSecurity Token Service (STS) を使用して、次のアクセス管理要件を満たすRAMポリシーを作成します。

  • 特定のユーザーに、mybucketバケットと、名前にmybucketバケット内のfileプレフィックスが含まれるオブジェクトおよびディレクトリにアクセスする権限を付与します。

  • GetBucketAclGetBucketPutObjectGetObject、およびDeleteObjectの操作を呼び出す権限をユーザーに付与します。

  • Condition要素で、UserAgentをjava-sdkに、送信元IPアドレスを192.168.0.1に設定します。 これらの条件を満たすユーザーのみが特定のOSSリソースにアクセスできます。

  • 名前にfooプレフィックスが含まれるオブジェクトのみを一覧表示する権限をユーザーに付与します。

次のRAMポリシーは、前述のアクセス管理要件を満たすことができます。

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "oss:GetBucketAcl",
                "oss:ListObjects"
            ],
            "Resource": [
                "acs:oss:*:177530505652XXXX:mybucket"
            ],
            "Effect": "Allow",
            "Condition": {
                "StringEquals": {
                    "acs:UserAgent": "java-sdk",
                    "oss:Prefix": "foo"
                },
                "IpAddress": {
                    "acs:SourceIp": "192.168.0.1"
                }
            }
        },
        {
            "Action": [
                "OSS:のputObject"、
                "oss:GetObject"、
                "oss:DeleteObject"
            ],
            "Resource": [
                "acs:oss:*:177530505652XXXX:mybucket/file *"
            ],
            "Effect": "Allow",
            "Condition": {
               "StringEquals": {
                    "acs:UserAgent": "java-sdk"
                },
                "IpAddress": {
                    "acs:SourceIp": "192.168.0.1"
                }
            }
        }
    ]
}

例10: RAMポリシーを使用して、アクセス制御リスト (ACL) がpublic-readまたはpublic-read-writeであるオブジェクトのアップロードを拒否する

次のRAMポリシーは、ユーザーがpublic-readまたはpublic-read-writeのACLを持つオブジェクトをexamplebucketバケットにアップロードすることを禁止しています。

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
       "OSS:のputObject"、
       "oss:PutObjectAcl"
       ],
      "Resource": [
        "acs:oss:*:*:examplebucket" 、
        "acs:oss:*:*:examplebucket/*"
      ],
      "Condition": {
        "StringEquals": {
          "oss:x-oss-object-acl": [
            "public-read" 、
            "public-read-write"
          ]
        }
      }
    }
  ]
}

例11: インテリジェントメディア管理 (IMM) 機能の使用をRAMユーザーに許可する

次のRAMポリシーは、RAMユーザーにIMM機能を使用する権限を付与します。

{
  "Version": "1",
  "Statement": [
        {
         "Effect": "Allow",
         "Action": [
           "oss:ProcessImm" 、
           「oss:ram:GetRole」
         ],
         "Resource": "*"
     }
   ]
}

例12: RAMユーザーにストレージ冗長タイプの変更を許可する

  • バケットのストレージ冗長タイプを変更する権限を付与する

    次のRAMポリシーは、RAMユーザーにmybucketバケットのストレージ冗長タイプを変更する権限を付与します。

    {
      "Version": "1",
      "Statement": [
            {
             "Effect": "Allow",
             "Action": [
               "oss:CreateBucketDataRedundancyTransition" 、
               "oss:GetBucketDataRedundancyTransition" 、
               "oss:ListBucketDataRedundancyTransition" 、
               「oss:DeleteBucketDataRedundancyTransition」
             ],
             "リソース": "acs:oss:*:*:mybucket"
         }
       ]
    }
  • すべてのバケットのストレージ冗長タイプを変更する権限を付与する

    重要

    次のRAMポリシーは、Alibaba Cloudアカウント内のすべてのバケットのストレージ冗長タイプを変更する権限をRAMユーザーに付与します。 RAMユーザーに権限を付与する場合は、注意してください。

    {
      "Version": "1",
      "Statement": [
            {
             "Effect": "Allow",
             "Action": [
               "oss:CreateBucketDataRedundancyTransition" 、
               "oss:GetBucketDataRedundancyTransition" 、
               "oss:ListBucketDataRedundancyTransition" 、
               「oss:DeleteBucketDataRedundancyTransition」
             ],
             "Resource": "acs:oss:*:*:*"
         }
       ]
    }

例13: RAMユーザーにOSSリソースプランの注文を許可する

次のRAMポリシーは、RAMユーザーにOSSリソースプランの注文権限を付与します。:

警告

RAMユーザーがOSSリソースプランを注文した後、ユーザーはRAMユーザーが属するAlibaba Cloudアカウントの所有者に連絡して注文の支払いを行う必要があります。 RAMユーザーに注文の支払いを許可するには、Alibaba Cloudアカウントの所有者がRAMユーザーにbss:PayOrder権限を付与する必要があります。 bss:PayOrderはリスクの高い許可です。 必要な場合を除き、RAMユーザーに権限を付与しないことを推奨します。

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "oss:CreateOrder" 、
      "Resource": "acs:oss:*:*:*"
    }
  ]
}

例14: RAMユーザーにOSSのアクティブ化を許可する

次のRAMポリシーは、RAMユーザーにOSSをアクティブ化する権限を付与します。

{
  "Version": "1",
  "Statement": [
        {
         "Effect": "Allow",
         "Action": "oss:ActivateProduct" 、
         "Resource": "acs:oss:*:*:*"
     }
   ]
}