Criando uma Solicitação Pré-Autenticada no Serviço Object Storage
Crie uma solicitação pré-autenticada para todos os objetos em um bucket do serviço Object Storage ou para um objeto específico.
Para limitar o escopo de uma solicitação pré-autenticada apenas a objetos que começam com um prefixo específico, consulte Creating a Pre-Authenticated Request for Objects with a Specific Prefix.
Para obter mais informações sobre solicitações pré-autenticadas, consulte Usando Solicitações Pré-Autenticadas.- Importante
O URL exclusivo fornecido pelo sistema quando você cria uma solicitação pré-autenticada é a única forma de um usuário acessar o destino da solicitação. O URL é exibido somente no momento da criação e não é armazenado no serviço Object Storage. Não é possível acessar e recuperá-lo novamente depois de fechar a caixa de diálogo Detalhes da Solicitação Pré-Autenticada. Certifique-se de armazená-lo em um lugar seguro e recuperável.
Use o comando oci os preauth-request create e os parâmetros necessários para criar uma solicitação pré-autenticada:
oci os preauth-request create --bucket-name bucket_name --name name --access-type access_type --time-expires expiration_timestamp [OPTIONS]
O parâmetro
name
é o nome da solicitação pré-autenizada. Evite inserir informações confidenciais.O valor do parâmetro
access-type
pode ser um dos seguintes:-
AnyObjectRead
: Permite leituras de todos os objetos no bucket. -
AnyObjectWrite
: Permite gravações em todos os objetos do bucket. -
AnyObjectReadWrite
: Permite leituras e gravações em todos os objetos do bucket.
O valor
expiration_timestamp
é necessário para usar um timestamp RFC 3339. Por exemplo:2021-04-02T22:25:27.322000+00:00
.Por exemplo:
oci os preauth-request create --bucket-name MyParBucket --name MyAllObjectsReadWritePAR --access-type AnyObjectReadWrite --time-expires="2022-11-21T23:00:00+00:00" { "data": { "access-type": "AnyObjectReadWrite", "access-uri": "/p/2WOshPVWv9uqIqy6abokChGEXYdCZ8l75CoO26YkSARiRevWlDWJD_QUvtFPUocn/n/MyNamespace/b/MyParBucket/o/", "id": "QgT6f1skUMbXDhpXKQ4BRX9u7ci8AAJ7f9OGzgdEkNJ3XQmHzeN/kDhLEbN2HvPn", "name": "MyAllObjectsReadWritePAR", "object-name": null, "time-created": "2021-04-02T22:25:27.322000+00:00", "time-expires": "2022-11-21T23:00:00+00:00"
Listando Ojeções
A listagem de objetos é negada por padrão. Se
--access-type
forAnyObjectRead
ouAnyObjectReadWrite
, você poderá especificar o parâmetro--bucket-listing-action ListObjects
opcional ao criar a solicitação pré-autenticada que permite aos usuários listar os objetos no bucket.Por exemplo, para criar uma solicitação pré-autenticada que permita acesso de leitura e gravação a todos os objetos no bucket chamadoMyParBucket
:oci os preauth-request create --namespace MyNamespace --bucket-name MyParBucket --name MyAllObjectsReadWritePAR --access-type AnyObjectReadWrite --time-expires="2022-11-21T23:00:00+00:00" --bucket-listing-action ListObjects { "data": { "access-type": "AnyObjectReadWrite", "access-uri": "/p/2WOshPVWv9uqIqy6abokChGEXYdCZ8l75CoO26YkSARiRevWlDWJD_QUvtFPUocn/n/MyNamespace/b/MyParBucket/o/", "bucket-listing-action": "ListObjects", "id": "QgT6f1skUMbXDhpXKQ4BRX9u7ci8AAJ7f9OGzgdEkNJ3XQmHzeN/kDhLEbN2HvPn", "name": "MyAllObjectsReadWritePAR", "object-name": null, "time-created": "2021-04-02T22:25:27.322000+00:00", "time-expires": "2022-11-21T23:00:00+00:00" } }
Importante
O
access-uri
fornecido pelo sistema quando você cria uma solicitação pré-autenticada é o elemento-chave do URL que você precisa criar para fornecer ao usuário acesso ao bucket de destino. Copie oaccess-uri
para o armazenamento durável. Oaccess-uri
é exibido somente no momento da criação e não pode ser recuperado posteriormente.O URL da solicitação pré-autenticada exclusivo fornecido aos usuários para o exemplo anterior é criado da seguinte forma:
https://objectstorage.region_identifier.oraclecloud.comaccess_uri
Consulte Sobre Regiões e Domínios de Disponibilidade para obter a lista de identificadores de região válidos.
Por exemplo, veja a seguir o URL completo da solicitação que permite leituras e gravações em todos os objetos no bucket chamado
MyParBucket
:https://objectstorage.us-phoenix-1.oraclecloud.com/p/2WOshPVWv9uqIqy6abokChGEXYdCZ8l75CoO26YkSARiRevWlDWJD_QUvtFPUocn/n/MyNamespace/b/MyParBucket/o/
Veja aqui um exemplo de como usar curl para executar a operação
PUT
para um objeto usando a solicitação pré-autenticada que permite leituras e gravações em todos os objetos no bucket chamadoMyParBucket
e tem objetos de listagem ativados:$ curl -X PUT --data-binary '@edit-lifecycle-rules.pdf' https://objectstorage.us-phoenix-1.oraclecloud.com/p/l04eqXvxQ5HcnrXkWS8Kdf4mS812KLDyG_dbArXa8hDdHssXTKiUD0w2HNCEDS4W/n/MyNamespace/b/MyParBucket/o/edit-lifecycle-rules.pdf
Veja um exemplo de uso de curl para objetos
GET
usando a mesma solicitação pré-autenticada:$ curl -X GET https://objectstorage.us-phoenix-1.oraclecloud.com/p/2WOshPVWv9uqIqy6abokChGEXYdCZ8l75CoO26YkSARiRevWlDWJD_QUvtFPUocn/n/MyNamespace/b/MyParBucket/o/ {"objects":[{"name":"InfoWorld DeepDive - Tips for Git and GitHub Users.pdf"},{"name":"OCISG_README.txt"},{"name":"OCI_User_Guide.pdf"},{"name":"OracleCorporateTerminologyUsageGuideRedwood.pdf"},{"name":"VPN.png"},{"name":"eventslogreference.htm"},{"name":"flowlogreference.htm"},{"name":"functionslogreference.htm"},{"name":"glob.txt"},{"name":"loadbalancerreference.htm"},{"name":"objectstoragelogreference.htm"},{"name":"replication.txt"},{"name":"troubleshooting.txt"},{"name":"udx-1494-lifecycle-rule-glob.pdf"}]}
Observe que
GET
lista a operaçãoPUT
recente paraedit-lifecycle-rules.pdf
e todos os outros objetos no bucket. Opcionalmente, você pode usar o parâmetro de consultafields
para incluir também os campossize
(tamanho do objeto em bytes),etag
,md5
,timeCreated
(data e hora da criação do objeto),timeModified
(data e hora da modificação do objeto),storageTier
earchivalState
. Consulte Como Obter uma Lista de Objetos para obter mais detalhes.Criando uma Solicitação Pré-autenticada para um Objeto Específico
Inclua o parâmetro
object-name
e o nome do objeto para criar uma solicitação pré-autenticada para um objeto específico. Por exemplo, para criar uma solicitação pré-autenticada que permita leituras e gravações em um objeto chamadoOCI_User_Guide.pdf
no bucket chamadoMyParBucket
, execute o seguinte comando da CLI:oci os preauth-request create --bucket-name MyParBucket --name MyObjectReadWritePAR --access-type ObjectReadWrite --object-name OCI_User_Guide.pdf --time-expires="2022-11-21T23:00:00+00:00" { "data": { "access-type": "ObjectReadWrite", "access-uri": "/p/v0YC_6i3NamyrKlIds0SKnWUMQLw_PFolSyGCpjVUJ6h_A1tnkXJ9VRcuQZTgjRa/n/MyNamespace/b/MyParBucket/o/OCI_User_Guide.pdf", "bucket-listing-action": null, "id": "vNObHUdqwf7pfCq9pup/LlMLTLxBt2N2OCKrGwimLFOoJlVfxj/dlESbxyd54vpf:OCI_User_Guide.pdf", "name": "MyObjectReadWritePAR", "object-name": "OCI_User_Guide.pdf", "time-created": "2021-04-01T14:37:26.869000+00:00", "time-expires": "2022-11-21T23:00:00+00:00" } }
O URL da solicitação pré-autenticada exclusivo fornecido aos usuários para o exemplo anterior é criado da seguinte forma:
https://objectstorage.region_ID.oraclecloud.comaccess_uri
Por exemplo, veja o URL completo da solicitação que permite leituras e gravações em um objeto chamado
OCI_User_Guide.pdf
no bucket chamadoMyParBucket
:https://objectstorage.us-phoenix-1.oraclecloud.com/p/v0YC_6i3NamyrKlIds0SKnWUMQLw_PFolSyGCpjVUJ6h_A1tnkXJ9VRcuQZTgjRa/n/MyNamespace/b/MyParBucket/o/OCI_User_Guide.pdf
Veja um exemplo de como usar curl para operações
PUT
para um objeto utilizando a solicitação pré-autenticada que permite leituras e gravações no objeto de destino chamadoOCI_User_Guide.pdf
no bucket chamadoMyParBucket
:$ curl -X PUT --data-binary '@OCI_User_Guide.pdf' https://objectstorage.us-phoenix-1.oraclecloud.com/p/v0YC_6i3NamyrKlIds0SKnWUMQLw_PFolSyGCpjVUJ6h_A1tnkXJ9VRcuQZTgjRa/n/MyNamespace/b/MyParBucket/o/OCI_User_Guide.pdf
Veja um exemplo de como usar curl para operações
GET
para o objeto de destino usando a mesma solicitação pré-autenticada:$ curl -X GET https://objectstorage.us-phoenix-1.oraclecloud.com/p/v0YC_6i3NamyrKlIds0SKnWUMQLw_PFolSyGCpjVUJ6h_A1tnkXJ9VRcuQZTgjRa/n/MyNamespace/b/MyParBucket/o/OCI_User_Guide.pdf '@OCI_User_Guide.pdf'
Criando uma Solicitação Pré-autenticada para um Objeto Específico com Prefixo
Inclua o parâmetroobject-name
e o prefixo para criar uma solicitação pré-autenticada para todos os objetos cujos nomes correspondam ao prefixo especificado. Por exemplo, para criar uma solicitação autenticada que permita leituras e gravações em objetos com o prefixoservice
no bucket chamadoMyParBucket
:oci os preauth-request create --bucket-name MyParBucket --name PrefixedObjectsReadWritePAR --access-type AnyObjectReadWrite --object-name service --time-expires "2022-11-21T23:00:00+00:00" --bucket-listing-action ListObjects { "data": { "access-type": "AnyObjectReadWrite", "access-uri": "/p/l04eqXvxQ5HcnrXkWS8Kdf4mS812KLDyG_dbArXa8hDdHssXTKiUD0w2HNCEDS4W/n/MyNamespace/b/MyParBucket/o/", "bucket-listing-action": "ListObjects", "id": "YOExDlFsNYBNEwF8Uo4aK8WHiz59enVQm1aID+4cxFobgcaofVbZkg371rxK+6Vb", "name": "PrefixedObjectsReadWritePAR", "object-name": "service", "time-created": "2021-04-01T15:35:40.609000+00:00", "time-expires": "2022-11-21T23:00:00+00:00" } }
Especifique o prefixo a ser correspondente no parâmetro
--object-name
:- É possível especificar um prefixo que inclua uma ou mais barras (/) para corresponder a nomes de objeto que simulem uma hierarquia ou uma estrutura de diretório.
- Você pode especificar uma string de prefixo sem um delimitador que corresponda aos caracteres mais à esquerda do nome do objeto.
O URL da solicitação pré-autenticada exclusivo fornecido aos usuários para o exemplo anterior é criado da seguinte forma:
https://objectstorage.<region_identifier>.oraclecloud.com<access-uri>
Consulte Sobre Regiões e Domínios de Disponibilidade para obter a lista de identificadores de região válidos.
Por exemplo, este é o URL completo da solicitação que permite leituras e gravações em objetos com o prefixo
service
no bucket chamadoMyParBucket
:https://objectstorage.us-phoenix-1.oraclecloud.com/p/l04eqXvxQ5HcnrXkWS8Kdf4mS812KLDyG_dbArXa8hDdHssXTKiUD0w2HNCEDS4W/n/MyNamespace/b/MyParBucket/o/
Quando você cria uma solicitação pré-autenticada que limita o escopo a objetos com um prefixo específico, os usuários da solicitação só podem executar as operações
GET
ePUT
para objetos com o nome do prefixo especificado na solicitação. Falha ao tentar executar a operaçãoGET
ouPUT
para um objeto sem ou com outro prefixo.Veja aqui um exemplo de como usar curl para a operação
PUT
para um objeto usando a solicitação pré-autenticada que permite leituras e gravações em objetos com o prefixoservice
no bucket chamadoMyParBucket
:$ curl -X PUT --data-binary '@servicediscovery.dita' https://objectstorage.us-phoenix-1.oraclecloud.com/p/l04eqXvxQ5HcnrXkWS8Kdf4mS812KLDyG_dbArXa8hDdHssXTKiUD0w2HNCEDS4W/n/MyNamespace/b/MyParBucket/o/servicediscovery.dita
Veja um exemplo de uso de curl para objetos
GET
usando a mesma solicitação pré-autenticada:$ curl -X GET https://objectstorage.us-phoenix-1.oraclecloud.com/p/l04eqXvxQ5HcnrXkWS8Kdf4mS812KLDyG_dbArXa8hDdHssXTKiUD0w2HNCEDS4W/n/MyNamespace/b/MyParBucket/o/ {"objects":[{"name":"servicechanges.html"},{"name":"servicediscovery.dita"},{"name":"serviceessentials.html"},{"name":"servicelogreference.htm"},{"name":"services.html"}]}
Observe que
GET
lista oPUT
recente paraservicediscovery.dita
e todos os outros objetos com o prefixoservice
. Opcionalmente, você pode usar o parâmetro de consultafields
para incluir também os campossize
(tamanho do objeto em bytes),etag
,md5
,timeCreated
(data e hora da criação do objeto),timeModified
(data e hora da modificação do objeto),storageTier
earchivalState
. Consulte Como Obter uma Lista de Objetos para obter mais detalhes.Veja aqui outro exemplo de como usar curl para operações
PUT
para um objeto usando a mesma solicitação pré-autenticada. A solicitação falha porque o objeto não tem um prefixoservice
:$ curl -X PUT --data-binary '@objectstoragelogreference.htm' https://objectstorage.us-phoenix-1.oraclecloud.com/p/l04eqXvxQ5HcnrXkWS8Kdf4mS812KLDyG_dbArXa8hDdHssXTKiUD0w2HNCEDS4W/n/MyNamespace/b/MyParBucket/o/objectstoragelogreference.htm {"code":"NotAuthenticated","message":"PAR does not exist"}
Para obter uma lista completa de parâmetros e valores para comandos da CLI, consulte a Referência de Comando da CLI.
-
Execute a operação CreatePreauthenticatedRequest para criar uma solicitação pré-autenticada.