Objetos do Serviço Object Storage

Saiba como gerenciar objetos do serviço Object Storage, que são arquivos ou dados não estruturados que você pode fazer upload para um bucket do serviço Object Storage em um compartimento.

No serviço Object Storage, um objeto é um arquivo ou dados não estruturados dos quais você faz upload para um bucket dentro de um compartimento de um namespace do Object Storage. O objeto pode ser qualquer tipo de dados; por exemplo, arquivos multimídia, backups de dados, conteúdo estático da Web ou logs. Você pode armazenar objetos que tenham até 10 TiB. Os objetos são processados como uma única entidade. Você não pode editar ou anexar dados a um objeto, mas pode substituir todo o objeto.

O serviço Object Storage permite o controle de versão de objetos, o que cria uma cópia acessível e transferível por download de uma versão específica de um objeto cujo upload foi feito para um bucket. O controle de versão do objeto protege os objetos contra substituição ou exclusão acidental ou maliciosa. Para obter mais informações, consulte Controle de Versão do Serviço Object Storage.

Estes tópicos descrevem como gerenciar objetos em um único bucket. Para obter informações sobre como copiar um objeto para outro bucket, consulte Copiando Objetos.

Você pode executar as seguintes tarefas de objeto do serviço Object Storage:

Você pode executar determinadas tarefas em um grupo de objetos de cada vez usando a Interface de Linha de Comando. Consulte Tarefas de Objeto em Massa para obter mais informações.

Política Obrigatória do Serviço IAM

Para usar o Oracle Cloud Infrastructure, você deve receber de um administrador o acesso de segurança em uma política . Esse acesso é necessário, quer você esteja usando a Console ou a API REST com um SDK, uma CLI ou outra ferramenta. Se você receber uma mensagem de que não tem permissão ou que não está autorizado, verifique com o administrador qual tipo de acesso você tem e em qual compartimento vai trabalhar.

Se você for iniciante em políticas, consulte Conceitos Básicos de Políticas e Políticas Comuns.

Para administradores:

  • A política Permitir que os administradores do serviço Object Storage gerenciem buckets e objetos permite que o grupo especificado realize todas as operações com buckets e objetos. Os objetos sempre residem no mesmo compartimento que o bucket.

  • Se você precisar gravar uma política mais restritiva para objetos, inspect objects permitirá listar todos os objetos de um bucket e executar uma operação HEAD para um objeto específico. Em comparação, read objects permite que você faça download do objeto propriamente dito.

  • Para criar políticas mais restritivas que concedam permissões individuais:

    • A permissão OBJECT_VERSION_DELETE é necessária para excluir versões de objeto anteriores em seu nome usando políticas de ciclo de vida.

    • A permissão OBJECT_UPDATE_TIER é necessária para alterar a camada de armazenamento de um objeto.

Consulte Detalhes para os Serviços Object Storage, Archive Storage e Data Transfer para obter mais informações sobre permissões do usuário do serviço Object Storage.

Políticas do serviço IAM para Objetos

Às vezes, ter controle de acesso no nível do bucket é insuficiente para suas necessidades de segurança. Em vez disso, é necessário ter um controle mais granular em um grupo de objetos individual ou baseado em prefixo ou sufixo. Por exemplo, se você fizer parte de um grupo autorizado para um objeto específico obter uma solicitação de serviço, precisará de uma política do serviço Identity and Access Management IAM que dê permissão para essa operação explicitamente.

As políticas do serviço IAM no nível do objeto permitem conceder permissão a objetos e subconjuntos específicos de objetos dentro de um bucket do serviço Object Storage. A variável de política do serviço IAM target.object.name permite aplicar autorização e permissões a objetos, semelhante ao que você pode fazer com tenancies, compartimentos e buckets. Por exemplo:

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

As políticas do serviço IAM no nível do objeto são especialmente úteis para casos de uso de big data e data lake em que um único bucket tem muitos conjuntos de dados diferentes e é acessado por várias equipes ou cargas de trabalho.

Para criar políticas do serviço IAM no nível do objeto, siga as etapas descritas em Criando uma Política. Adicione instruções de política para o serviço IAM no nível do objeto usando a seguinte sintaxe:

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

