Como usar "Somente a política de intervalo"

Nesta página, você verá como ativar, desativar e verificar o status do recurso "Somente a política de intervalo" em um intervalo no Cloud Storage. Para mais detalhes sobre esse recurso, consulte Somente a política de intervalo.

Pré-requisitos

Para usar esse recurso no Cloud Storage, o seguinte é necessário:

  1. Ter permissão suficiente para visualizar e atualizar intervalos no Cloud Storage:

    • Se você é proprietário do projeto que contém o intervalo, provavelmente já tem as permissões necessárias.

    • Ter as permissões do IAM storage.buckets.update e storage.buckets.get no intervalo pertinente. Consulte Como usar permissões do IAM para instruções sobre como conseguir um papel, por exemplo, roles/storage.admin, com essas permissões.

Verificar o uso da ACL

Antes de ativar o recurso "Somente a política de intervalo", use o Stackdriver para garantir que o intervalo não use ACLs para fluxos de trabalho. Para mais informações, consulte Verificar o uso da ACL do objeto.

Console

  1. Abra o Stackdriver Metrics Explorer.

    Acessar o Metrics Explorer

    Se você ainda não usou o Stackdriver, clique no botão Criar um espaço de trabalho e crie um espaço de trabalho para o projeto que contém o intervalo.

  2. Na caixa de texto Find resource type and metric, insira storage.googleapis.com/authz/acl_operations_count.

    O gráfico associado exibe as operações de ACL que estão sendo usadas. Se não há métrica, significa que não há uso de ACL recente no projeto.

  3. (Opcional) Para agrupar os dados por operação de ACL e intervalo, selecione acl_operation para Group By e sum para Aggregator.

Consulte a documentação sobre métricas do Stackdriver para ver a lista completa de métricas disponíveis. Para mais informações sobre como usar o Metrics Explorer, leia Métricas, séries temporais e recursos.

API JSON

  1. Receba um token de acesso de autorização do OAuth 2.0 Playground (em inglês). Configure o Playground para usar suas credenciais do OAuth.
  2. Use cURL para chamar a API JSON do Monitoring:

curl \
'https://monitoring.googleapis.com/v3/projects/[PROJECT_ID]/timeSeries?filter=metric.type%20%3D%20%22storage.googleapis.com%2Fauthz%2Facl_operations_count%22&interval.endTime=[END_TIME]&interval.startTime=[START_TIME]' \
--header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
--header 'Accept: application/json'

Em que:

  • [PROJECT_ID] é o ID ou número do projeto de que você quer o uso da ACL. Por exemplo, my-project;
  • [END_TIME] é o final do período de que você quer ver o uso da ACL. Por exemplo, 2014-11-02T15:01:23.045123456Z;
  • [START_TIME] é o início do período de que você quer ver o uso da ACL. Por exemplo, 2014-10-02T15:01:23.045123456Z;
  • [YOUR_ACCESS_TOKEN] é o token de acesso gerado na Etapa 1.

Se a solicitação retornar um objeto vazio {}, não há uso recente da ACL para o projeto.

Ativar "Somente a política de intervalo"

Para ativar "Somente a política de intervalo" no intervalo:

Console

  1. Abra o navegador do Cloud Storage no Console do Google Cloud Platform.
    Abrir o navegador do Cloud Storage
  2. Na lista de intervalos, clique no nome do intervalo pretendido.

  3. Selecione a guia Permissões na parte superior da página.

  4. Na caixa de texto Simplificar o controle de acesso com "Somente a política do intervalo", clique em Ativar.

  5. Na caixa de diálogo de confirmação exibida, clique em Confirmar.

gsutil

Use a opção on em um comando bucketpolicyonly set, substituindo [VALUES_IN_BRACKETS] pelos valores apropriados:

gsutil bucketpolicyonly set on gs://[BUCKET_NAME]/

Se bem-sucedido, a resposta terá esta aparência:

Enabling Bucket Policy Only for gs://test-bucket/...

Amostras de código

C++

Para mais informações, consulte a documentação de referência da API Cloud Storage para C++.

