Utiliser des autorisations Cloud IAM

Cette page explique comment contrôler l'accès aux buckets et aux objets à l'aide des autorisations Cloud Identity and Access Management (Cloud IAM). Cloud IAM vous permet de contrôler qui a accès à vos buckets et à vos objets. Pour en savoir plus sur Cloud IAM pour Cloud Storage, consultez la page Présentation de Cloud IAM.

Pour plus d'informations sur les autres méthodes de contrôle des accès aux buckets et aux objets, consultez la section Présentation du contrôle des accès. Pour plus d'informations sur le contrôle de l'accès à des objets individuels dans vos buckets, consultez la page Listes de contrôle d'accès.

Utiliser Cloud IAM avec des buckets

Les sections suivantes expliquent comment exécuter des tâches Cloud IAM de base sur des buckets.

Ajouter un membre à une stratégie au niveau du bucket

Pour obtenir la liste des rôles associés à Cloud Storage, consultez la page Rôles Cloud IAM. Pour plus d'informations sur les entités auxquelles vous octroyez des rôles Cloud IAM, consultez la section Types de membres.

Console

  1. Ouvrez le navigateur Cloud Storage dans la console Google Cloud Platform.
    Ouvrir le navigateur Cloud Storage
  2. Cliquez sur le menu déroulant associé au bucket pour lequel vous souhaitez attribuer un rôle à un membre.

    Le menu déroulant apparaît sous la forme de trois points verticaux à l'extrémité droite de la ligne du bucket.

  3. Choisissez Modifier les autorisations relatives au bucket.

  4. Dans le champ Add members (Ajouter des membres), saisissez une ou plusieurs identités nécessitant un accès au bucket.

    Boîte de dialogue

  5. Sélectionnez un ou plusieurs rôles dans le menu déroulant Sélectionnez un rôle. Les rôles sélectionnés apparaissent dans le volet et sont accompagnés d'une brève description des autorisations auxquelles ils correspondent.

  6. Cliquez sur Ajouter.

gsutil

Exécutez la commande gsutil iam ch :

gsutil iam ch [MEMBER_TYPE]:[MEMBER_NAME]:[IAM_ROLE] gs://[BUCKET_NAME]

Où :

  • [MEMBER_TYPE] est le type de membre auquel vous accordez l'accès au bucket. Par exemple, user.
  • [MEMBER_NAME] est le nom du membre auquel vous accordez l'accès au bucket. Par exemple, jane@gmail.com.
  • [IAM_ROLE] est le rôle IAM que vous attribuez au membre. Par exemple, roles/storage.objectCreator.
  • [BUCKET_NAME] est le nom du bucket pour lequel vous accordez l'accès au membre. Par exemple, my-bucket.

Pour consulter plus d'exemples de formatage de [MEMBER_TYPE]:[MEMBER_NAME]:[IAM_ROLE], consultez la page de référence gsutil iam ch.

Exemples de code

C++

Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage C++.

namespace gcs = google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string bucket_name, std::string role,
   std::string member) {
  auto policy = client.GetNativeBucketIamPolicy(bucket_name);

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

  for (auto& binding : policy->bindings()) {
    if (binding.role() != role) {
      continue;
    }
    auto& members = binding.members();
    if (std::find(members.begin(), members.end(), member) == members.end()) {
      members.emplace_back(member);
    }
  }

  auto updated_policy = client.SetNativeBucketIamPolicy(bucket_name, *policy);

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

  std::cout << "Updated IAM policy bucket " << bucket_name
            << ". The new policy is " << *updated_policy << "\n";
}

C#

Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage C#.

private void AddBucketIamMember(string bucketName,
    string role, string member)
{
    var storage = StorageClient.Create();
    var policy = storage.GetBucketIamPolicy(bucketName);
    Policy.BindingsData bindingToAdd = new Policy.BindingsData();
    bindingToAdd.Role = role;
    string[] members = { member };
    bindingToAdd.Members = members;
    policy.Bindings.Add(bindingToAdd);
    storage.SetBucketIamPolicy(bucketName, policy);
    Console.WriteLine($"Added {member} with role {role} "
        + $"to {bucketName}");
}

Go

Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Go.

