Definir política IAM

Definir uma política do IAM.

Exemplo de código

Go

Antes de testar essa amostra, siga as instruções de configuração para Go no Guia de início rápido do Data Catalog usando as bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Data Catalog Go (em inglês).

import (
	"context"
	"fmt"
	"io"

	datacatalog "cloud.google.com/go/datacatalog/apiv1beta1"
	iampb "google.golang.org/genproto/googleapis/iam/v1"
)

// setIAMPolicy demonstrates altering the policy of a given taxonomy or policy
// tag resource.  In this example, we append a binding to the existing policy
// to add the fine grained reader role to a specific member.
func setIAMPolicy(w io.Writer, resourceID, member string) error {
	// resourceID := "projects/myproject/locations/us/taxonomies/1234/policyTags/5678"
	// member := "group:my-trusted-group@example.com"
	ctx := context.Background()
	policyClient, err := datacatalog.NewPolicyTagManagerClient(ctx)
	if err != nil {
		return fmt.Errorf("datacatalog.NewPolicyTagManagerClient: %v", err)
	}
	defer policyClient.Close()

	// First, retrieve the existing policy.
	req := &iampb.GetIamPolicyRequest{
		Resource: resourceID,
		Options: &iampb.GetPolicyOptions{
			RequestedPolicyVersion: 3,
		},
	}
	policy, err := policyClient.GetIamPolicy(ctx, req)
	if err != nil {
		return fmt.Errorf("GetIamPolicy: %v", err)
	}

	// Alter the policy to add an additional binding.
	newPolicy := policy
	newPolicy.Bindings = append(newPolicy.Bindings, &iampb.Binding{
		Role:    "roles/datacatalog.categoryFineGrainedReader",
		Members: []string{member},
	})

	sReq := &iampb.SetIamPolicyRequest{
		Resource: resourceID,
		Policy:   newPolicy,
	}
	updatedPolicy, err := policyClient.SetIamPolicy(ctx, sReq)
	if err != nil {
		return fmt.Errorf("SetIamPolicy: %v", err)
	}
	fmt.Fprintf(w, "set policy on resource %s with Etag %x\n", resourceID, updatedPolicy.Etag)
	return nil
}

A seguir

Para pesquisar e filtrar exemplos de código de outros produtos do Google Cloud, consulte o navegador de exemplos do Google Cloud.