namespace gcs = google::cloud::storage;
using google::cloud::StatusOr;
[](gcs::Client client, std::string bucket_name) {
  gcs::BucketIamConfiguration configuration;
  configuration.bucket_policy_only = gcs::BucketPolicyOnly{true, {}};
  StatusOr<gcs::BucketMetadata> updated_metadata = client.PatchBucket(
      bucket_name, gcs::BucketMetadataPatchBuilder().SetIamConfiguration(
                       std::move(configuration)));

  if (!updated_metadata) {
    throw std::runtime_error(updated_metadata.status().message());
  }

  std::cout << "Successfully enabled Bucket Policy Only on bucket "
            << updated_metadata->name() << "\n";
}

C#

Para mais informações, consulte a documentação de referência da API Cloud Storage para C#.

        private void EnableBucketPolicyOnly(string bucketName)
        {
            var storage = StorageClient.Create();
            var bucket = storage.GetBucket(bucketName);
            bucket.IamConfiguration.BucketPolicyOnly.Enabled = true;
            bucket = storage.UpdateBucket(bucket, new UpdateBucketOptions()
            {
                // Use IfMetagenerationMatch to avoid race conditions.
                IfMetagenerationMatch = bucket.Metageneration,
            });

            Console.WriteLine($"Bucket Policy Only was enabled for {bucketName}.");
        }

Go

Para mais informações, consulte a documentação de referência da API Cloud Storage para Go.

bucket := c.Bucket(bucketName)
enableBucketPolicyOnly := storage.BucketAttrsToUpdate{
	BucketPolicyOnly: &storage.BucketPolicyOnly{
		Enabled: true,
	},
}
if _, err := bucket.Update(ctx, enableBucketPolicyOnly); err != nil {
	return err
}

Java

Para mais informações, consulte a documentação de referência da API Cloud Storage para Java.

// Instantiate a Google Cloud Storage client
Storage storage = StorageOptions.getDefaultInstance().getService();

// The name of a bucket, e.g. "my-bucket"
// String bucketName = "my-bucket";

BucketInfo.IamConfiguration iamConfiguration =
    BucketInfo.IamConfiguration.newBuilder().setIsBucketPolicyOnlyEnabled(true).build();
Bucket bucket =
    storage.update(
        BucketInfo.newBuilder(bucketName).setIamConfiguration(iamConfiguration).build());

System.out.println("Bucket Policy Only was enabled for " + bucketName);

Node.js

Para mais informações, consulte a documentação de referência da API Cloud Storage para Node.js.

// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');

// Creates a client
const storage = new Storage();

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const bucketName = 'Name of a bucket, e.g. my-bucket';

// Enables Bucket Policy Only for the bucket
await storage.bucket(bucketName).setMetadata({
  iamConfiguration: {
    bucketPolicyOnly: {
      enabled: true,
    },
  },
});

console.log(`Bucket Policy Only was enabled for ${bucketName}.`);

PHP

Para mais informações, consulte a documentação de referência da API Cloud Storage para PHP.

use Google\Cloud\Storage\StorageClient;

/**
 * Enable Bucket Policy Only.
 *
 * @param string $bucketName Name of your Google Cloud Storage bucket.
 *
 * @return void
 */
function enable_bucket_policy_only($bucketName)
{
    $storage = new StorageClient();
    $bucket = $storage->bucket($bucketName);
    $bucket->update([
        'iamConfiguration' => [
            'bucketPolicyOnly' => [
              'enabled' => true
            ]
        ]
    ]);
    printf('Bucket Policy Only was enabled for %s' . PHP_EOL, $bucketName);
}

Python

Para mais informações, consulte a documentação de referência da API Cloud Storage para Python.

# bucket_name = "my-bucket"

storage_client = storage.Client()
bucket = storage_client.bucket(bucket_name)

bucket.iam_configuration.bucket_policy_only_enabled = True
bucket.patch()

print('Bucket Policy Only was enabled for {}.'.format(bucket.name))

Ruby

Para mais informações, consulte a documentação de referência da API Cloud Storage para Ruby.