bucket := c.Bucket(bucketName)
policy, err := bucket.IAM().Policy(ctx)
if err != nil {
	return err
}
// Other valid prefixes are "serviceAccount:", "user:"
// See the documentation for more values.
// https://cloud.google.com/storage/docs/access-control/iam
policy.Add("group:cloud-logs@google.com", "roles/storage.objectViewer")
if err := bucket.IAM().SetPolicy(ctx, policy); err != nil {
	return err
}
// NOTE: It may be necessary to retry this operation if IAM policies are
// being modified concurrently. SetPolicy will return an error if the policy
// was modified since it was retrieved.

Java

Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Java.

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

// Get IAM Policy for a bucket
Policy policy = storage.getIamPolicy(bucketName);

// Add identity to Bucket-level IAM role
Policy updatedPolicy =
    storage.setIamPolicy(bucketName, policy.toBuilder().addIdentity(role, identity).build());

if (updatedPolicy.getBindings().get(role).contains(identity)) {
  System.out.printf("Added %s with role %s to %s\n", identity, role, bucketName);
}

Node.js

Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Node.js.

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

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const bucketName = 'Name of a bucket, e.g. my-bucket';
// const roleName = 'Role to grant, e.g. roles/storage.objectViewer';
// const members = [
//   'user:jdoe@example.com',    // Example members to grant
//   'group:admins@example.com', // the new role to
// ];

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

// Get a reference to a Google Cloud Storage bucket
const bucket = storage.bucket(bucketName);

// Gets and updates the bucket's IAM policy
const [policy] = await bucket.iam.getPolicy();

// Adds the new roles to the bucket's IAM policy
policy.bindings.push({
  role: roleName,
  members: members,
});

// Updates the bucket's IAM policy
await bucket.iam.setPolicy(policy);

console.log(
  `Added the following member(s) with role ${roleName} to ${bucketName}:`
);

members.forEach(member => {
  console.log(`  ${member}`);
});

PHP

Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage PHP.

use Google\Cloud\Storage\StorageClient;

/**
 * Adds a new member / role IAM pair to a given Cloud Storage bucket.
 *
 * @param string $bucketName the name of your Cloud Storage bucket.
 * @param string $role the role you want to add a given member to.
 * @param string $member the member you want to give the new role for the Cloud
 * Storage bucket.
 *
 * @return void
 */
function add_bucket_iam_member($bucketName, $role, $member)
{
    $storage = new StorageClient();
    $bucket = $storage->bucket($bucketName);

    $policy = $bucket->iam()->policy();

    $policy['bindings'][] = [
        'role' => $role,
        'members' => [$member]
    ];

    $bucket->iam()->setPolicy($policy);

    printf('User %s added to role %s for bucket %s' . PHP_EOL, $member, $role, $bucketName);
}

Python

Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Python.

def add_bucket_iam_member(bucket_name, role, member):
    storage_client = storage.Client()
    bucket = storage_client.bucket(bucket_name)

    policy = bucket.get_iam_policy()

    policy[role].add(member)

    bucket.set_iam_policy(policy)

    print('Added {} with role {} to {}.'.format(
         member, role, bucket_name))

Ruby

Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Ruby.

# project_id  = "Your Google Cloud project ID"
# bucket_name = "Your Google Cloud Storage bucket name"
# role        = "Bucket-level IAM role"
# member      = "Bucket-level IAM member"

require "google/cloud/storage"

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

bucket.policy do |policy|
  policy.add role, member
end

puts "Added #{member} with role #{role} to #{bucket_name}"

JSON

  1. Obtenez un jeton d'autorisation d'accès sur la page OAuth 2.0 Playground. Configurez Playground de façon à utiliser vos propres identifiants OAuth.
  2. Créez un fichier .json contenant les informations suivantes :

    {
      "bindings":[
        {
          "role": "[IAM_ROLE]",
          "members":[
            "[MEMBER_NAME]"
          ]
        }
      ]
    }

    Où :

    • [IAM_ROLE] est le rôle IAM que vous attribuez au membre. Par exemple, roles/storage.objectCreator.
    • [MEMBER_NAME] est le nom du membre auquel vous accordez l'accès au bucket. Par exemple, jane@gmail.com.

      Pour consulter plus d'exemples de formatage de [MEMBER_NAME], consultez la section sur les membres sur cette page.

  3. Exécutez cURL pour appeler l'API JSON avec une requête PUT setIamPolicy :

    curl -X PUT --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]/iam"

    Où :

    • [JSON_FILE_NAME] correspond au nom du fichier que vous avez créé à l'étape 2.
    • [OAUTH2_TOKEN] correspond au jeton d'accès que vous avez généré à l'étape 1.
    • [BUCKET_NAME] correspond au nom du bucket pour lequel vous voulez accorder l'accès au membre. Par exemple, my-bucket.

