RAM (Resource Access Management) ポリシーを設定して、従業員、システム、アプリケーションなどのユーザーの権限、およびユーザーがアクセスできるリソースを管理できます。 たとえば、RAMポリシーを作成して、特定のバケットに格納されているオブジェクトの一覧表示と読み取りをユーザーに許可できます。
RAMユーザーにカスタムポリシーをアタッチする
カスタムポリシーを作成します。
実際のシナリオに基づいてこのトピックで説明する例を参照し、スクリプトを使用してカスタムポリシーを作成できます。 詳細については、「カスタムポリシーの作成」をご参照ください。
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オブジェクトが指定されます。カスタムポリシーを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:*:*:*"
}
]
}