# project_id  = "Your Google Cloud project ID"
# bucket_name = "Name of your Google Cloud Storage bucket"

require "google/cloud/storage"

storage = Google::Cloud::Storage.new project_id: project_id
bucket  = storage.bucket bucket_name

bucket.policy_only = true

puts "Bucket Policy Only was enabled for #{bucket_name}."

APIs REST

API JSON

  1. Receba um token de acesso de autorização do OAuth 2.0 Playground (em inglês). Configure o Playground para usar suas credenciais do OAuth.
  2. Crie um arquivo .json que contenha as informações a seguir, substituindo [VALUES_IN_BRACKETS] pelos valores apropriados:

    {
      "iamConfiguration": {
          "bucketPolicyOnly": {
            "enabled": true
          }
      }
    }
  3. Use cURL (em inglês) para chamar a API JSON com uma solicitação de intervalo PATCH, substituindo [VALUES_IN_BRACKETS] pelos valores apropriados:

    curl -X PATCH --data-binary @[JSON_FILE_NAME].json \
    -H "Authorization: Bearer [OAUTH2_TOKEN]" \
    -H "Content-Type: application/json" \
    "https://www.googleapis.com/storage/v1/b/[BUCKET_NAME]?fields=iamConfiguration"

API XML

A API XML não pode ser usada para funcionar com "Somente a política do intervalo". Use uma das outras ferramentas do Cloud Storage, como a gsutil.

Exibir o status de "Somente a política de intervalo"

Console

  1. Abra o navegador do Cloud Storage no Console do Google Cloud Platform.
    Abrir o navegador do Cloud Storage
  2. No menu suspenso "Colunas", certifique-se de que Modelo de controle de acesso esteja marcado.

  3. Na lista de intervalos, o status "Somente a política de intervalo" de cada intervalo é exibido na coluna Modelo de controle de acesso.

gsutil

Use o comando bucketpolicyonly get, substituindo [VALUES_IN_BRACKETS] pelos valores apropriados:

gsutil bucketpolicyonly get gs://[BUCKET_NAME]/

Se "Somente a política de intervalo" estiver ativado, a resposta será parecida com esta:

Bucket Policy Only setting for gs://[BUCKET_NAME]/:
    Enabled: True
    LockedTime: [LOCK_DATE] 

Amostras de código

C++

Para mais informações, consulte a documentação de referência da API Cloud Storage para C++.

namespace gcs = google::cloud::storage;
using google::cloud::StatusOr;
[](gcs::Client client, std::string bucket_name) {
  StatusOr<gcs::BucketMetadata> bucket_metadata =
      client.GetBucketMetadata(bucket_name);

  if (!bucket_metadata) {
    throw std::runtime_error(bucket_metadata.status().message());
  }

  if (bucket_metadata->has_iam_configuration() &&
      bucket_metadata->iam_configuration().bucket_policy_only.has_value()) {
    gcs::BucketPolicyOnly bucket_policy_only =
        *bucket_metadata->iam_configuration().bucket_policy_only;

    std::cout << "Bucket Policy Only is enabled for "
              << bucket_metadata->name() << "\n";
    std::cout << "Bucket will be locked on " << bucket_policy_only << "\n";
  } else {
    std::cout << "Bucket Policy Only is not enabled for "
              << bucket_metadata->name() << "\n";
  }
}

C#

Para mais informações, consulte a documentação de referência da API Cloud Storage para C#.

        private void GetBucketPolicyOnly(string bucketName)
        {
            var storage = StorageClient.Create();
            var bucket = storage.GetBucket(bucketName);
            var bucketPolicyOnly = bucket.IamConfiguration.BucketPolicyOnly;

            bool? enabledOrNull = bucketPolicyOnly?.Enabled;
            bool bucketPolicyEnabled =
                enabledOrNull.HasValue ? enabledOrNull.Value : false;
            if (bucketPolicyEnabled)
            {
                Console.WriteLine($"Bucket Policy Only is enabled for {bucketName}.");
                Console.WriteLine(
                    $"Bucket Policy Only will be locked on {bucketPolicyOnly.LockedTime}.");
            }
            else
            {
                Console.WriteLine($"Bucket Policy Only is not enabled for {bucketName}.");
            }
        }

