オブジェクト・ストレージ・オブジェクト

オブジェクト・ストレージ・バケットにコンパートメントにアップロードできるファイルまたは非構造化データであるオブジェクト・ストレージ・オブジェクトを管理する方法について学習します。

オブジェクト・ストレージ・サービスでは、オブジェクトとは、オブジェクト・ストレージネームスペース内のコンパートメント内のバケットにアップロードするファイルまたは非構造化データです。オブジェクトには、あらゆるタイプのデータ(たとえば、マルチメディア・ファイル、データ・バックアップ、静的Webコンテンツ、ログ)を指定できます。最大10 TiBのオブジェクトを格納できます。オブジェクトは単一のエンティティとして処理されます。データの編集またはオブジェクトへの追加はできませんが、オブジェクト全体の置換は可能です。

オブジェクト・ストレージでは、オブジェクトのバージョニングが可能です。これにより、バケットにアップロードした特定のバージョンのオブジェクトのアクセス可能でダウンロード可能なコピーが作成されます。オブジェクト・バージョニングは、不注意または削除からオブジェクトを保護します。詳細は、オブジェクト・ストレージのバージョニングを参照してください。

これらのトピックでは、単一バケット内のオブジェクトを管理する方法について説明します。別のバケットへのオブジェクトのコピーの詳細は、オブジェクトのコピーを参照してください。

次のオブジェクト・ストレージ・オブジェクト・タスクを実行できます:

コマンドライン・インタフェースを使用して、オブジェクトのグループに対して特定のタスクを一度に実行できます。詳細は、バルク・オブジェクト・タスクを参照してください。

必須IAMポリシー

Oracle Cloud Infrastructureを使用するには、管理者によってポリシーでセキュリティ・アクセス権が付与されている必要があります。このアクセス権は、コンソール、あるいはSDK、CLIまたはその他のツールを使用したREST APIのいずれを使用している場合でも必要です。権限を持っていない、または認可されていないというメッセージが表示された場合は、持っているアクセス権のタイプと作業しているコンパートメントを管理者に確認してください。

ポリシーを初めて使用する場合は、ポリシーの開始共通ポリシーを参照してください。

管理者の場合:

  • ポリシーオブジェクト・ストレージの管理者がバケットとオブジェクトを管理するにより、指定したグループは、バケットおよびオブジェクトを使用したすべてのことを実行できます。オブジェクトは常にバケットと同じコンパートメントに存在します。

  • オブジェクトに対してより制限的なポリシーを記述する必要がある場合は、inspect objectsを使用すると、バケット内のすべてのオブジェクトをリストし、特定のオブジェクトに対してHEAD操作を実行できます。これに対して、read objectsでは、オブジェクト自体をダウンロードできます。

  • 個別の権限を付与するより限定的なポリシーを作成するには:

    • ライフサイクル・ポリシーを使用して、ユーザーのかわりに以前のオブジェクト・バージョンを削除するには、OBJECT_VERSION_DELETEが必要です。

    • オブジェクトのストレージ層を変更するには、OBJECT_UPDATE_TIERが必要です。

オブジェクト・ストレージのユーザー権限の詳細は、オブジェクト・ストレージ、アーカイブ・ストレージおよびデータ転送の詳細を参照してください。

オブジェクトのIAMポリシー

バケット・レベルのアクセス制御では、セキュリティ・ニーズに十分でない場合があります。かわりに、オブジェクトの個別または接頭辞または接尾辞ベースのグループでより詳細な制御を行う必要があります。たとえば、特定のオブジェクトに作業リクエストを取得する権限があるグループに属している場合は、その操作に対する権限を明示的に付与するIdentity and Access Management IAMポリシーが必要です。

オブジェクト・レベルのIAMポリシーを使用すると、オブジェクト・ストレージ・バケット内のオブジェクトの特定のオブジェクトおよびサブセットに対する権限を付与できます。IAMポリシー変数target.object.nameを使用すると、テナンシ、コンパートメントおよびバケットで実行できる操作と同様に、認可および権限をオブジェクトに適用できます。例:

ALLOW GROUP object-authZ-op-group-ost-object TO manage objects IN TENANCY where any {target.object.name = 'ost-object-*', request.operation = 'GetObject'}

オブジェクト・レベルのIAMポリシーは、単一のバケットに多数の異なるデータセットがあり、複数のチームまたはワークロードによってアクセスされるビッグ・データおよびデータ・レイクのユースケースに特に役立ちます。

