セキュリティ上の理由から、すべてのObject Storage Service (OSS) リソース (バケットおよびオブジェクト) はデフォルトでプライベートです。 つまり、所有者と許可されたユーザーのみがリソースにアクセスできます。 OSSでは、さまざまなアクセス制御ポリシーを使用して、他のユーザーにOSSリソースへのアクセスまたは使用権限を付与できます。 リクエストは、リクエストに適用されるすべてのアクセス制御ポリシーがリクエストを許可する場合にのみ許可されます。
リクエストタイプ
リクエストは、非匿名リクエストと匿名リクエストに分けられます。
非匿名リクエスト
非匿名リクエストには、認証用のリクエストヘッダーまたはリクエストURLに署名情報が含まれます。
匿名リクエスト
匿名リクエストには、リクエストヘッダーまたはリクエストURLに署名情報は含まれません。
非匿名リクエストの承認
権限付与の説明
OSSが非匿名リクエストを受信すると、OSSは、認証結果、ロールベースのセッションポリシー、IDベースのポリシー (RAMポリシー) 、バケットポリシー、オブジェクトアクセス制御リスト (ACL) 、およびバケットACLに基づいて、リクエストを許可するか拒否するかを決定します。
上の図は、可能な承認結果を示しています。
許可: 適用可能なポリシーに基づいてリクエストを許可します。
明示的な拒否: 適用可能なポリシーに基づいてリクエストを明示的に拒否します。
暗黙的な拒否: OSSが適用可能なポリシーを検出しない場合、または許可または拒否のヒットがない場合、暗黙的にリクエストを拒否します。
承認プロセス
OSSは次の手順を実行して、非匿名リクエストを認証および承認します。
OSSは、リクエストがID検証に合格するかどうかをチェックします。
OSSは、リクエストに含まれる署名とOSSサーバーによって計算された署名を比較します。
署名に矛盾がある場合、要求は拒否されます。
署名が一致している場合、OSSは、ロールベースのセッションポリシーに基づいて、リクエストがまだチェックされていないかどうかをチェックします。
OSSは、ロールベースのセッションポリシーに基づいて、リクエストがまだチェックされていないかどうかをチェックします。
ロールベースのセッションポリシーに基づいてリクエストがチェックされていない場合、OSSはリクエストをセッションポリシーと照合します。
結果がExplicit DenyまたはImplicit Denyの場合、OSSはリクエストを拒否します。
結果が [許可] の場合、OSSは引き続きRAMポリシーおよびバケットポリシーに対してリクエストをチェックします。
リクエストがロールベースのセッションポリシーに基づく評価を必要としない場合、OSSはRAMポリシーとバケットポリシーに基づいてリクエストをチェックします。
OSSは、リクエストがRAMポリシーとバケットポリシーと一致するかどうかをチェックします。
RAMポリシーは、IDベースのアクセス制御ポリシーです。 RAMポリシーを設定して、OSSのリソースへのアクセスを管理できます。 RAMポリシーに基づく承認チェックでは、OSSはリクエストを送信するアカウントに基づいてリクエストを許可するか拒否するかを決定します。
リクエストがAlibaba CloudアカウントのAccessKeyペアを使用して送信された場合、OSSは暗黙的にリクエストを拒否します。
Alibaba CloudアカウントまたはRAMユーザーの所有者に属していないバケットにアクセスするために、RAMユーザーのAccessKeyペアまたはSecurity Token Service (STS) 資格情報を使用してリクエストが送信された場合、OSSは暗黙的にリクエストを拒否します。
OSSは、RAMが提供する認証操作を呼び出して、リクエストを認証します。 OSSは、アカウントとバケットのリソースグループに基づく認証をサポートしています。 OSSは、認証結果に基づいて、リクエストを許可するか、明示的に拒否するか、暗黙的に拒否するかを決定します。
バケットポリシーは、リソースベースの権限付与ポリシーです。 バケットの所有者は、バケットポリシーを設定して、RAMユーザーまたは他のAlibaba Cloudアカウントがバケットまたはバケット内の特定のリソースで操作を実行することを許可できます。
バケットにバケットポリシーが設定されていない場合、OSSは暗黙的にリクエストを拒否します。
バケットポリシーがバケットに設定されている場合、OSSはリクエストがバケットポリシーと一致するかどうかをチェックし、リクエストを許可するか、明示的に拒否するか、暗黙的に拒否するかを決定します。
OSSは、上記のチェック結果に基づいて、リクエストがExplicit Denyと一致するかどうかをチェックします。
リクエストがExplicit Denyと一致する場合、OSSはリクエストを拒否します。 リクエストがExplicit Denyと一致しない場合、OSSはリクエストがAllowと一致するかどうかをチェックします。
OSSは、リクエストがRAMポリシーとバケットポリシーに基づいて許可と一致するかどうかをチェックします。
リクエストがAllowと一致する場合、OSSはリクエストを許可します。 リクエストがAllowと一致しない場合、OSSはリクエストのソースをチェックします。
OSSはリクエストのソースをチェックします。
管理API操作を呼び出してリクエストが送信された場合、OSSはリクエストを拒否します。 データAPIを呼び出してリクエストが送信された場合、OSSはオブジェクトACLまたはバケットACLをチェックします。
管理API操作には、GetService (ListBuckets) などのサービス関連操作、PutBucketやGetBucketLifecycleなどのバケット関連操作、およびPutLiveChannelやDeleteLiveChannelなどのLiveChannel関連操作が含まれます。
データAPI操作には、PutObjectやGetObjectなどのオブジェクト関連の操作が含まれます。
OSSは、リクエストされたオブジェクトとバケットのACLに基づいてリクエストをチェックします。
OSSがオブジェクトACLに基づいてリクエストをチェックすると、リクエスト元がバケット所有者であるか、リクエストが読み取りリクエストであるか書き込みリクエストであるかがチェックされます。 詳細については、「PutBucketAcl」をご参照ください。
結果が許可の場合、OSSはリクエストを許可します。
結果が [拒否] の場合、OSSはリクエストを拒否します。
オブジェクトのACLがバケットから継承されている場合、OSSはオブジェクトが格納されているバケットのACLに基づいてリクエストをチェックします。
OSSがバケットACLに基づいてリクエストをチェックすると、リクエスト元がバケット所有者であるかどうかがチェックされます。 詳細については、「PutBucketAcl」をご参照ください。
結果が許可の場合、OSSはリクエストを許可します。
結果が [拒否] の場合、OSSはリクエストを拒否します。
匿名リクエストの承認
権限付与の説明
OSSは、バケットポリシー、オブジェクトACL、およびバケットACLのみに基づいて、匿名リクエストを許可するか拒否するかを決定します。 OSSは、認証、ロールベースのセッションポリシー、またはRAMポリシーに基づいて、匿名リクエストに対して承認チェックを実行しません。
承認プロセス
OSSは、次の手順を使用して、匿名リクエストの承認チェックを実行します。
OSSはバケットポリシーを評価します。
結果が [拒否] の場合、OSSはリクエストを拒否します。
結果が許可の場合、OSSはリクエストを許可します。
結果がIgnoreの場合、OSSは引き続きオブジェクトのACLをチェックします。
OSSは、リクエストされたオブジェクトとバケットのACLに基づいてリクエストをチェックします。
オブジェクトのACLがprivateの場合、結果はDenyになり、OSSはリクエストを拒否します。
オブジェクトのACLがpublic-readまたはpublic-read-writeの場合、結果は許可となり、OSSはリクエストを許可します。
オブジェクトのACLがバケットから継承されている場合、OSSはオブジェクトが格納されているバケットのACLに基づいてリクエストをチェックします。
バケットのACLがpublic-readまたはpublic-read-writeの場合、結果は許可になり、OSSはリクエストを許可します。
バケットのACLがprivateの場合、結果はDenyになり、OSSはリクエストを拒否します。