Object Storage Service (OSS) の権限付与は、リクエストを検証してアクセスを許可または拒否します。OSS は、リクエストタイプ、ID 情報、および適用可能な権限ポリシーを評価して、決定を下します。
仕組み
リクエストタイプ
OSS は、ID 情報が含まれているかどうかに基づいて、アクセスリクエストを 2 つのタイプに分類します:
リクエストタイプ | 説明 |
非匿名リクエスト | リクエストヘッダーまたは URL に、署名などの ID 関連情報が含まれています。 |
匿名リクエスト | リクエストヘッダーまたは URL に ID 関連情報が含まれていません。 |
権限付与の原則
OSS の権限付は、明示的な拒否が優先されるという原則に従います。リクエストは、次の優先順位で評価されます:
明示的な拒否 (最優先):リクエストが拒否ルールに一致する場合、OSS は直ちにリクエストを拒否します。
許可:拒否ルールに一致せず、許可ルールに一致する場合、OSS はリクエストを許可します。
暗黙的な拒否 (デフォルト):どのルールにも一致しない場合、OSS はデフォルトでリクエストを拒否します。
非匿名リクエストの権限付与フロー
非匿名リクエストは、コントロールポリシー (該当する場合)、認証、セッションポリシー、RAM ポリシー、バケットポリシー、ACL など、多層的な権限付与を受けます。
権限付与フローの詳細は次のとおりです:
認証:OSS は、リクエスト内の署名と OSS サーバーによって計算された署名を比較して、リクエストを認証します。
不一致:リクエストは拒否されます。
一致:次のステップに進みます。
コントロールポリシーのチェック:OSS は、リソース所有者の Alibaba Cloud アカウントがリソースディレクトリ (RD) に属しており、コントロールポリシーが有効になっているかどうかをチェックします。
いいえ (アカウントが RD メンバーでない、または RD メンバーではあるがコントロールポリシーが有効になっていない場合):プロセスは続行されます。
はい (アカウントが RD メンバーであり、コントロールポリシーが有効になっている場合):OSS はコントロールポリシーを評価します。結果が明示的な拒否または暗黙的な拒否の場合、リクエストは拒否されます。結果が許可の場合、プロセスは続行されます。
セッションポリシーのチェック:OSS は、リクエストがロールベースのセッションポリシーを使用しているかどうかを判断します。
はい:OSS はセッションポリシーを評価します。結果が明示的な拒否または暗黙的な拒否の場合、リクエストは拒否されます。結果が許可の場合、プロセスは続行されます。
いいえ:このステップはスキップされ、プロセスは続行されます。
RAM ポリシーとバケットポリシーのチェック:OSS は両方のポリシータイプを個別に評価し、その結果を結合します。
RAM ポリシー:RAM ユーザーがどのリソースにアクセスできるかを制御する ID ベースのポリシーです。ユーザーレベルのアクセスの場合、OSS はリクエストを送信したアカウントのタイプに基づいて権限付与の結果を決定します:
Alibaba Cloud アカウントの AccessKey:結果は暗黙的な拒否になります。
RAM ユーザーの AccessKey または STS AccessKey:バケットが RAM ユーザーまたは RAM ロールを所有する Alibaba Cloud アカウントに属していない場合、結果は暗黙的な拒否になります。それ以外の場合、RAM はリクエストの権限付与を行い、許可、明示的な拒否、または暗黙的な拒否を返します。
バケットポリシー:バケットまたはその中のリソースへのアクセスを制御するリソースベースのポリシーです。
ポリシーが設定されていない:結果は暗黙的な拒否になります。
ポリシーが設定されている:結果は許可、明示的な拒否、または暗黙的な拒否になります。
結合された結果の評価:OSS は、RAM ポリシーとバケットポリシーからの結合された結果に基づいて決定を下します。
結合された結果に明示的な拒否が含まれている場合、リクエストは拒否されます。
結合された結果に許可が含まれている場合、リクエストは許可されます。
両方の結果が暗黙的な拒否である場合、プロセスは次のステップに進みます。
API タイプのチェック:API タイプによって次のステップが決まります。
管理 API (
GetService、PutBucket、PutLiveChannelなど):リクエストは拒否されます。データ API (
PutObject、GetObjectなど):ACL 評価に進みます。
オブジェクト ACL とバケット ACL のチェック:OSS は評価結果に基づいてリクエストを許可または拒否します。
オブジェクト ACL を評価する際、OSS はリクエスト元がバケットの所有者であるかどうか、およびリクエストタイプ (読み取りまたは書き込み) を考慮します。
オブジェクト ACL がバケットから継承するように設定されている場合、OSS はバケット ACL の評価に進みます。バケット ACL を評価する際、OSS はリクエスト元がバケットの所有者であるかどうかも考慮します。
匿名リクエストの権限付与フロー
匿名リクエストは、コントロールポリシー (該当する場合)、認証、および RAM ポリシーのチェックをスキップします。OSS は、バケットポリシーと ACL のみに基づいて権限を付与します。
権限付与フローの詳細は次のとおりです:
バケットポリシーのチェック:
拒否:リクエストは拒否されます。
許可:リクエストは許可されます。
無視 (ポリシーが設定されていないか、一致するルールがない場合):次のステップに進みます。
オブジェクト ACL とバケット ACL のチェック:
オブジェクト ACL が非公開の場合:リクエストは拒否されます。
オブジェクト ACL が公開読み取りまたは公開読み書きの場合:リクエストは許可されます。
オブジェクト ACL がバケットから継承するように設定されている場合:OSS はバケット ACL の評価に進みます。
バケット ACL が公開読み取りまたは公開読み書きの場合:リクエストは許可されます。
バケット ACL が非公開の場合:リクエストは拒否されます。