Obtenir la stratégie IAM d'une réservation

Récupère la stratégie IAM (Identity and Access Management) d'une réservation BigQuery. La stratégie définit les rôles attribués à chaque compte principal et permet d'afficher les paramètres de contrôle des accès de la ressource.

Exemple de code

Java

Avant d'essayer cet exemple, suivez les instructions de configuration pour Java du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Java.

Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.

import com.google.api.gax.rpc.ApiException;
import com.google.api.gax.rpc.NotFoundException;
import com.google.cloud.bigquery.reservation.v1.ReservationName;
import com.google.cloud.bigquery.reservation.v1.ReservationServiceClient;
import com.google.iam.v1.Binding;
import com.google.iam.v1.GetIamPolicyRequest;
import com.google.iam.v1.Policy;
import java.io.IOException;

public class GetIamPolicy {

  /**
   * Retrieves the IAM policy for a specified BigQuery reservation. An IAM policy is a collection
   * of bindings that associates one or more principals with a single role.
   *
   * @param projectId The Google Cloud project ID (for example, "example-project-id").
   * @param location The geographic location of the reservation (for example, "us-central1").
   * @param reservationId The ID of the reservation to retrieve the IAM policy for (for example,
   *     "example-reservation").
   */
  public static void getReservationIamPolicy(
      String projectId, String location, String reservationId) {
    ReservationName resource = ReservationName.of(projectId, location, reservationId);

    GetIamPolicyRequest request =
        GetIamPolicyRequest.newBuilder().setResource(resource.toString()).build();

    try (ReservationServiceClient client = ReservationServiceClient.create()) {
      Policy policy = client.getIamPolicy(request);
      System.out.printf("Got IAM policy for reservation: %s%n", resource);
      for (Binding binding : policy.getBindingsList()) {
        System.out.printf("  Role: %s%n", binding.getRole());
        System.out.printf("  Members: %s%n", binding.getMembersList());
      }
    } catch (NotFoundException err) {
      System.err.printf(
          "error: reservation '%s' not found: %s%n", resource, err.getMessage());
    } catch (ApiException | IOException err) {
      System.err.printf(
          "error: failed to get IAM policy for reservation '%s': %s%n", resource, err.getMessage());
    }
  }

Node.js

Avant d'essayer cet exemple, suivez les instructions de configuration pour Node.js du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Node.js.

Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.

const {
  ReservationServiceClient,
} = require('@google-cloud/bigquery-reservation').v1;
const {status} = require('@grpc/grpc-js');

const client = new ReservationServiceClient();

/**
 * Gets the IAM policy for a reservation.
 * An IAM policy is a collection of bindings that associates one or more members,
 * such as service accounts or users, with a single role.
 *
 * @param {string} projectId - Google Cloud project ID, for example "example-project-id".
 * @param {string} location - Location of the reservation, for example "us-central1".
 * @param {string} reservationId - ID of the reservation, for example "example-reservation".
 */
async function getReservationIamPolicy(
  projectId,
  location = 'us-central1',
  reservationId = 'example-reservation',
) {
  const resource = `projects/${projectId}/locations/${location}/reservations/${reservationId}`;
  const request = {
    resource,
  };

  try {
    const [policy] = await client.getIamPolicy(request);

    console.log(`Policy for reservation ${reservationId}:`);
    if (policy.bindings && policy.bindings.length > 0) {
      console.log(JSON.stringify(policy.bindings, null, 2));
    } else {
      console.log('This reservation has no policy bindings.');
    }
  } catch (err) {
    if (err.code === status.NOT_FOUND) {
      console.log(
        `Reservation '${reservationId}' not found in project '${projectId}' at location '${location}'.`,
      );
    } else {
      console.error('Error getting IAM policy:', err);
    }
  }
}

Python

Avant d'essayer cet exemple, suivez les instructions de configuration pour Python du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Python.

Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.

from google.api_core.exceptions import NotFound
from google.cloud import bigquery_reservation_v1

client = bigquery_reservation_v1.ReservationServiceClient()


def get_reservation_iam_policy(project_id: str, location: str, reservation_id: str):
    """Gets the IAM policy for a reservation.

    An IAM policy is a collection of bindings that associates one or more
    principals with a single role. This sample demonstrates how to retrieve
    the policy for a reservation.

    Args:
        project_id: The Google Cloud project ID.
        location: The geographic location of the reservation, such as "us-central1".
        reservation_id: The ID of the reservation to get the policy for.
    """
    resource = client.reservation_path(project_id, location, reservation_id)

    try:
        policy = client.get_iam_policy(resource=resource)

        print(f"Got IAM policy for reservation: {resource}")
        for binding in policy.bindings:
            print(f"  Role: {binding.role}")
            print(f"  Members: {binding.members}")
    except NotFound:
        print(f"Reservation not found: {resource}")

Étapes suivantes

Pour rechercher et filtrer des exemples de code pour d'autres produits Google Cloud , consultez l'explorateur d'exemplesGoogle Cloud .