オブジェクト・レベルのIAMポリシーを作成するには、ポリシーの作成で説明されているステップに従います。次の構文を使用して、オブジェクト・レベルのIAMのポリシー・ステートメントを追加します:

ALLOW GROUP <group> TO manage objects IN TENANCY where all {target.object.name = '<object-pattern>', target.bucket.name = '<bucket_name>'}

サーバー上のオブジェクトに対するリクエストが到着すると、オブジェクト・レベルのIAMポリシーの認可が評価されます。

ノート

コンソールの使用時に、コンパートメント内のバケットをリストし、バケット内のオブジェクトをリストして特定のオブジェクトまたはオブジェクト・パターンをリストする権限が必要です。リストされているオブジェクトにアクセスするには、READ権限が必要です。

オブジェクト名またはパスがすでに知られており、CLIまたはAPIを使用してアクセスされている場合、これらのコンパートメントまたはバケットのアクセス権限は必要ありません。

ノート

適用するオブジェクト・ポリシーが有効になるまでに数分かかる場合があります。この遅延は、オブジェクト・ストレージ・リソースへのアクセスを制御する作成または更新するすべてのポリシーに適用されます。

既存のポリシーを更新して、オブジェクト・レベルのIAM権限を含めることもできます。「ポリシーの文の更新」を参照してください。オブジェクト・レベルのIAMポリシーは、既存のすべてのポリシー構成と互換性があります。

例1: バケット内のフォルダのグループへのフル・アクセスの許可:

ALLOW group test-group TO manage objects IN TENANCY where all {target.bucket.name = 'test-bucket', target.object.name = 'prod/*'} 

例2: バケット内のフォルダに対するグループへの読取り専用アクセスの許可:

ALLOW group test-group TO manage objects IN TENANCY where all {target.bucket.name = 'test-bucket', target.object.name = 'prod/*', any{request.permission='OBJECT_INSPECT', request.permission='OBJECT_READ'}}

例3: 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: バケット内のフォルダに対するグループへの読取りおよび書込みアクセスの許可(リストまたは上書きなし):

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', request.permission='OBJECT_READ'}}

例5: バケット内のオブジェクト・パターンに対する特定のユーザーに対するすべてのアクセスの許可:

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..exampleuniqueID'}

事前認証済リクエスト

事前認証済リクエストによって、ユーザーは独自の資格証明を持たずにバケットまたはオブジェクトにアクセスできるようになります。たとえば、ユーザーがAPIキーを所有せずにバケットにバックアップをアップロードするリクエストを作成できます。詳細は、オブジェクト・ストレージの事前認証済リクエストを参照してください。

オブジェクト名

他のリソースとは異なり、オブジェクトにはOracle Cloud識別子(OCIDs)がありません。かわりに、ユーザーはオブジェクトをアップロードする際にオブジェクト名を定義します。

オブジェクトに名前を付ける際は、次のガイドラインに従います:

  • 1から1024文字で指定します。

  • 有効な文字は、文字(大文字と小文字)、数字、およびライン・フィード、キャリッジ・リターン、NULL以外の文字です。

    重要

    バケット名およびオブジェクト名は大/小文字が区別されます。オブジェクト・ストレージでは、q3-field-assets.xslxとQ3-Field-Assets.XSLXを別々のオブジェクトとして処理します。

  • UTF-8エンコーディングが1024バイトを超えないUnicode文字のみを使用します。クライアントはURLエンコーディング文字を処理します。

  • 機密情報の入力は避けてください。

  • バケット内で名前を一意にします。オブジェクトにネーミングする際、バケット内の既存のオブジェクトの名前を使用しないでください。既存のオブジェクトを、新規オブジェクトまたは名前変更したオブジェクトの内容で上書きする場合を除きます。

ヒント

オブジェクト名には、名前の中に1つ以上のスラッシュ(/)文字を含めることができます。オブジェクト名にスラッシュを使用した階層の作成の詳細は、接頭辞および階層を使用したオブジェクト・ネーミングを参照してください。

接頭辞および階層を使用したオブジェクト・ネーミング

オブジェクト・ストレージ・ネームスペース内で、バケットおよびオブジェクトはフラットな構造に存在します。ただし、1つ以上のスラッシュ(/)を含む接頭辞文字列をオブジェクト名に追加することで、ディレクトリ構造をシミュレートできます。このようにすると、一度に1つのディレクトリをリストできます。これは、大規模なオブジェクトのセットをナビゲートする場合に役立ちます。

例:

marathon/finish_line.jpg
marathon/participants/p_21.jpg