Go

Para mais informações, consulte a documentação de referência da API Cloud Storage para Go.

attrs, err := c.Bucket(bucketName).Attrs(ctx)
if err != nil {
	return nil, err
}
bucketPolicyOnly := attrs.BucketPolicyOnly
if bucketPolicyOnly.Enabled {
	log.Printf("Bucket Policy Only is enabled for %q.\n",
		attrs.Name)
	log.Printf("Bucket will be locked on %q.\n",
		bucketPolicyOnly.LockedTime)
} else {
	log.Printf("Bucket Policy Only is not enabled for %q.\n",
		attrs.Name)
}

Java

Para mais informações, consulte a documentação de referência da API Cloud Storage para Java.

// Instantiate a Google Cloud Storage client
Storage storage = StorageOptions.getDefaultInstance().getService();

// The name of a bucket, e.g. "my-bucket"
// String bucketName = "my-bucket";

Bucket bucket = storage.get(bucketName, BucketGetOption.fields(BucketField.IAMCONFIGURATION));
BucketInfo.IamConfiguration iamConfiguration = bucket.getIamConfiguration();

Boolean enabled = iamConfiguration.isBucketPolicyOnlyEnabled();
Date lockedTime = new Date(iamConfiguration.getBucketPolicyOnlyLockedTime());

if (enabled != null && enabled) {
  System.out.println("Bucket Policy Only is enabled for " + bucketName);
  System.out.println("Bucket will be locked on " + lockedTime);
} else {
  System.out.println("Bucket Policy Only is disabled for " + bucketName);
}

Node.js

Para mais informações, consulte a documentação de referência da API Cloud Storage para Node.js.

// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');

// Creates a client
const storage = new Storage();

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const bucketName = 'Name of a bucket, e.g. my-bucket';

// Gets Bucket Metadata and checks if BucketPolicyOnly is enabled.
const [metadata] = await storage.bucket(bucketName).getMetadata();

if (metadata.iamConfiguration) {
  const bucketPolicyOnly = metadata.iamConfiguration.bucketPolicyOnly;
  console.log(`Bucket Policy Only is enabled for ${bucketName}.`);
  console.log(`Bucket will be locked on ${bucketPolicyOnly.lockedTime}.`);
} else {
  console.log(`Bucket Policy Only is not enabled for ${bucketName}.`);
}

PHP

Para mais informações, consulte a documentação de referência da API Cloud Storage para PHP.

use Google\Cloud\Storage\StorageClient;

/**
 * Enable Bucket Policy Only.
 *
 * @param string $bucketName Name of your Google Cloud Storage bucket.
 *
 * @return void
 */
function get_bucket_policy_only($bucketName)
{
    $storage = new StorageClient();
    $bucket = $storage->bucket($bucketName);
    $bucketInformation = $bucket->info();
    $bucketPolicyOnly = $bucketInformation['iamConfiguration']['bucketPolicyOnly'];
    if ($bucketPolicyOnly['enabled']) {
        printf('Bucket Policy Only is enabled for %s' . PHP_EOL, $bucketName);
        printf('Bucket Policy Only will be locked on %s' . PHP_EOL, $bucketPolicyOnly['LockedTime']);
    } else {
        printf('Bucket Policy Only is disabled for %s' . PHP_EOL, $bucketName);
    }
}

Python

Para mais informações, consulte a documentação de referência da API Cloud Storage para Python.

# bucket_name = "my-bucket"

storage_client = storage.Client()
bucket = storage_client.get_bucket(bucket_name)
iam_configuration = bucket.iam_configuration

if iam_configuration.bucket_policy_only_enabled:
    print('Bucket Policy Only is enabled for {}.'.format(bucket.name))
    print('Bucket will be locked on {}.'.format(
        iam_configuration.bucket_policy_only_locked_time))
else:
    print('Bucket Policy Only is disabled for {}.'.format(bucket.name))

