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

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

最終更新日:Sep 23, 2024

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

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

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

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

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

    重要

    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",
                "Resource": "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"
                ],
                "Resource": "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[Bucket]
  ├── 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:*:174649585760xxxx: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) を使用して、IPアドレスが192.168.0.1されているユーザーに、OSS SDK for Javaのクライアントから次の操作を実行する権限を付与します。

  • examplebucketバケット内のfooプレフィックスを含む名前のオブジェクトを一覧表示する

  • examplebucketのfileプレフィックスを名前に含むオブジェクトに対して、アップロード、ダウンロード、および削除操作を実行する権限をユーザーに付与します。

次の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ポリシーは、アクセス制御リスト (ACL) がpublic-readまたはpublic-read-writeであるオブジェクトを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: RAMユーザーにIMMを使用する権限を付与する

次のRAMポリシーは、RAMユーザーにIntelligent Media Management (IMM) を使用する権限を付与します。

{
  "Version": "1",
  "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "oss:GetObject",
                "oss:PutObject",
                "oss:PostProcessTask",
                "oss:ProcessImm"
            ],
            "Resource": "*"
        },
        {
            "Action": [
                "imm:CreateOfficeConversionTask",
                "imm:GetWebofficeURL"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Effect": "Allow",
            "Action": "ram:PassRole",
            "Resource": "acs:ram:*:*:role/aliyunimmdefaultrole"
        }
   ]
}

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

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

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

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

    重要

    次の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:*:*:*"
     }
   ]
}