Afficher la stratégie IAM Cloud pour un bucket

Console

  1. Ouvrez le navigateur Cloud Storage dans la console Google Cloud Platform.
    Ouvrir le navigateur Cloud Storage
  2. Cliquez sur le menu déroulant associé au bucket dans lequel vous souhaitez afficher les membres du rôle.

    Le menu déroulant apparaît sous la forme de trois points verticaux à l'extrémité droite du nom du bucket.

  3. Choisissez Modifier les autorisations relatives au bucket.

  4. Développez le rôle souhaité pour afficher les membres auxquels il a été attribué.

  5. (Facultatif) Utilisez la barre de recherche pour filtrer les résultats par rôle ou par membre.

    Si vous effectuez une recherche par membre, les résultats affichent chaque rôle attribué au membre.

gsutil

Exécutez la commande gsutil iam get :

gsutil iam get gs://[BUCKET_NAME]

[BUCKET_NAME] correspond au nom du bucket dont vous voulez afficher la stratégie Cloud IAM. Par exemple, my-bucket.

Exemples de code

C++

Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage C++.

namespace gcs = google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string bucket_name) {
  auto policy = client.GetNativeBucketIamPolicy(bucket_name);

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

  std::cout << "The IAM policy for bucket " << bucket_name << " is "
            << *policy << "\n";
}

C#

Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage C#.

private void ViewBucketIamMembers(string bucketName)
{
    var storage = StorageClient.Create();
    var policy = storage.GetBucketIamPolicy(bucketName);
    foreach (var binding in policy.Bindings)
    {
        Console.WriteLine($"  Role: {binding.Role}");
        Console.WriteLine("  Members:");
        foreach (var member in binding.Members)
        {
            Console.WriteLine($"    {member}");
        }
    }
}

Go

Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Go.

policy, err := c.Bucket(bucketName).IAM().Policy(ctx)
if err != nil {
	return nil, err
}
for _, role := range policy.Roles() {
	log.Printf("%q: %q", role, policy.Members(role))
}

Java

Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Java.

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

// Get IAM Policy for a bucket
Policy policy = storage.getIamPolicy(bucketName);

// Print Roles and its identities
Map<Role, Set<Identity>> policyBindings = policy.getBindings();
for (Map.Entry<Role, Set<Identity>> entry : policyBindings.entrySet()) {
  System.out.printf("Role: %s Identities: %s\n", entry.getKey(), entry.getValue());
}

Node.js

Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage 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 line before running the sample.
 */
// const bucketName = 'Name of a bucket, e.g. my-bucket';

// Gets and displays the bucket's IAM policy
const results = await storage.bucket(bucketName).iam.getPolicy();

const policy = results[0].bindings;

// Displays the roles in the bucket's IAM policy
console.log(`Roles for bucket ${bucketName}:`);
policy.forEach(role => {
  console.log(`  Role: ${role.role}`);
  console.log(`  Members:`);

  const members = role.members;
  members.forEach(member => {
    console.log(`    ${member}`);
  });
});

PHP

Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage PHP.

use Google\Cloud\Storage\StorageClient;

/**
 * View Bucket IAM members for a given Cloud Storage bucket.
 *
 * @param string $bucketName the name of your Cloud Storage bucket.
 *
 * @return void
 */
function view_bucket_iam_members($bucketName)
{
    $storage = new StorageClient();
    $bucket = $storage->bucket($bucketName);

    $policy = $bucket->iam()->policy();

    printf('Printing Bucket IAM members for Bucket: %s' . PHP_EOL, $bucketName);
    printf(PHP_EOL);

    foreach ($policy['bindings'] as $binding) {
        printf('Role: %s' . PHP_EOL, $binding['role']);
        printf('Members:' . PHP_EOL);
        foreach ($binding['members'] as $member) {
            printf('  %s' . PHP_EOL, $member);
        }
        printf(PHP_EOL);
    }
}