A autorização é avaliada para políticas do serviço IAM no nível do objeto quando a solicitação chega para um objeto no servidor.

Observação

Você precisa de permissões para listar os buckets em um compartimento e listar os objetos em um bucket para listar os padrões específicos de objeto ou objeto ao usar a Console. Você deve ter permissões READ para acessar os objetos listados.

Se o nome ou o caminho do objeto já for conhecido e estiver sendo acessado usando a CLI ou a API, você não precisará dessas permissões de acesso de compartimento ou bucket.

Observação

Pode haver um atraso de vários minutos para que qualquer política de objeto que você aplicar se torne efetiva. Esse atraso se aplica a todas as políticas que você cria ou atualiza que controlam o acesso aos recursos do serviço Object Storage.

Você também pode atualizar uma política existente para incluir permissões do serviço IAM no nível do objeto. Consulte Atualizando Instruções de uma Política. As políticas do serviço IAM no nível do objeto são compatíveis com todas as construções de política existentes.

Exemplo 1: Permitindo acesso total a um grupo para uma pasta em um bucket:

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

Exemplo 2: Permitindo acesso somente leitura a um grupo para uma pasta em um bucket:

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

Exemplo 3: Permitir gravação única (sem substituições) e nenhum acesso de leitura ou exclusão a um grupo para uma pasta:

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

Exemplo 4: Permitindo acesso de leitura e gravação a um grupo para uma pasta em um bucket (sem listagem ou substituição):

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

Exemplo 5: Permitindo todo o acesso de um usuário específico a um padrão de objeto em um bucket:

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

Solicitações Pré-autenticadas

As solicitações pré-autenticadas fornecem uma forma de permitir que os usuários acessem um bucket ou objeto sem ter suas próprias credenciais. Por exemplo, você pode criar uma solicitação que permita que um usuário faça upload de backups para um bucket sem possuir chaves de API. Consulte Solicitações Pré-Autenticadas do Serviço Object Storage para obter detalhes.

Nomes de Objeto

Ao contrário de outros recursos, os objetos não têm Oracle Cloud Identifiers (OCIDs). Em vez disso, os usuários definem um nome de objeto ao fazer upload de um objeto.

Use as seguintes diretrizes ao nomear um objeto:

  • Utilize de 1 a 1.024 caracteres.

  • Os caracteres válidos são letras (superiores ou minúsculas), números e caracteres diferentes de alimentação de linha, retorno de carro e NULL.

    Importante

    Nomes de buckets e nomes de objetos fazem distinção entre maiúsculas e minúsculas. O serviço Object Storage trata q3-field-assets.xslx e Q3-Field-Assets.XSLX como objetos separados.

  • Use somente caracteres Unicode para os quais a codificação UTF-8 não exceda 1024 bytes. Os clientes são responsáveis por caracteres de codificação de URL.

  • Evite inserir informações confidenciais.

  • Torne o nome exclusivo dentro do bucket. Não use o nome de um objeto existente dentro do bucket ao nomeá-lo, a menos que você pretenda substituir o objeto existente pelo conteúdo do objeto novo ou renomeado.

Dica

Os nomes de objeto podem incluir um ou mais caracteres de barra (/). Consulte Nomenclatura de Objetos Usando Prefixos e Hierarquias para obter mais informações sobre como usar a barra nos nomes de objeto para criar hierarquias.

Nomenclatura de Objetos Usando Prefixos e Hierarquias

Em um namespace do Serviço Object Storage existem buckets e objetos em uma estrutura simples. No entanto, é possível simular uma estrutura de diretório adicionando uma string de prefixo que inclua uma ou mais barras (/) em um nome de objeto. Isso permite listar um diretório de cada vez, o que é útil ao navegar por um grande conjunto de objetos.

Por exemplo:

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

Se você adicionou prefixos a nomes de objeto, poderá:

  • Use a CLI ou a API para executar downloads e exclusões em massa de todos os objetos em um nível especificado da hierarquia.

  • Use a Console para exibir uma view hierárquica de seus objetos em pastas virtuais. No exemplo anterior, marathon seria exibido como pasta contendo um objeto chamado finish_line.jpg e participants seria uma subpasta de marathon, contendo um objeto chamado p_21.jpg. Você pode fazer upload em massa de objetos para qualquer nível da hierarquia e executar exclusões em massa de todos os objetos em um bucket ou em uma pasta.