Ruby

Para mais informações, consulte a documentação de referência da API Cloud Storage para Ruby.

# project_id  = "Your Google Cloud project ID"
# bucket_name = "Name of your Google Cloud Storage bucket"

require "google/cloud/storage"

storage = Google::Cloud::Storage.new project_id: project_id
bucket  = storage.bucket bucket_name

if bucket.policy_only?
  puts "Bucket Policy Only is enabled for #{bucket_name}."
  puts "Bucket will be locked on #{bucket.policy_only_locked_at}."
else
  puts "Bucket Policy Only is disabled for #{bucket_name}."
end

APIs REST

API JSON

  1. Receba um token de acesso de autorização do OAuth 2.0 Playground (em inglês). Configure o Playground para usar suas credenciais do OAuth.
  2. Use cURL para chamar a API JSON com uma solicitação de intervalo GET que inclua o fields pretendido, substituindo [VALUES_IN_BRACKETS] pelos valores apropriados:

    curl -X GET -H "Authorization: Bearer [OAUTH2_TOKEN]" \
    "https://www.googleapis.com/storage/v1/b/[BUCKET_NAME]?fields=iamConfiguration"

    Se o recurso "Somente a política de intervalo" estiver ativado no intervalo, a resposta será como neste exemplo:

    {
      "iamConfiguration": {
          "bucketPolicyOnly": {
            "enabled": true,
            "lockedTime": "[LOCK_DATE]"
          }
        }
      }

API XML

A API XML não pode ser usada para funcionar com "Somente a política do intervalo". Use uma das outras ferramentas do Cloud Storage, como a gsutil.

Desativar "Somente a política de intervalo"

Para desativar "Somente a política de intervalo" no intervalo:

Console

  1. Abra o navegador do Cloud Storage no Console do Google Cloud Platform.
    Abrir o navegador do Cloud Storage
  2. Na lista de intervalos, clique no nome do intervalo pretendido.

  3. Selecione a guia Permissões na parte superior da página.

  4. Na caixa de texto As permissões no nível do objeto estão desativadas, clique em Ativar.

  5. Na caixa de diálogo de confirmação exibida, clique em Confirmar.

gsutil

Use a opção off em um comando bucketpolicyonly set, substituindo [VALUES_IN_BRACKETS] pelos valores apropriados:

gsutil bucketpolicyonly set off gs://[BUCKET_NAME]/

Se bem-sucedido, a resposta terá esta aparência:

Disabling Bucket Policy Only for gs://test-bucket/...

Amostras de código

C++

Para mais informações, consulte a documentação de referência da API Cloud Storage para C++.

namespace gcs = google::cloud::storage;
using google::cloud::StatusOr;
[](gcs::Client client, std::string bucket_name) {
  gcs::BucketIamConfiguration configuration;
  configuration.bucket_policy_only = gcs::BucketPolicyOnly{false, {}};
  StatusOr<gcs::BucketMetadata> updated_metadata = client.PatchBucket(
      bucket_name, gcs::BucketMetadataPatchBuilder().SetIamConfiguration(
                       std::move(configuration)));

  if (!updated_metadata) {
    throw std::runtime_error(updated_metadata.status().message());
  }

  std::cout << "Successfully disabled Bucket Policy Only on bucket "
            << updated_metadata->name() << "\n";
}

C#

Para mais informações, consulte a documentação de referência da API Cloud Storage para C#.

        private void DisableBucketPolicyOnly(string bucketName)
        {
            var storage = StorageClient.Create();
            var bucket = storage.GetBucket(bucketName);
            bucket.IamConfiguration.BucketPolicyOnly.Enabled = false;
            bucket = storage.UpdateBucket(bucket, new UpdateBucketOptions()
            {
                // Use IfMetagenerationMatch to avoid race conditions.
                IfMetagenerationMatch = bucket.Metageneration,
            });

            Console.WriteLine($"Bucket Policy Only was disabled for {bucketName}.");
        }

Go

Para mais informações, consulte a documentação de referência da API Cloud Storage para Go.