Python

Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Python.

def view_bucket_iam_members(bucket_name):
    storage_client = storage.Client()
    bucket = storage_client.bucket(bucket_name)

    policy = bucket.get_iam_policy()

    for role in policy:
        members = policy[role]
        print('Role: {}, Members: {}'.format(role, members))

Ruby

Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Ruby.

# project_id  = "Your Google Cloud project ID"
# bucket_name = "Your Google Cloud Storage bucket name"

require "google/cloud/storage"

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

policy = bucket.policy

policy.roles.each do |role, members|
  puts "Role: #{role} Members: #{members}"
end

JSON

  1. Obtenez un jeton d'autorisation d'accès sur la page OAuth 2.0 Playground. Configurez Playground pour utiliser vos propres identifiants OAuth.
  2. Exécutez cURL pour appeler l'API JSON avec une requête GET getIamPolicy :

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

    Où :

    • [OAUTH2_TOKEN] correspond au jeton d'accès que vous avez généré à l'étape 1.
    • [BUCKET_NAME] correspond au nom du bucket dont vous voulez afficher la stratégie Cloud IAM. Par exemple, my-bucket.

Supprimer un membre d'une stratégie au niveau du bucket

Console

  1. Ouvrez le navigateur Cloud Storage dans la console Google Cloud Platform.
    Ouvrir le navigateur Cloud Storage
  2. Cliquez sur le menu déroulant associé au bucket duquel vous souhaitez supprimer le rôle d'un membre.

    Le menu déroulant apparaît sous la forme de trois points verticaux à l'extrémité droite du nom du bucket.

  3. Choisissez Modifier les autorisations relatives au bucket.

  4. Développez le rôle contenant le membre que vous supprimez.

  5. Passez la souris sur le membre, puis cliquez sur l'icône de la corbeille qui apparaît.

    Supprimer un membre d'un projet.

  6. Dans la fenêtre qui apparaît en superposition, cliquez sur Supprimer.

gsutil

Exécutez la commande gsutil iam ch avec un indicateur -d :

gsutil iam ch -d [MEMBER_TYPE]:[MEMBER_NAME] gs://[BUCKET_NAME]

Où :

  • [MEMBER_TYPE] est le type du membre que vous supprimez de la stratégie. Par exemple, user.
  • [MEMBER_NAME] est le nom du membre que vous supprimez de la stratégie. Par exemple, jane@gmail.com.
  • [BUCKET_NAME] est le nom du bucket pour lequel vous supprimez l'accès du membre. Par exemple, my-bucket.

Pour consulter plus d'exemples de formatage de [MEMBER_TYPE]:[MEMBER_NAME], consultez la page de référence gsutil iam ch.

Exemples de code

C++

Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage C++.

namespace gcs = google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string bucket_name, std::string role,
   std::string member) {
  auto policy = client.GetNativeBucketIamPolicy(bucket_name);
  if (!policy) {
    throw std::runtime_error(policy.status().message());
  }

  std::vector<google::cloud::storage::NativeIamBinding> updated_bindings;
  for (auto& binding : policy->bindings()) {
    auto& members = binding.members();
    if (binding.role() == role) {
      members.erase(std::remove(members.begin(), members.end(), member),
                    members.end());
    }
    if (!members.empty()) {
      updated_bindings.emplace_back(std::move(binding));
    }
  }
  policy->bindings() = std::move(updated_bindings);

  auto updated_policy = client.SetNativeBucketIamPolicy(bucket_name, *policy);

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

  std::cout << "Updated IAM policy bucket " << bucket_name
            << ". The new policy is " << *updated_policy << "\n";
}

C#

Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage C#.

private void RemoveBucketIamMember(string bucketName,
    string role, string member)
{
    var storage = StorageClient.Create();
    var policy = storage.GetBucketIamPolicy(bucketName);
    policy.Bindings.ToList().ForEach(response =>
    {
        if (response.Role == role)
        {
            // Remove the role/member combo from the IAM policy.
            response.Members = response.Members
                .Where(m => m != member).ToList();
            // Remove role if it contains no members.
            if (response.Members.Count == 0)
            {
                policy.Bindings.Remove(response);
            }
        }
    });
    // Set the modified IAM policy to be the current IAM policy.
    storage.SetBucketIamPolicy(bucketName, policy);
    Console.WriteLine($"Removed {member} with role {role} "
        + $"to {bucketName}");
}