As operações em massa de um nível especificado da hierarquia não afetam os objetos de nenhum nível anterior.

Ao nomear objetos, você também pode usar strings de prefixo sem um delimitador. Nenhum delimitador permitiria que operações de pesquisa na Console e determinadas operações em massa na CL ou API correspondessem à parte do prefixo do nome do objeto. Por exemplo, nos nomes de objeto a seguir, a string gloves_27_ pode servir de prefixo para fins de correspondência ao executar operações em massa:

gloves_27_dark_green.jpg
gloves_27_light_blue.jpg	

Ao executar uploads em massa com a Console, CLI ou API, você pode pré-anexar uma string de prefixo aos nomes dos arquivos cujo upload você está fazendo.

Para obter detalhes de hierarquia e string de prefixo de uma interface de gerenciamento específica, consulte as tarefas individuais em Buckets do Serviço Object Storage.

Cabeçalhos e Metadados de Resposta Opcionais

Ao fazer upload de objetos, você pode fornecer cabeçalhos de resposta opcionais e metadados definidos pelo usuário. Os cabeçalhos de resposta são cabeçalhos HTTP enviados do serviço Object Storage para clientes do serviço Object Storage quando os objetos são submetidos a download. Os metadados definidos pelo usuário são pares de nome/valor armazenados com um objeto. Você pode usar a Console, a API REST ou a CLI para fornecer esses atributos opcionais.

Importante

Nenhuma validação é realizada nos cabeçalhos de resposta ou nos metadados que você fornecer.

Você pode especificar valores para os seguintes cabeçalhos de resposta:

  • Disposição do Conteúdo

    Define informações somente de apresentação do objeto. A especificação de valores para este cabeçalho não tem efeito no comportamento do serviço Object Storage. Os programas que leem o objeto decidem o que fazer com base no valor fornecido. Por exemplo, você pode usar esse cabeçalho para permitir que os usuários façam download de objetos com nomes de arquivo personalizados em um browser:

    attachment; filename="fname.ext"

    Consulte https://tools.ietf.org/html/rfc2616#section-19.5.1 para obter mais informações.

  • Controle de Cache

    Define o comportamento do armazenamento no cache do objeto. A especificação de valores para este cabeçalho não tem efeito no comportamento do serviço Object Storage. Os programas que leem o objeto decidem o que fazer com base no valor fornecido. Por exemplo, você pode usar este cabeçalho para identificar objetos que requerem restrições de armazenamento no cache:

    no-cache, no-store

    Consulte https://tools.ietf.org/html/rfc2616#section-14.9 para obter mais informações.

Você especifica metadados definidos pelo usuário na forma de pares de nome/valor. Nomes de metadados definidos pelo usuário são armazenados e retornados a clientes do serviço Object Storage com o prefixo obrigatório opc-meta-.

Gerenciamento de Ciclo de Vida de Objetos

O Gerenciamento do Ciclo de Vida de Objetos permite gerenciar automaticamente a exclusão de uploads multiparte não confirmados, o movimento de objetos para outra camada de armazenamento e a exclusão de recursos suportados em seu nome dentro de um determinado bucket. Essas ações automatizadas se baseiam em regras que você define e gerencia. Consulte Object Storage Object Lifecycle Management para obter mais informações sobre esse recurso.

Upload e Download Multiparte

O serviço Oracle Cloud Infrastructure Object Storage suporta o upload e o download multiparte para objetos.

Monitorando Recursos

Você pode monitorar a integridade, a capacidade e o desempenho dos recursos do Oracle Cloud Infrastructure usando métricas, alarmes e notificações. Para obter mais informações, consulte os serviços Monitoring e Notifications.

Para obter mais informações sobre o monitoramento de objetos, consulte Métricas do Serviço Object Storage.

Criando Automação para Objetos com o Serviço Events

Você pode criar automação com base nas alterações de estado de seus recursos do Oracle Cloud Infrastructure usando tipos de evento, regras e ações. Para obter mais informações, consulte Visão Geral do Serviço Events.