bucket := c.Bucket(bucketName)
disableBucketPolicyOnly := storage.BucketAttrsToUpdate{
	BucketPolicyOnly: &storage.BucketPolicyOnly{
		Enabled: false,
	},
}
if _, err := bucket.Update(ctx, disableBucketPolicyOnly); err != nil {
	return err
}

Java

Para mais informações, consulte a documentação de referência da API Cloud Storage para Java.

// Instantiate a Google Cloud Storage client
Storage storage = StorageOptions.getDefaultInstance().getService();

// The name of a bucket, e.g. "my-bucket"
// String bucketName = "my-bucket";

BucketInfo.IamConfiguration iamConfiguration =
    BucketInfo.IamConfiguration.newBuilder().setIsBucketPolicyOnlyEnabled(false).build();
Bucket bucket =
    storage.update(
        BucketInfo.newBuilder(bucketName).setIamConfiguration(iamConfiguration).build());

System.out.println("Bucket Policy Only was disabled for " + bucketName);

Node.js

Para mais informações, consulte a documentação de referência da API Cloud Storage para Node.js.

// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');

// Creates a client
const storage = new Storage();

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const bucketName = 'Name of a bucket, e.g. my-bucket';

// Disables Bucket Policy Only for the bucket
await storage.bucket(bucketName).setMetadata({
  iamConfiguration: {
    bucketPolicyOnly: {
      enabled: false,
    },
  },
});

console.log(`Bucket Policy Only was disabled for ${bucketName}.`);

PHP

Para mais informações, consulte a documentação de referência da API Cloud Storage para PHP.

use Google\Cloud\Storage\StorageClient;

/**
 * Enable Bucket Policy Only.
 *
 * @param string $bucketName Name of your Google Cloud Storage bucket.
 *
 * @return void
 */
function disable_bucket_policy_only($bucketName)
{
    $storage = new StorageClient();
    $bucket = $storage->bucket($bucketName);
    $bucket->update([
        'iamConfiguration' => [
            'bucketPolicyOnly' => [
              'enabled' => false
            ]
        ]
    ]);
    printf('Bucket Policy Only was disabled for %s' . PHP_EOL, $bucketName);
}

Python

Para mais informações, consulte a documentação de referência da API Cloud Storage para Python.

# bucket_name = "my-bucket"

storage_client = storage.Client()
bucket = storage_client.bucket(bucket_name)

bucket.iam_configuration.bucket_policy_only_enabled = False
bucket.patch()

print('Bucket Policy Only was disabled for {}.'.format(bucket.name))

Ruby

Para mais informações, consulte a documentação de referência da API Cloud Storage para Ruby.

# project_id  = "Your Google Cloud project ID"
# bucket_name = "Name of your Google Cloud Storage bucket"

require "google/cloud/storage"

storage = Google::Cloud::Storage.new project_id: project_id
bucket  = storage.bucket bucket_name

bucket.policy_only = false

puts "Bucket Policy Only was disabled for #{bucket_name}."

APIs REST

API JSON

  1. Receba um token de acesso de autorização do OAuth 2.0 Playground (em inglês). Configure o Playground para usar suas credenciais do OAuth.
  2. Crie um arquivo .json que contenha as informações a seguir, substituindo [VALUES_IN_BRACKETS] pelos valores apropriados:

    {
      "iamConfiguration": {
          "bucketPolicyOnly": {
            "enabled": false
          }
      }
    }
  3. Use cURL (em inglês) para chamar a API JSON com uma solicitação de intervalo PATCH, substituindo [VALUES_IN_BRACKETS] pelos valores apropriados:

    curl -X PATCH --data-binary @[JSON_FILE_NAME].json \
    -H "Authorization: Bearer [OAUTH2_TOKEN]" \
    -H "Content-Type: application/json" \
    "https://www.googleapis.com/storage/v1/b/[BUCKET_NAME]?fields=iamConfiguration"

API XML

A API XML não pode ser usada para funcionar com "Somente a política do intervalo". Use uma das outras ferramentas do Cloud Storage, como a gsutil.

A seguir

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.