オブジェクト名に接頭辞を追加した場合、次ができます:

  • CLIまたはAPIを使用して、階層の指定レベルですべてのオブジェクトの一括ダウンロードおよび一括削除を実行します。

  • コンソールを使用して、仮想フォルダ内のオブジェクトの階層ビューを表示します。前述の例では、marathonfinish_line.jpgという名前のオブジェクトを含むフォルダとして表示され、participantsp_21.jpgという名前のオブジェクトを含むmarathonのサブフォルダになります。階層の任意のレベルにオブジェクトを一括アップロードしたり、バケットまたはフォルダ内のすべてのオブジェクトを一括削除したりできます。

階層の指定レベルでの一括操作は、前のレベルのオブジェクトに影響しません。

オブジェクトに名前を付ける際には、デリミタなしで接頭辞文字列を使用することもできます。デリミタを使用して、コンソールの検索操作や、CLまたはAPIの特定の一括操作をオブジェクト名の接頭辞部分で照合することはできません。たとえば、次のオブジェクト名の文字列gloves_27_は、一括操作の実行時に照合目的のための接頭辞として機能します:

gloves_27_dark_green.jpg
gloves_27_light_blue.jpg	

コンソール、CLIまたはAPIを使用して一括アップロードを実行すると、アップロードするファイルの名前に接頭辞文字列を付加できます。

特定の管理インタフェースの階層および接頭辞文字列の詳細は、オブジェクト・ストレージ・バケットの個々のタスクを参照してください。

オプションのレスポンス・ヘッダーとメタデータ

オブジェクトをアップロードする場合、オプションのレスポンス・ヘッダーとユーザー定義メタデータを指定できます。レスポンス・ヘッダーは、オブジェクトがダウンロードされるときに、オブジェクト・ストレージからオブジェクト・ストレージ・クライアントに送信されるHTTPヘッダーです。ユーザー定義メタデータは、オブジェクトとともに格納される名前と値のペアです。コンソール、REST APIまたはCLIを使用してこれらのオプション属性を指定できます。

重要:

指定したレスポンス・ヘッダーまたはメタデータでは検証が実行されません。

次のレスポンス・ヘッダーの値を指定できます:

  • Content-Disposition

    オブジェクトの表示専用情報を定義します。このヘッダーに値を指定しても、オブジェクト・ストレージの動作には影響しません。オブジェクトを読み取るプログラムは、指定された値に基づいて実行する内容を決定します。たとえば、次のヘッダーを使用して、ユーザーがブラウザでカスタム・ファイル名を持つオブジェクトをダウンロードできます:

    attachment; filename="fname.ext"

    詳細は、https://tools.ietf.org/html/rfc2616#section-19.5.1を参照してください。

  • Cache-Control

    オブジェクトのキャッシュ動作を定義します。このヘッダーに値を指定しても、オブジェクト・ストレージの動作には影響しません。オブジェクトを読み取るプログラムは、指定された値に基づいて実行する内容を決定します。たとえば、次のヘッダーを使用して、キャッシュ制限が必要なオブジェクトを識別できます:

    no-cache, no-store

    詳細は、https://tools.ietf.org/html/rfc2616#section-14.9を参照してください。

ユーザー定義メタデータを名前と値のペアの形式で指定します。ユーザー定義メタデータ名は格納され、opc-meta-という必須の接頭辞を使用してオブジェクト・ストレージ・クライアントに返されます。

オブジェクト・ライフサイクル管理

オブジェクト・ライフサイクル管理では、コミットされていないマルチパート・アップロードの削除、別のストレージ層へのオブジェクトの移動、および特定のバケット内でサポートされているリソースをユーザーにかわって削除する処理を自動的に管理できます。これらの自動アクションは、ユーザーが定義および管理するルールに基づきます。この機能の詳細は、オブジェクト・ストレージのオブジェクト・ライフサイクル管理を参照してください。

マルチパートのアップロードおよびダウンロード

Oracle Cloud Infrastructure Object Storageサービスは、オブジェクトのマルチパートのアップロードおよびダウンロードをサポートしています。

リソースのモニタリング

メトリック、アラームおよび通知を使用して、Oracle Cloud Infrastructureリソースのヘルス、容量およびパフォーマンスをモニターできます。詳細は、モニタリングおよび通知を参照してください。

オブジェクトのモニタリングの詳細は、オブジェクト・ストレージ・メトリックを参照してください。

イベント・サービスを使用したオブジェクトの自動化の作成

イベント・タイプ、ルールおよびアクションを使用して、Oracle Cloud Infrastructureリソースの状態変更に基づいて自動化を作成できます。詳細は、イベントの概要を参照してください。