Go

Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Go.

bucket := c.Bucket(bucketName)
policy, err := bucket.IAM().Policy(ctx)
if err != nil {
	return err
}
// Other valid prefixes are "serviceAccount:", "user:"
// See the documentation for more values.
// https://cloud.google.com/storage/docs/access-control/iam
policy.Remove("group:cloud-logs@google.com", "roles/storage.objectViewer")
if err := bucket.IAM().SetPolicy(ctx, policy); err != nil {
	return err
}
// NOTE: It may be necessary to retry this operation if IAM policies are
// being modified concurrently. SetPolicy will return an error if the policy
// was modified since it was retrieved.

Java

Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Java.

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

// Get IAM Policy for a bucket
Policy policy = storage.getIamPolicy(bucketName);

// Remove an identity from a Bucket-level IAM role
Policy updatedPolicy =
    storage.setIamPolicy(bucketName, policy.toBuilder().removeIdentity(role, identity).build());

if (updatedPolicy.getBindings().get(role) == null
    || !updatedPolicy.getBindings().get(role).contains(identity)) {
  System.out.printf("Removed %s with role %s from %s\n", identity, role, bucketName);
}

Node.js

Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Node.js.

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

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const bucketName = 'Name of a bucket, e.g. my-bucket';
// const roleName = 'Role to grant, e.g. roles/storage.objectViewer';
// const members = [
//   'user:jdoe@example.com',    // Example members to grant
//   'group:admins@example.com', // the new role to
// ];

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

// Get a reference to a Google Cloud Storage bucket
const bucket = storage.bucket(bucketName);

// Gets and updates the bucket's IAM policy
const [policy] = await bucket.iam.getPolicy();

// Finds and updates the appropriate role-member group
const index = policy.bindings.findIndex(role => role.role === roleName);
const role = policy.bindings[index];
if (role) {
  role.members = role.members.filter(
    member => members.indexOf(member) === -1
  );

  // Updates the policy object with the new (or empty) role-member group
  if (role.members.length === 0) {
    policy.bindings.splice(index, 1);
  } else {
    policy.bindings.index = role;
  }

  // Updates the bucket's IAM policy
  await bucket.iam.setPolicy(policy);
} else {
  // No matching role-member group(s) were found
  throw new Error('No matching role-member group(s) found.');
}

console.log(
  `Removed the following member(s) with role ${roleName} from ${bucketName}:`
);
members.forEach(member => {
  console.log(`  ${member}`);
});

PHP

Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage PHP.

use Google\Cloud\Core\Iam\PolicyBuilder;
use Google\Cloud\Storage\StorageClient;

/**
 * Removes a member / role IAM pair from a given Cloud Storage bucket.
 *
 * @param string $bucketName the name of your Cloud Storage bucket.
 * @param string $role the role you want to remove a given member from.
 * @param string $member the member you want to remove from the given role.
 *
 * @return void
 */
function remove_bucket_iam_member($bucketName, $role, $member)
{
    $storage = new StorageClient();
    $bucket = $storage->bucket($bucketName);
    $policy = $bucket->iam()->policy();
    $policyBuilder = new PolicyBuilder($policy);
    $policyBuilder->removeBinding($role, [$member]);

    $bucket->iam()->setPolicy($policyBuilder->result());
    printf('User %s removed from role %s for bucket %s' . PHP_EOL, $member, $role, $bucketName);
}

Python

Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Python.

def remove_bucket_iam_member(bucket_name, role, member):
    storage_client = storage.Client()
    bucket = storage_client.bucket(bucket_name)

    policy = bucket.get_iam_policy()

    policy[role].discard(member)

    bucket.set_iam_policy(policy)

    print('Removed {} with role {} from {}.'.format(
        member, role, bucket_name))

Ruby

Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Ruby.

# project_id  = "Your Google Cloud project ID"
# bucket_name = "Your Google Cloud Storage bucket name"
# role        = "Bucket-level IAM role"
# member      = "Bucket-level IAM member"

require "google/cloud/storage"

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

bucket.policy do |policy|
  policy.remove role, member
end

puts "Removed #{member} with role #{role} from #{bucket_name}"

JSON

  1. Obtenez un jeton d'autorisation d'accès sur la page OAuth 2.0 Playground. Configurez Playground pour utiliser vos propres identifiants OAuth.
  2. Obtenez la stratégie existante appliquée à votre projet. Pour ce faire, exécutez cURL pour appeler l'API JSON avec une requête GET getIamPolicy :

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

    Où :

    • [OAUTH2_TOKEN] correspond au jeton d'accès que vous avez généré à l'étape 1.
    • [BUCKET_NAME] correspond au nom du bucket dont vous voulez afficher la stratégie Cloud IAM. Par exemple, my-bucket.
  3. Créez un fichier .json contenant la stratégie récupérée à l'étape précédente.

  4. Modifiez le fichier .json pour supprimer le membre de la stratégie.

  5. Exécutez cURL pour appeler l'API JSON avec une requête PUT setIamPolicy :

    curl -X PUT --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]/iam"

    Où :

    • [JSON_FILE_NAME] correspond au nom du fichier que vous avez créé à l'étape 3.
    • [OAUTH2_TOKEN] correspond au jeton d'accès que vous avez généré à l'étape 1.
    • [BUCKET_NAME] correspond au nom du bucket pour lequel vous voulez supprimer l'accès du membre. Par exemple, my-bucket.

Utiliser Cloud IAM avec des projets

Les sections suivantes expliquent comment exécuter des tâches Cloud IAM de base sur des projets. Notez que ces tâches utilisent une commande de ligne de commande distincte, gcloud, et un point de terminaison distinct, cloudresourcemanager.googleapis.com, par comparaison avec la plupart des tâches Cloud Storage.

Ajouter un membre à une stratégie au niveau du projet

Pour obtenir la liste des rôles associés à Cloud Storage, consultez la page Rôles Cloud IAM. Pour plus d'informations sur les entités auxquelles vous octroyez des rôles Cloud IAM, consultez la section Types de membres.

Console

  1. Ouvrez le navigateur IAM et administration dans la console Google Cloud Platform.
    Ouvrir le navigateur "IAM et administration"
  2. Sélectionnez le projet auquel vous souhaitez ajouter un membre.

    Ajouter un membre à un projet.

  3. Dans la boîte de dialogue Add members (Ajouter des membres), spécifiez le nom de l'entité à laquelle vous accordez l'accès.

    Boîte de dialogue

  4. Dans la liste déroulante Select a role (Sélectionnez un rôle), définissez les autorisations appropriées pour le membre de l'équipe.

    Les rôles qui affectent les buckets et les objets Cloud Storage se trouvent dans les sous-menus Projet et Cloud Storage.

  5. Cliquez sur Ajouter.

gsutil

Les stratégies Cloud IAM au niveau du projet sont gérées via la commande gcloud, qui fait partie du SDK Google Cloud. Pour ajouter une stratégie au niveau du projet, utilisez gcloud beta projects add-iam-policy-binding.

JSON

  1. Obtenez un jeton d'autorisation d'accès sur la page OAuth 2.0 Playground. Configurez Playground de façon à utiliser vos propres identifiants OAuth.
  2. Créez un fichier .json contenant les informations suivantes :

    {
      "policy": {
        "version": "0",
        "bindings": {
          "role": "[IAM_ROLE]",
          "members": "[MEMBER_NAME]"
        },
      }
    }

    Où :

    • [IAM_ROLE] est le rôle IAM que vous attribuez au membre. Par exemple, roles/storage.objectCreator.
    • [MEMBER_NAME] correspond au type et au nom du membre auquel vous accordez l'accès au projet. Par exemple, user:jane@gmail.com.
  3. Exécutez cURL pour appeler l'API Resource Manager avec une requête POST setIamPolicy :

    curl -X POST --data-binary @[JSON_FILE_NAME].json \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      -H "Content-Type: application/json" \
      "https://cloudresourcemanager.googleapis.com/v1/projects/[PROJECT_NAME]:setIamPolicy"

    Où :

    • [JSON_FILE_NAME] correspond au nom du fichier que vous avez créé à l'étape 2.
    • [OAUTH2_TOKEN] correspond au jeton d'accès que vous avez généré à l'étape 1.
    • [PROJECT_NAME] correspond au nom du projet pour lequel vous accordez l'accès au membre. Par exemple, my-project.

Afficher la stratégie IAM Cloud pour un bucket

Console

  1. Ouvrez le navigateur IAM et administration dans la console Google Cloud Platform.
    Ouvrir le navigateur "IAM et administration"
  2. Sélectionnez le projet dont vous souhaitez afficher la stratégie.

  3. Utilisez la liste déroulante associée aux rôles individuels pour voir quels membres disposent du rôle, ou utilisez la boîte de dialogue Rechercher des membres pour filtrer les résultats.

gsutil

Les stratégies Cloud IAM au niveau du projet sont gérées via la commande gcloud, qui fait partie du SDK Google Cloud. Pour afficher la stratégie Cloud IAM d'un projet, exécutez la commande gcloud beta projects get-iam-policy.

JSON

  1. Obtenez un jeton d'autorisation d'accès sur la page OAuth 2.0 Playground. Configurez Playground pour utiliser vos propres identifiants OAuth.
  2. Exécutez cURL pour appeler l'API Resource Manager avec une requête POST getIamPolicy :

    curl -X POST \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      -H "Content-Length: 0" \
      "https://cloudresourcemanager.googleapis.com/v1/projects/[PROJECT_NAME]:getIamPolicy"

    Où :

    • [OAUTH2_TOKEN] correspond au jeton d'accès que vous avez généré à l'étape 1.
    • [PROJECT_NAME] correspond au nom du projet pour lequel vous accordez l'accès au membre. Par exemple, my-project.

Supprimer un membre d'une stratégie au niveau du projet

Console

  1. Ouvrez le navigateur IAM et administration dans la console Google Cloud Platform.
    Ouvrir le navigateur "IAM et administration"
  2. Sélectionnez le projet dont vous souhaitez supprimer un membre.

    Ajouter un membre à un projet.

  3. Dans la boîte de dialogue Rechercher des membres, spécifiez le nom du membre dont vous supprimez l'accès.

  4. Dans les résultats figurant sous la recherche, passez la souris sur le membre que vous supprimez, puis cliquez sur l'icône de la corbeille qui apparaît.

    Supprimer un membre d'un projet.

  5. Dans la fenêtre qui apparaît en superposition, cliquez sur Supprimer.

gsutil

Les stratégies Cloud IAM au niveau du projet sont gérées via la commande gcloud, qui fait partie du SDK Google Cloud. Pour supprimer une stratégie au niveau du projet, utilisez gcloud beta projects remove-iam-policy-binding.

JSON

  1. Obtenez un jeton d'autorisation d'accès sur la page OAuth 2.0 Playground. Configurez Playground pour utiliser vos propres identifiants OAuth.
  2. Obtenez la stratégie existante appliquée à votre projet. Pour ce faire, exécutez cURL pour appeler l'API Resource Manager avec une requête POST getIamPolicy :

    curl -X POST \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      -H "Content-Length: 0" \
      "https://cloudresourcemanager.googleapis.com/v1/projects/[PROJECT_NAME]:getIamPolicy"

    Où :

    • [OAUTH2_TOKEN] correspond au jeton d'accès que vous avez généré à l'étape 1.
    • [PROJECT_NAME] correspond au nom du projet pour lequel vous voulez accorder l'accès au membre. Par exemple, my-project.
  3. Créez un fichier .json contenant la stratégie récupérée à l'étape précédente.

  4. Modifiez le fichier .json pour supprimer le membre de la stratégie.

  5. Exécutez cURL pour appeler l'API Resource Manager avec une requête POST setIamPolicy :

    curl -X POST --data-binary @[JSON_FILE_NAME].json \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      -H "Content-Type: application/json" \
      "https://cloudresourcemanager.googleapis.com/v1/projects/[PROJECT_NAME]:setIamPolicy"

    Où :

    • [JSON_FILE_NAME] correspond au nom du fichier que vous avez créé à l'étape 2.
    • [OAUTH2_TOKEN] correspond au jeton d'accès que vous avez généré à l'étape 1.
    • [PROJECT_NAME] correspond au nom du projet pour lequel vous voulez accorder l'accès au membre. Par exemple, my-project.

Étape suivante

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Besoin d'aide ? Consultez notre page d'assistance.