※ 本記事は、Rajiv Gargによる”Announcing object level granular access control for OCI Object Storage“を翻訳したものです。
2024年5月14日
本日、すべての商用リージョンで、Oracle Cloud Infrastructure (OCI) Object Storageサービスのオブジェクト・レベルのきめ細かいアクセス制御の提供開始を発表しました。Object アイデンティティおよびアクセス管理(IAM)を使用すると、オブジェクト・レベルでアクセス制御ポリシーを設定し、Hadoop、データ・レイク、モノのインターネット(IoT)などのワークロードを有効にできます。このワークロードは、複数のアプリケーションで数百万ものオブジェクトと1つのバケットを共有します。
バケット・レベルでアクセス制御ポリシーを作成し、バケット内のすべてのオブジェクトに対するアクセス制御を管理できます。ただし、Hadoopなどのワークロードでは、数百万のオブジェクトが数個の大きなバケットに書き込まれ、その後、数十から数百もの上位レベルのアプリケーションおよびユーザーがアクセスして処理されます。これらの各アプリケーションおよびユーザーは、個々のオブジェクトに対して一意のアクセス権限セットを必要とします。これで、Object IAMを使用して、単一のオブジェクトの粒度で権限を制御するアクセス制御ポリシーを作成し、各ユーザーまたはアプリケーションで許可される操作を指定できます。
Object IAMでは、次の機能が有効になります:
- 詳細な制御: 個々のオブジェクトまたはオブジェクトのグループを詳細に制御できます。
- セキュリティの強化: オブジェクト・レベルのアクセス制御を使用して、取得、作成、削除、名前変更、コピーなどの特定の操作セットへのユーザー・アクセスを制限できます。
大規模なデータレイクのお客様は、この機能を次の戦略で使用できます。たとえば、共有バケットに3つの異なるデータセット(共通パターンを持つディレクトリまたはオブジェクト名)があり、ユーザーおよびグループに異なるレベルのデータ・アクセスを付与する必要がある場合、時間の経過とともに変化する可能性があります:
- データセット1: 現在のプロジェクトからのアクティブなデータ
- グループ1にはバケット内のデータセット1への読取りおよび書込みアクセス権が付与されます。これは、このグループがデータを生成してトレンド分析用に処理するためです。
- グループ2には、機械学習(ML)にデータを使用するため、データセット1への読取りおよびコピー・アクセス権が付与されます。
- グループ3には、複数のデータセットにわたるデータを処理するための読取り専用アクセス権が付与されます。
- データセット 2: 以前に完了したプロジェクトのデータ。
- グループ3には、複数のデータセットにわたるデータを処理するための読取り専用アクセス権が付与されます。
- データセット2への書き込みまたは削除アクセス権を持つユーザーはいません。
- データセット 3: 別のプロジェクトからのアクティブなデータ。
- ユーザーYは、リスト、読取り、書込み、削除、コピーなど、データセットへのフル・アクセス権を持ちます。

オブジェクトIAMポリシーの構成
Object Storage管理者は、Oracle Cloudコンソールから、またはCLI、APIまたはTerraformを使用して、バケットのオブジェクト・レベル・ポリシーを設定できるようになりました。オブジェクト・レベルのポリシーを作成するプロセスは、バケット・レベルのポリシーの場合と同じです。新しいIAMポリシー変数target.object.nameを使用すると、認可および権限をオブジェクトに適用できます。
ポリシーはアクセスのみを許可し、アクセスを拒否することはできません。アクセス拒否は暗黙的であるため、デフォルトでは、ユーザーは何も実行できず、ポリシーを介してアクセス権を付与する必要があります。オブジェクトIAMポリシーが存在しない場合、ユーザーはコンパートメント・レベルまたはバケット・レベルで設定されたポリシーに基づいてアクセス権を持ちます。ポリシーは累積され、継承されます(コンパートメント、バケット、オブジェクト)。
新しいポリシーを作成するか、既存のポリシーを管理するには、次のステップを実行します:
- コンソールで、「Identity & Security」メニューに移動し、「Policies」を選択します。ポリシーのリストが表示されます。
- 「create a policy」、あるいは「existing policy」を選択して詳細を表示します。
- 「Policy Builder」を使用するか、「Edit Policy Statements」をクリックしてルールを追加します。


既存のポリシーの表示および編集に加えて、削除することもできます。
ポリシー・ステートメントは常にAllowという言葉で始まります。次の例を参照してください:
- 例 1: バケット’test-bucket’内のフォルダ’prod’のグループへのフル・アクセスを許可します:
- Allow group test-group TO manage objects IN TENANCY where all {target.bucket.name = ‘test-bucket’, target.object.name = ‘prod/*’}
- 例 2: バケット’test-bucket’内のフォルダ’dev’のグループへの読取り専用アクセスを許可します:
- Allow group test-group TO manage objects IN TENANCY where all {target.bucket.name = ‘test-bucket’, target.object.name = ‘dev/*’, any{request.permission=’OBJECT_INSPECT’, request.permission=’OBJECT_READ’}}
- 例 3: バケット’test-bucket’内のフォルダ’prod’のグループに対する書込み1回(上書きなし)および読取りまたは削除のアクセスを許可:
- Allow group test-group TO manage objects IN TENANCY where all {target.bucket.name = ‘test-bucket’, target.object.name = ‘prod/*’, any{request.permission=’OBJECT_CREATE’}}
- 例 4: バケット’test-bucket’内のフォルダ’dev’のグループへの読取りおよび書込みアクセス(リストまたは上書きなし):
- Allow group test-group TO manage objects IN TENANCY where all {target.bucket.name = ‘test-bucket’, target.object.name = ‘dev/*’, any{request.permission=’OBJECT_CREATE’, request.permission=’OBJECT_READ’}}
- 例 5: バケット’test-bucket’内のオブジェクト・パターン’*.pdf’の特定のユーザーに対するすべてのアクセス権を付与:
- Allow any-user TO manage objects IN TENANCY where all {target.bucket.name = ‘test-bucket’, target.object.name = ‘*.pdf’, request.user.id=’ocid1.user.oc1..aaaaaaaaasdasdasdasdssltbz7dwqb2h3qd4lrf6enng4mtfu5gio6il57a’}
ポリシーを構成すると、オブジェクト・レベルのアクセス制御が有効になります。ほとんどの場合、ポリシーは5分以内にアクティブになります。ポリシー認可は、オブジェクトに対するリクエストが到着したときに評価されるため、ポリシーの伝播後にポリシー変更が適用されます。オブジェクトIAMポリシーは、既存オブジェクトと新規オブジェクトの両方に適用されます。
まとめ
特定のユーザーまたはグループによる個々のオブジェクトまたはオブジェクト・セットでのアクセスを許可する詳細なレベル制御により、セキュリティ状況を改善できるようになりました。この機能の使用を開始するには、新しい変数target.object.nameを使用して、オブジェクト・レベルでIAMポリシーを追加するだけです。この変数は、OCI Object Storageの高パフォーマンスに依存するお客様のワークロードには影響しません。
Oracle Cloud Infrastructureをまだ使用していない場合は、無料トライアルにサインアップできます。
詳細は、次のリソースを参照してください:
