事前認証済リクエストの使用
事前認証済リクエストは、リクエスト作成者がオブジェクトにアクセスする権限を持っている場合、ユーザーが独自の資格証明を持たずにバケットまたはオブジェクトにアクセスできるようにする手段を提供します。
たとえば、ユーザーがAPIキーを所有せずにバケットにバックアップをアップロードする操作をサポートするリクエストを作成できます。 または、ビジネス・パートナがAPIキーを所有せずにバケット内の共有データを更新できるリクエストを作成できます。
事前認証済リクエストの作成時に、一意のURLが生成されます。 このURLを提供するユーザーは、curlやwgetなどの標準HTTPツールを使用して、事前認証済リクエストで識別されるObject Storageリソースにアクセスできます。
重要:
バケットまたはオブジェクトへの事前認証済アクセスのビジネス要件およびセキュリティ上の影響を評価します。
事前認証済リクエストURLは、リクエストで識別されたターゲットへのURLアクセス権を持つすべてのユーザーに提供します。 URLの配布を慎重に管理します。
概念の詳細は、「Oracle Private Cloud Applianceコンセプト・ガイド」の「オブジェクト・ストレージの概要」の項を参照してください。
事前認証済リクエストのリスト
この手順を使用して、その他のコマンドに必要な事前認証済リクエストIDの取得など、事前認証済リクエストに関する情報を取得します。
ノート:
事前認証済リクエストのリストには、事前認証済リクエストの作成時にシステムによって提供される一意のURLは表示されません。 URLは作成時にのみ表示され、後で取得することはできません。
OCI CLIの使用
-
バケット内のすべての事前認証済リクエストのリスト
-
コマンドを実行するために必要な情報を収集します。
-
ネームスペース(「オブジェクト・ストレージ・ネームスペースの取得」を参照)
-
バケット名(
oci os bucket list
)、「バケットのリスト」を参照
-
-
コマンドを実行します。
構文(1行に入力):
oci os preauth-request list --namespace-name <object_storage_namespace> --bucket-name <bucket_name>
例:
oci os preauth-request list \ --namespace-name examplenamespace \ --bucket-name MyBucket { "data": [ { "access-type": "ObjectRead", "id": "5299a6f9-55c7-4805-88ca-b270c9a9e94f", "name": "PAR_ObjRead", "object-name": "compute.log", "time-created": "2021-06-10T20:34:01+00:00", "time-expires": "2021-07-30T23:55:00+00:00" }, { "access-type": "AnyObjectWrite", "id": "783cd56b-9df5-4518-aacf-f523deae5102", "name": "PAR-all-objectsRW", "object-name": null, "time-created": "2021-06-10T20:49:11+00:00", "time-expires": "2021-07-30T23:54:59+00:00" }, { "access-type": "ObjectRead", "id": "2ea48624-16ed-4d81-95ca-b23ea750ed3d", "name": "PAR-OS-READ", "object-name": "backup.log", "time-created": "2021-06-10T21:16:47+00:00", "time-expires": "2021-07-30T23:55:00+00:00" } ] }
-
-
特定の事前認証済リクエストの詳細の取得
-
コマンドを実行するために必要な情報を収集します。
-
ネームスペース(「オブジェクト・ストレージ・ネームスペースの取得」を参照)
-
バケット名(
oci os bucket list
)、「バケットのリスト」を参照 -
Preauth ID (
oci os preauth-request list
)、「事前認証済リクエストのリスト」を参照
-
-
コマンドを実行します。
構文(1行に入力):
oci os preauth-request get --namespace-name <object_storage_namespace> --bucket-name <bucket_name> --par-id <preauth-id>
例:
oci os preauth-request get \ --namespace-name examplenamespace \ --bucket-name MyBucket \ --par-id 5299a6f9-55c7-4805-88ca-b270c9a9e94f { "data": { "access-type": "ObjectRead", "id": "5299a6f9-55c7-4805-88ca-b270c9a9e94f", "name": "PAR_ObjRead", "object-name": "compute.log", "time-created": "2021-06-10T20:34:01+00:00", "time-expires": "2021-07-30T23:55:00+00:00" } }
-
バケット内のすべてのオブジェクトに対する事前認証済リクエストの作成
OCI CLIの使用
-
コマンドを実行するために必要な情報を収集します。
-
ネームスペース(「オブジェクト・ストレージ・ネームスペースの取得」を参照)
-
バケット名(
oci os bucket list
)、「バケットのリスト」を参照 -
この事前認証済リクエストの名前。
-
アクセス・タイプは、次のいずれかのアイテムです:
-
AnyObjectRead
は、バケット内のすべてのオブジェクトに対する読取りを許可します。 -
AnyObjectWrite
は、バケット内のすべてのオブジェクトへの書込みを許可します。 -
AnyObjectReadWrite
では、バケット内のすべてのオブジェクトに対する読取りと書込みが許可されます。
ノート:
バケット内のオブジェクトのリストは、デフォルトでは拒否されます。
--access-type
がAnyObjectRead
またはAnyObjectReadWrite
の場合、ユーザーがバケット内のオブジェクトをリストできる事前認証済リクエストの作成時に、オプションの--bucket-listing-action ListObjects
パラメータを指定できます。 -
-
期限切れ時間は必須であり、RFC 3339タイムスタンプである必要があります。 たとえば:
2017-09-01T00:09:51.000+02:00
。
-
-
コマンドを実行します。
構文(1行に入力):
oci os preauth-request create --namespace-name <object_storage_namespace> --bucket-name <bucket_name> --name <preauthenticated_request_name> --access-type <access_value> --time-expires <timestamp>
この例では、バケット内のすべてのオブジェクトに対する読取りと書込みを許可する事前認証済リクエストを作成します:
oci os preauth-request create \ --namespace-name examplenamespace \ --bucket-name MyBucket \ --name PAR-all-objectsRW \ --access-type AnyObjectWrite \ --time-expires '2021-07-30 23:55' { "data": { "access-type": "AnyObjectWrite", "access-uri": "/p/KOCRWzqBilJmIsaBbJNelKLWcOxwRLq/n/examplenamespace/b/MyBucket/o/", "id": "783cd56b-9df5-4518-aacf-f523deae5102", "name": "PAR-all-objectsRW", "object-name": null, "time-created": "2021-06-10T20:49:11+00:00", "time-expires": "2021-07-30T23:54:59+00:00" } }
-
重要- access-uriを永続ストレージにコピーします。
システムによって提供される一意の
access-uri
は、ユーザーがリクエスト・ターゲットとして指定されたバケットまたはオブジェクトにアクセスするために使用できるURLを作成する唯一の方法です。The
access-uri
「作成時にのみ表示され、後で取得することはできません。」 -
一意の
access-uri
からURLを作成します。「事前認証済リクエストURLの作成」を参照してください。
特定のオブジェクトの事前認証済リクエストの作成
OCI CLIの使用
-
コマンドを実行するために必要な情報を収集します。
-
ネームスペース(「オブジェクト・ストレージ・ネームスペースの取得」を参照)
-
バケット名(
oci os bucket list
)、「バケットのリスト」を参照 -
この事前認証済リクエストの名前。
-
アクセス・タイプは、次のいずれかの値です:
-
AnyObjectRead
は、バケット内のすべてのオブジェクトに対する読取りを許可します。 -
AnyObjectWrite
は、バケット内のすべてのオブジェクトへの書込みを許可します。 -
AnyObjectReadWrite
では、バケット内のすべてのオブジェクトに対する読取りと書込みが許可されます。
ノート:
バケット内のオブジェクトのリストは、デフォルトでは拒否されます。
--access-type
がAnyObjectRead
またはAnyObjectReadWrite
の場合、ユーザーがバケット内のオブジェクトをリストできる事前認証済リクエストの作成時に、オプションの--bucket-listing-action ListObjects
パラメータを指定できます。 -
-
期限切れ時間は必須であり、RFC 3339タイムスタンプである必要があります。 たとえば:
2017-09-01T00:09:51.000+02:00
。 -
オブジェクト名または
null
-
-
構文(1行に入力):
oci os preauth-request create --namespace-name <object_storage_namespace> --bucket-name <bucket_name> --name <preauthenticated_request_name> --access-type <access_value> --time-expires <timestamp> -on <object_name_or_null>
例:
oci os preauth-request create --namespace-name examplenamespace \ --bucket-name MyBucket --name PAR-OS-READ --access-type ObjectRead --time-expires '2021-07-30 23:55' -on compute.log { "data": { "access-type": "ObjectRead", "access-uri": "/p/eWvgyLcDthhvVUNkVaejymgDTOILHli/n/examplenamespace/b/MyBucket/o/compute.log", "id": "2ea48624-16ed-4d81-95ca-b23ea750ed3d", "name": "PAR-OS-READ", "object-name": "compute.log", "time-created": "2021-06-10T21:16:47+00:00", "time-expires": "2021-07-30T23:55:00+00:00" } }
-
重要- access-uriを永続ストレージにコピーします。
システムによって提供される一意の
access-uri
は、ユーザーがリクエスト・ターゲットとして指定されたバケットまたはオブジェクトにアクセスするために使用できるURLを作成する唯一の方法です。The
access-uri
「作成時にのみ表示され、後で取得することはできません。」 -
一意の
access-uri
からURLを作成します。「事前認証済リクエストURLの作成」を参照してください。
事前認証済リクエストURLの作成
一意のaccess-uri
を設定した後、ユーザーが事前認証済オブジェクトにアクセスできるようにするアクセスURLを作成できます。
-
この構文を使用してURLを作成します。
構文:
https://<pca_fqdn><access-uri>
説明:
-
<pca_fqdn>- アプライアンスの完全修飾ドメイン名。
-
<access-uri>- 次のいずれかのプロシージャから取得されたアクセスURI:
例:
https://mypca01.example.com/p/MrxLFkKlFkIlNDhvhcZnrjbUAlsoeah/n/mynamespace/b/my-bucket/o/my-object
-
事前認証済リクエストの削除
OCI CLIの使用
-
コマンドを実行するために必要な情報を収集します。
-
ネームスペース(「オブジェクト・ストレージ・ネームスペースの取得」を参照)
-
バケット名(
oci os bucket list
)、「バケットのリスト」を参照 -
Preauth ID (
oci os preauth-request list
)、「事前認証済リクエストのリスト」を参照
-
-
構文(1行に入力):
oci os preauth-request delete --namespace-name <object_storage_namespace> --bucket-name <bucket_name> --par-id <preauthenticated_request_id>
例:
oci os preauth-request delete \ --namespace-name examplenamespace \ --bucket-name MyBucket \ --par-id 2ea48624-16ed-4d81-95ca-b23ea750ed3d Are you sure you want to delete this resource? [y/N]: y
事前認証済リクエストのオブジェクトのリスト
一意のリクエストURLを使用すると、curlなどのツールを使用して、事前認証済リクエストを使用してデータをリスト、読取りおよび書込みできます。
curlの使用
-
構文(1行に入力):
$ curl -X GET <unique-PAR-URL>
例:
$ curl -X GET \ https://objectstorage.us-example-1.example.com/p/CoO26YkSARiRevWlDWJD_QUvtFPUocn/n/examplenamespace/b/MyParBucket/o/ {"objects":[{"name":"InfoWorld DeepDive - Tips for Git and GitHub Users.pdf"},{"name":"OCI_User_Guide.pdf"}, {"name":"OracleCorporateTerminologyUsageGuideRedwood.pdf"},{"name":"VPN.png"},{"name":"eventslogreference.htm"}, {"name":"functionslogreference.htm"},{"name":"glob.txt"},{"name":"loadbalancerreference.htm"},{"name":"objectstoragelogreference.htm"}, {"name":"servicechanges.html"},{"name":"servicediscovery.dita"},{"name":"serviceessentials.html"},{"name":"servicelogreference.htm"}, {"name":"services.html"}]}
事前認証済リクエストを使用したオブジェクトのアップロード
一意のリクエストURLを使用すると、curlなどのツールを使用して、事前認証済リクエストを使用してデータの読取りと書込みを行うことができます。
curlの使用
-
構文(1行に入力):
$ curl -X PUT --data-binary '@<local-filename>' <unique-PAR-URL>
例:
$ curl -X PUT \ --data-binary '@using-dita-guide.pdf' \ https://objectstorage.us-example-1.example.com/p/lnaqMuXWef_lhTxCiS9ngCw/n/examplenamespace/b/MyParBucket/o/using-dita-guide.pdf
事前認証済リクエストを使用したオブジェクトのダウンロード
一意のリクエストURLを使用すると、curlなどのツールを使用して、事前認証済リクエストを使用してデータの読取りと書込みを行うことができます。
curlの使用
-
構文(1行に入力):
$ curl -X GET <unique-PAR-URL>
例:
$ curl -X GET \ https://objectstorage.example.com/p/tnjDhazP9o6s2KzLyFUxILQzSamEp/n/examplenamespace/b/MyParBucket/o/OCI_User_Guide.pdf '@data.1''@data.2''@data.3'