kms

package
v7.20.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 24, 2024 License: Apache-2.0 Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type CryptoKey

type CryptoKey struct {
	pulumi.CustomResourceState

	// The resource name of the backend environment associated with all CryptoKeyVersions within this CryptoKey.
	// The resource name is in the format "projects/*/locations/*/ekmConnections/*" and only applies to "EXTERNAL_VPC" keys.
	CryptoKeyBackend pulumi.StringOutput `pulumi:"cryptoKeyBackend"`
	// The period of time that versions of this key spend in the DESTROY_SCHEDULED state before transitioning to DESTROYED.
	// If not specified at creation time, the default duration is 24 hours.
	DestroyScheduledDuration pulumi.StringOutput `pulumi:"destroyScheduledDuration"`
	// All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
	EffectiveLabels pulumi.StringMapOutput `pulumi:"effectiveLabels"`
	// Whether this key may contain imported versions only.
	ImportOnly pulumi.BoolOutput `pulumi:"importOnly"`
	// The KeyRing that this key belongs to.
	// Format: `'projects/{{project}}/locations/{{location}}/keyRings/{{keyRing}}'`.
	//
	// ***
	KeyRing pulumi.StringOutput `pulumi:"keyRing"`
	// Labels with user-defined metadata to apply to this resource.
	//
	// **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
	// Please refer to the field `effectiveLabels` for all of the labels present on the resource.
	Labels pulumi.StringMapOutput `pulumi:"labels"`
	// The resource name for the CryptoKey.
	Name pulumi.StringOutput `pulumi:"name"`
	// A copy of the primary CryptoKeyVersion that will be used by cryptoKeys.encrypt when this CryptoKey is given in EncryptRequest.name.
	// Keys with purpose ENCRYPT_DECRYPT may have a primary. For other keys, this field will be unset.
	// Structure is documented below.
	Primaries CryptoKeyPrimaryArrayOutput `pulumi:"primaries"`
	// The combination of labels configured directly on the resource
	// and default labels configured on the provider.
	PulumiLabels pulumi.StringMapOutput `pulumi:"pulumiLabels"`
	// The immutable purpose of this CryptoKey. See the
	// [purpose reference](https://cloud.google.com/kms/docs/reference/rest/v1/projects.locations.keyRings.cryptoKeys#CryptoKeyPurpose)
	// for possible inputs.
	// Default value is "ENCRYPT_DECRYPT".
	Purpose pulumi.StringPtrOutput `pulumi:"purpose"`
	// Every time this period passes, generate a new CryptoKeyVersion and set it as the primary.
	// The first rotation will take place after the specified period. The rotation period has
	// the format of a decimal number with up to 9 fractional digits, followed by the
	// letter `s` (seconds). It must be greater than a day (ie, 86400).
	RotationPeriod pulumi.StringPtrOutput `pulumi:"rotationPeriod"`
	// If set to true, the request will create a CryptoKey without any CryptoKeyVersions.
	// You must use the `kms.KeyRingImportJob` resource to import the CryptoKeyVersion.
	SkipInitialVersionCreation pulumi.BoolPtrOutput `pulumi:"skipInitialVersionCreation"`
	// A template describing settings for new crypto key versions.
	// Structure is documented below.
	VersionTemplate CryptoKeyVersionTemplateOutput `pulumi:"versionTemplate"`
}

A `CryptoKey` represents a logical key that can be used for cryptographic operations.

> **Note:** CryptoKeys cannot be deleted from Google Cloud Platform. Destroying a provider-managed CryptoKey will remove it from state and delete all CryptoKeyVersions, rendering the key unusable, but *will not delete the resource from the project.* When the provider destroys these keys, any data previously encrypted with these keys will be irrecoverable. For this reason, it is strongly recommended that you add lifecycle hooks to the resource to prevent accidental destruction.

To get more information about CryptoKey, see:

* [API documentation](https://cloud.google.com/kms/docs/reference/rest/v1/projects.locations.keyRings.cryptoKeys) * How-to Guides

## Example Usage

### Kms Crypto Key Basic

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		keyring, err := kms.NewKeyRing(ctx, "keyring", &kms.KeyRingArgs{
			Name:     pulumi.String("keyring-example"),
			Location: pulumi.String("global"),
		})
		if err != nil {
			return err
		}
		_, err = kms.NewCryptoKey(ctx, "example-key", &kms.CryptoKeyArgs{
			Name:           pulumi.String("crypto-key-example"),
			KeyRing:        keyring.ID(),
			RotationPeriod: pulumi.String("7776000s"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

``` ### Kms Crypto Key Asymmetric Sign

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		keyring, err := kms.NewKeyRing(ctx, "keyring", &kms.KeyRingArgs{
			Name:     pulumi.String("keyring-example"),
			Location: pulumi.String("global"),
		})
		if err != nil {
			return err
		}
		_, err = kms.NewCryptoKey(ctx, "example-asymmetric-sign-key", &kms.CryptoKeyArgs{
			Name:    pulumi.String("crypto-key-example"),
			KeyRing: keyring.ID(),
			Purpose: pulumi.String("ASYMMETRIC_SIGN"),
			VersionTemplate: &kms.CryptoKeyVersionTemplateArgs{
				Algorithm: pulumi.String("EC_SIGN_P384_SHA384"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## Import

CryptoKey can be imported using any of these accepted formats:

* `{{key_ring}}/cryptoKeys/{{name}}`

* `{{key_ring}}/{{name}}`

When using the `pulumi import` command, CryptoKey can be imported using one of the formats above. For example:

```sh $ pulumi import gcp:kms/cryptoKey:CryptoKey default {{key_ring}}/cryptoKeys/{{name}} ```

```sh $ pulumi import gcp:kms/cryptoKey:CryptoKey default {{key_ring}}/{{name}} ```

func GetCryptoKey

func GetCryptoKey(ctx *pulumi.Context,
	name string, id pulumi.IDInput, state *CryptoKeyState, opts ...pulumi.ResourceOption) (*CryptoKey, error)

GetCryptoKey gets an existing CryptoKey resource's state with the given name, ID, and optional state properties that are used to uniquely qualify the lookup (nil if not required).

func NewCryptoKey

func NewCryptoKey(ctx *pulumi.Context,
	name string, args *CryptoKeyArgs, opts ...pulumi.ResourceOption) (*CryptoKey, error)

NewCryptoKey registers a new resource with the given unique name, arguments, and options.

func (*CryptoKey) ElementType

func (*CryptoKey) ElementType() reflect.Type

func (*CryptoKey) ToCryptoKeyOutput

func (i *CryptoKey) ToCryptoKeyOutput() CryptoKeyOutput

func (*CryptoKey) ToCryptoKeyOutputWithContext

func (i *CryptoKey) ToCryptoKeyOutputWithContext(ctx context.Context) CryptoKeyOutput

type CryptoKeyArgs

type CryptoKeyArgs struct {
	// The resource name of the backend environment associated with all CryptoKeyVersions within this CryptoKey.
	// The resource name is in the format "projects/*/locations/*/ekmConnections/*" and only applies to "EXTERNAL_VPC" keys.
	CryptoKeyBackend pulumi.StringPtrInput
	// The period of time that versions of this key spend in the DESTROY_SCHEDULED state before transitioning to DESTROYED.
	// If not specified at creation time, the default duration is 24 hours.
	DestroyScheduledDuration pulumi.StringPtrInput
	// Whether this key may contain imported versions only.
	ImportOnly pulumi.BoolPtrInput
	// The KeyRing that this key belongs to.
	// Format: `'projects/{{project}}/locations/{{location}}/keyRings/{{keyRing}}'`.
	//
	// ***
	KeyRing pulumi.StringInput
	// Labels with user-defined metadata to apply to this resource.
	//
	// **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
	// Please refer to the field `effectiveLabels` for all of the labels present on the resource.
	Labels pulumi.StringMapInput
	// The resource name for the CryptoKey.
	Name pulumi.StringPtrInput
	// The immutable purpose of this CryptoKey. See the
	// [purpose reference](https://cloud.google.com/kms/docs/reference/rest/v1/projects.locations.keyRings.cryptoKeys#CryptoKeyPurpose)
	// for possible inputs.
	// Default value is "ENCRYPT_DECRYPT".
	Purpose pulumi.StringPtrInput
	// Every time this period passes, generate a new CryptoKeyVersion and set it as the primary.
	// The first rotation will take place after the specified period. The rotation period has
	// the format of a decimal number with up to 9 fractional digits, followed by the
	// letter `s` (seconds). It must be greater than a day (ie, 86400).
	RotationPeriod pulumi.StringPtrInput
	// If set to true, the request will create a CryptoKey without any CryptoKeyVersions.
	// You must use the `kms.KeyRingImportJob` resource to import the CryptoKeyVersion.
	SkipInitialVersionCreation pulumi.BoolPtrInput
	// A template describing settings for new crypto key versions.
	// Structure is documented below.
	VersionTemplate CryptoKeyVersionTemplatePtrInput
}

The set of arguments for constructing a CryptoKey resource.

func (CryptoKeyArgs) ElementType

func (CryptoKeyArgs) ElementType() reflect.Type

type CryptoKeyArray

type CryptoKeyArray []CryptoKeyInput

func (CryptoKeyArray) ElementType

func (CryptoKeyArray) ElementType() reflect.Type

func (CryptoKeyArray) ToCryptoKeyArrayOutput

func (i CryptoKeyArray) ToCryptoKeyArrayOutput() CryptoKeyArrayOutput

func (CryptoKeyArray) ToCryptoKeyArrayOutputWithContext

func (i CryptoKeyArray) ToCryptoKeyArrayOutputWithContext(ctx context.Context) CryptoKeyArrayOutput

type CryptoKeyArrayInput

type CryptoKeyArrayInput interface {
	pulumi.Input

	ToCryptoKeyArrayOutput() CryptoKeyArrayOutput
	ToCryptoKeyArrayOutputWithContext(context.Context) CryptoKeyArrayOutput
}

CryptoKeyArrayInput is an input type that accepts CryptoKeyArray and CryptoKeyArrayOutput values. You can construct a concrete instance of `CryptoKeyArrayInput` via:

CryptoKeyArray{ CryptoKeyArgs{...} }

type CryptoKeyArrayOutput

type CryptoKeyArrayOutput struct{ *pulumi.OutputState }

func (CryptoKeyArrayOutput) ElementType

func (CryptoKeyArrayOutput) ElementType() reflect.Type

func (CryptoKeyArrayOutput) Index

func (CryptoKeyArrayOutput) ToCryptoKeyArrayOutput

func (o CryptoKeyArrayOutput) ToCryptoKeyArrayOutput() CryptoKeyArrayOutput

func (CryptoKeyArrayOutput) ToCryptoKeyArrayOutputWithContext

func (o CryptoKeyArrayOutput) ToCryptoKeyArrayOutputWithContext(ctx context.Context) CryptoKeyArrayOutput

type CryptoKeyIAMBinding

type CryptoKeyIAMBinding struct {
	pulumi.CustomResourceState

	// An [IAM Condition](https://cloud.google.com/iam/docs/conditions-overview) for a given binding.
	// Structure is documented below.
	Condition CryptoKeyIAMBindingConditionPtrOutput `pulumi:"condition"`
	// The crypto key ID, in the form
	// `{project_id}/{location_name}/{key_ring_name}/{crypto_key_name}` or
	// `{location_name}/{key_ring_name}/{crypto_key_name}`. In the second form,
	// the provider's project setting will be used as a fallback.
	CryptoKeyId pulumi.StringOutput `pulumi:"cryptoKeyId"`
	// (Computed) The etag of the project's IAM policy.
	Etag pulumi.StringOutput `pulumi:"etag"`
	// Identities that will be granted the privilege in `role`.
	// Each entry can have one of the following values:
	// * **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.
	// * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
	// * **user:{emailid}**: An email address that represents a specific Google account. For example, jane@example.com or joe@example.com.
	// * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
	// * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
	// * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.
	Members pulumi.StringArrayOutput `pulumi:"members"`
	// The role that should be applied. Note that custom roles must be of the format
	// `[projects|organizations]/{parent-name}/roles/{role-name}`.
	Role pulumi.StringOutput `pulumi:"role"`
}

Three different resources help you manage your IAM policy for KMS crypto key. Each of these resources serves a different use case:

* `kms.CryptoKeyIAMPolicy`: Authoritative. Sets the IAM policy for the crypto key and replaces any existing policy already attached. * `kms.CryptoKeyIAMBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the crypto key are preserved. * `kms.CryptoKeyIAMMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the crypto key are preserved.

> **Note:** `kms.CryptoKeyIAMPolicy` **cannot** be used in conjunction with `kms.CryptoKeyIAMBinding` and `kms.CryptoKeyIAMMember` or they will fight over what your policy should be.

> **Note:** `kms.CryptoKeyIAMBinding` resources **can be** used in conjunction with `kms.CryptoKeyIAMMember` resources **only if** they do not grant privilege to the same role.

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		keyring, err := kms.NewKeyRing(ctx, "keyring", &kms.KeyRingArgs{
			Name:     pulumi.String("keyring-example"),
			Location: pulumi.String("global"),
		})
		if err != nil {
			return err
		}
		key, err := kms.NewCryptoKey(ctx, "key", &kms.CryptoKeyArgs{
			Name:           pulumi.String("crypto-key-example"),
			KeyRing:        keyring.ID(),
			RotationPeriod: pulumi.String("7776000s"),
		})
		if err != nil {
			return err
		}
		admin, err := organizations.LookupIAMPolicy(ctx, &organizations.LookupIAMPolicyArgs{
			Bindings: []organizations.GetIAMPolicyBinding{
				{
					Role: "roles/cloudkms.cryptoKeyEncrypter",
					Members: []string{
						"user:jane@example.com",
					},
				},
			},
		}, nil)
		if err != nil {
			return err
		}
		_, err = kms.NewCryptoKeyIAMPolicy(ctx, "crypto_key", &kms.CryptoKeyIAMPolicyArgs{
			CryptoKeyId: key.ID(),
			PolicyData:  pulumi.String(admin.PolicyData),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

With IAM Conditions:

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := organizations.LookupIAMPolicy(ctx, &organizations.LookupIAMPolicyArgs{
			Bindings: []organizations.GetIAMPolicyBinding{
				{
					Role: "roles/cloudkms.cryptoKeyEncrypter",
					Members: []string{
						"user:jane@example.com",
					},
					Condition: {
						Title:       "expires_after_2019_12_31",
						Description: pulumi.StringRef("Expiring at midnight of 2019-12-31"),
						Expression:  "request.time < timestamp(\"2020-01-01T00:00:00Z\")",
					},
				},
			},
		}, nil)
		if err != nil {
			return err
		}
		return nil
	})
}

```

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.NewCryptoKeyIAMBinding(ctx, "crypto_key", &kms.CryptoKeyIAMBindingArgs{
			CryptoKeyId: pulumi.Any(key.Id),
			Role:        pulumi.String("roles/cloudkms.cryptoKeyEncrypter"),
			Members: pulumi.StringArray{
				pulumi.String("user:jane@example.com"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

With IAM Conditions:

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.NewCryptoKeyIAMBinding(ctx, "crypto_key", &kms.CryptoKeyIAMBindingArgs{
			CryptoKeyId: pulumi.Any(key.Id),
			Role:        pulumi.String("roles/cloudkms.cryptoKeyEncrypter"),
			Members: pulumi.StringArray{
				pulumi.String("user:jane@example.com"),
			},
			Condition: &kms.CryptoKeyIAMBindingConditionArgs{
				Title:       pulumi.String("expires_after_2019_12_31"),
				Description: pulumi.String("Expiring at midnight of 2019-12-31"),
				Expression:  pulumi.String("request.time < timestamp(\"2020-01-01T00:00:00Z\")"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.NewCryptoKeyIAMMember(ctx, "crypto_key", &kms.CryptoKeyIAMMemberArgs{
			CryptoKeyId: pulumi.Any(key.Id),
			Role:        pulumi.String("roles/cloudkms.cryptoKeyEncrypter"),
			Member:      pulumi.String("user:jane@example.com"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

With IAM Conditions:

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.NewCryptoKeyIAMMember(ctx, "crypto_key", &kms.CryptoKeyIAMMemberArgs{
			CryptoKeyId: pulumi.Any(key.Id),
			Role:        pulumi.String("roles/cloudkms.cryptoKeyEncrypter"),
			Member:      pulumi.String("user:jane@example.com"),
			Condition: &kms.CryptoKeyIAMMemberConditionArgs{
				Title:       pulumi.String("expires_after_2019_12_31"),
				Description: pulumi.String("Expiring at midnight of 2019-12-31"),
				Expression:  pulumi.String("request.time < timestamp(\"2020-01-01T00:00:00Z\")"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## Import

### Importing IAM policies

IAM policy imports use the identifier of the KMS crypto key only. For example:

* `{{project_id}}/{{location}}/{{key_ring_name}}/{{crypto_key_name}}`

An `import` block (Terraform v1.5.0 and later) can be used to import IAM policies:

tf

import {

id = "{{project_id}}/{{location}}/{{key_ring_name}}/{{crypto_key_name}}"

to = google_kms_crypto_key_iam_policy.default

}

The `pulumi import` command can also be used:

```sh $ pulumi import gcp:kms/cryptoKeyIAMBinding:CryptoKeyIAMBinding default {{project_id}}/{{location}}/{{key_ring_name}}/{{crypto_key_name}} ```

func GetCryptoKeyIAMBinding

func GetCryptoKeyIAMBinding(ctx *pulumi.Context,
	name string, id pulumi.IDInput, state *CryptoKeyIAMBindingState, opts ...pulumi.ResourceOption) (*CryptoKeyIAMBinding, error)

GetCryptoKeyIAMBinding gets an existing CryptoKeyIAMBinding resource's state with the given name, ID, and optional state properties that are used to uniquely qualify the lookup (nil if not required).

func NewCryptoKeyIAMBinding

func NewCryptoKeyIAMBinding(ctx *pulumi.Context,
	name string, args *CryptoKeyIAMBindingArgs, opts ...pulumi.ResourceOption) (*CryptoKeyIAMBinding, error)

NewCryptoKeyIAMBinding registers a new resource with the given unique name, arguments, and options.

func (*CryptoKeyIAMBinding) ElementType

func (*CryptoKeyIAMBinding) ElementType() reflect.Type

func (*CryptoKeyIAMBinding) ToCryptoKeyIAMBindingOutput

func (i *CryptoKeyIAMBinding) ToCryptoKeyIAMBindingOutput() CryptoKeyIAMBindingOutput

func (*CryptoKeyIAMBinding) ToCryptoKeyIAMBindingOutputWithContext

func (i *CryptoKeyIAMBinding) ToCryptoKeyIAMBindingOutputWithContext(ctx context.Context) CryptoKeyIAMBindingOutput

type CryptoKeyIAMBindingArgs

type CryptoKeyIAMBindingArgs struct {
	// An [IAM Condition](https://cloud.google.com/iam/docs/conditions-overview) for a given binding.
	// Structure is documented below.
	Condition CryptoKeyIAMBindingConditionPtrInput
	// The crypto key ID, in the form
	// `{project_id}/{location_name}/{key_ring_name}/{crypto_key_name}` or
	// `{location_name}/{key_ring_name}/{crypto_key_name}`. In the second form,
	// the provider's project setting will be used as a fallback.
	CryptoKeyId pulumi.StringInput
	// Identities that will be granted the privilege in `role`.
	// Each entry can have one of the following values:
	// * **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.
	// * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
	// * **user:{emailid}**: An email address that represents a specific Google account. For example, jane@example.com or joe@example.com.
	// * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
	// * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
	// * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.
	Members pulumi.StringArrayInput
	// The role that should be applied. Note that custom roles must be of the format
	// `[projects|organizations]/{parent-name}/roles/{role-name}`.
	Role pulumi.StringInput
}

The set of arguments for constructing a CryptoKeyIAMBinding resource.

func (CryptoKeyIAMBindingArgs) ElementType

func (CryptoKeyIAMBindingArgs) ElementType() reflect.Type

type CryptoKeyIAMBindingArray

type CryptoKeyIAMBindingArray []CryptoKeyIAMBindingInput

func (CryptoKeyIAMBindingArray) ElementType

func (CryptoKeyIAMBindingArray) ElementType() reflect.Type

func (CryptoKeyIAMBindingArray) ToCryptoKeyIAMBindingArrayOutput

func (i CryptoKeyIAMBindingArray) ToCryptoKeyIAMBindingArrayOutput() CryptoKeyIAMBindingArrayOutput

func (CryptoKeyIAMBindingArray) ToCryptoKeyIAMBindingArrayOutputWithContext

func (i CryptoKeyIAMBindingArray) ToCryptoKeyIAMBindingArrayOutputWithContext(ctx context.Context) CryptoKeyIAMBindingArrayOutput

type CryptoKeyIAMBindingArrayInput

type CryptoKeyIAMBindingArrayInput interface {
	pulumi.Input

	ToCryptoKeyIAMBindingArrayOutput() CryptoKeyIAMBindingArrayOutput
	ToCryptoKeyIAMBindingArrayOutputWithContext(context.Context) CryptoKeyIAMBindingArrayOutput
}

CryptoKeyIAMBindingArrayInput is an input type that accepts CryptoKeyIAMBindingArray and CryptoKeyIAMBindingArrayOutput values. You can construct a concrete instance of `CryptoKeyIAMBindingArrayInput` via:

CryptoKeyIAMBindingArray{ CryptoKeyIAMBindingArgs{...} }

type CryptoKeyIAMBindingArrayOutput

type CryptoKeyIAMBindingArrayOutput struct{ *pulumi.OutputState }

func (CryptoKeyIAMBindingArrayOutput) ElementType

func (CryptoKeyIAMBindingArrayOutput) Index

func (CryptoKeyIAMBindingArrayOutput) ToCryptoKeyIAMBindingArrayOutput

func (o CryptoKeyIAMBindingArrayOutput) ToCryptoKeyIAMBindingArrayOutput() CryptoKeyIAMBindingArrayOutput

func (CryptoKeyIAMBindingArrayOutput) ToCryptoKeyIAMBindingArrayOutputWithContext

func (o CryptoKeyIAMBindingArrayOutput) ToCryptoKeyIAMBindingArrayOutputWithContext(ctx context.Context) CryptoKeyIAMBindingArrayOutput

type CryptoKeyIAMBindingCondition

type CryptoKeyIAMBindingCondition struct {
	// An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
	//
	// > **Warning:** The provider considers the `role` and condition contents (`title`+`description`+`expression`) as the
	// identifier for the binding. This means that if any part of the condition is changed out-of-band, the provider will
	// consider it to be an entirely different resource and will treat it as such.
	Description *string `pulumi:"description"`
	// Textual representation of an expression in Common Expression Language syntax.
	Expression string `pulumi:"expression"`
	// A title for the expression, i.e. a short string describing its purpose.
	Title string `pulumi:"title"`
}

type CryptoKeyIAMBindingConditionArgs

type CryptoKeyIAMBindingConditionArgs struct {
	// An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
	//
	// > **Warning:** The provider considers the `role` and condition contents (`title`+`description`+`expression`) as the
	// identifier for the binding. This means that if any part of the condition is changed out-of-band, the provider will
	// consider it to be an entirely different resource and will treat it as such.
	Description pulumi.StringPtrInput `pulumi:"description"`
	// Textual representation of an expression in Common Expression Language syntax.
	Expression pulumi.StringInput `pulumi:"expression"`
	// A title for the expression, i.e. a short string describing its purpose.
	Title pulumi.StringInput `pulumi:"title"`
}

func (CryptoKeyIAMBindingConditionArgs) ElementType

func (CryptoKeyIAMBindingConditionArgs) ToCryptoKeyIAMBindingConditionOutput

func (i CryptoKeyIAMBindingConditionArgs) ToCryptoKeyIAMBindingConditionOutput() CryptoKeyIAMBindingConditionOutput

func (CryptoKeyIAMBindingConditionArgs) ToCryptoKeyIAMBindingConditionOutputWithContext

func (i CryptoKeyIAMBindingConditionArgs) ToCryptoKeyIAMBindingConditionOutputWithContext(ctx context.Context) CryptoKeyIAMBindingConditionOutput

func (CryptoKeyIAMBindingConditionArgs) ToCryptoKeyIAMBindingConditionPtrOutput

func (i CryptoKeyIAMBindingConditionArgs) ToCryptoKeyIAMBindingConditionPtrOutput() CryptoKeyIAMBindingConditionPtrOutput

func (CryptoKeyIAMBindingConditionArgs) ToCryptoKeyIAMBindingConditionPtrOutputWithContext

func (i CryptoKeyIAMBindingConditionArgs) ToCryptoKeyIAMBindingConditionPtrOutputWithContext(ctx context.Context) CryptoKeyIAMBindingConditionPtrOutput

type CryptoKeyIAMBindingConditionInput

type CryptoKeyIAMBindingConditionInput interface {
	pulumi.Input

	ToCryptoKeyIAMBindingConditionOutput() CryptoKeyIAMBindingConditionOutput
	ToCryptoKeyIAMBindingConditionOutputWithContext(context.Context) CryptoKeyIAMBindingConditionOutput
}

CryptoKeyIAMBindingConditionInput is an input type that accepts CryptoKeyIAMBindingConditionArgs and CryptoKeyIAMBindingConditionOutput values. You can construct a concrete instance of `CryptoKeyIAMBindingConditionInput` via:

CryptoKeyIAMBindingConditionArgs{...}

type CryptoKeyIAMBindingConditionOutput

type CryptoKeyIAMBindingConditionOutput struct{ *pulumi.OutputState }

func (CryptoKeyIAMBindingConditionOutput) Description

An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.

> **Warning:** The provider considers the `role` and condition contents (`title`+`description`+`expression`) as the identifier for the binding. This means that if any part of the condition is changed out-of-band, the provider will consider it to be an entirely different resource and will treat it as such.

func (CryptoKeyIAMBindingConditionOutput) ElementType

func (CryptoKeyIAMBindingConditionOutput) Expression

Textual representation of an expression in Common Expression Language syntax.

func (CryptoKeyIAMBindingConditionOutput) Title

A title for the expression, i.e. a short string describing its purpose.

func (CryptoKeyIAMBindingConditionOutput) ToCryptoKeyIAMBindingConditionOutput

func (o CryptoKeyIAMBindingConditionOutput) ToCryptoKeyIAMBindingConditionOutput() CryptoKeyIAMBindingConditionOutput

func (CryptoKeyIAMBindingConditionOutput) ToCryptoKeyIAMBindingConditionOutputWithContext

func (o CryptoKeyIAMBindingConditionOutput) ToCryptoKeyIAMBindingConditionOutputWithContext(ctx context.Context) CryptoKeyIAMBindingConditionOutput

func (CryptoKeyIAMBindingConditionOutput) ToCryptoKeyIAMBindingConditionPtrOutput

func (o CryptoKeyIAMBindingConditionOutput) ToCryptoKeyIAMBindingConditionPtrOutput() CryptoKeyIAMBindingConditionPtrOutput

func (CryptoKeyIAMBindingConditionOutput) ToCryptoKeyIAMBindingConditionPtrOutputWithContext

func (o CryptoKeyIAMBindingConditionOutput) ToCryptoKeyIAMBindingConditionPtrOutputWithContext(ctx context.Context) CryptoKeyIAMBindingConditionPtrOutput

type CryptoKeyIAMBindingConditionPtrInput

type CryptoKeyIAMBindingConditionPtrInput interface {
	pulumi.Input

	ToCryptoKeyIAMBindingConditionPtrOutput() CryptoKeyIAMBindingConditionPtrOutput
	ToCryptoKeyIAMBindingConditionPtrOutputWithContext(context.Context) CryptoKeyIAMBindingConditionPtrOutput
}

CryptoKeyIAMBindingConditionPtrInput is an input type that accepts CryptoKeyIAMBindingConditionArgs, CryptoKeyIAMBindingConditionPtr and CryptoKeyIAMBindingConditionPtrOutput values. You can construct a concrete instance of `CryptoKeyIAMBindingConditionPtrInput` via:

        CryptoKeyIAMBindingConditionArgs{...}

or:

        nil

type CryptoKeyIAMBindingConditionPtrOutput

type CryptoKeyIAMBindingConditionPtrOutput struct{ *pulumi.OutputState }

func (CryptoKeyIAMBindingConditionPtrOutput) Description

An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.

> **Warning:** The provider considers the `role` and condition contents (`title`+`description`+`expression`) as the identifier for the binding. This means that if any part of the condition is changed out-of-band, the provider will consider it to be an entirely different resource and will treat it as such.

func (CryptoKeyIAMBindingConditionPtrOutput) Elem

func (CryptoKeyIAMBindingConditionPtrOutput) ElementType

func (CryptoKeyIAMBindingConditionPtrOutput) Expression

Textual representation of an expression in Common Expression Language syntax.

func (CryptoKeyIAMBindingConditionPtrOutput) Title

A title for the expression, i.e. a short string describing its purpose.

func (CryptoKeyIAMBindingConditionPtrOutput) ToCryptoKeyIAMBindingConditionPtrOutput

func (o CryptoKeyIAMBindingConditionPtrOutput) ToCryptoKeyIAMBindingConditionPtrOutput() CryptoKeyIAMBindingConditionPtrOutput

func (CryptoKeyIAMBindingConditionPtrOutput) ToCryptoKeyIAMBindingConditionPtrOutputWithContext

func (o CryptoKeyIAMBindingConditionPtrOutput) ToCryptoKeyIAMBindingConditionPtrOutputWithContext(ctx context.Context) CryptoKeyIAMBindingConditionPtrOutput

type CryptoKeyIAMBindingInput

type CryptoKeyIAMBindingInput interface {
	pulumi.Input

	ToCryptoKeyIAMBindingOutput() CryptoKeyIAMBindingOutput
	ToCryptoKeyIAMBindingOutputWithContext(ctx context.Context) CryptoKeyIAMBindingOutput
}

type CryptoKeyIAMBindingMap

type CryptoKeyIAMBindingMap map[string]CryptoKeyIAMBindingInput

func (CryptoKeyIAMBindingMap) ElementType

func (CryptoKeyIAMBindingMap) ElementType() reflect.Type

func (CryptoKeyIAMBindingMap) ToCryptoKeyIAMBindingMapOutput

func (i CryptoKeyIAMBindingMap) ToCryptoKeyIAMBindingMapOutput() CryptoKeyIAMBindingMapOutput

func (CryptoKeyIAMBindingMap) ToCryptoKeyIAMBindingMapOutputWithContext

func (i CryptoKeyIAMBindingMap) ToCryptoKeyIAMBindingMapOutputWithContext(ctx context.Context) CryptoKeyIAMBindingMapOutput

type CryptoKeyIAMBindingMapInput

type CryptoKeyIAMBindingMapInput interface {
	pulumi.Input

	ToCryptoKeyIAMBindingMapOutput() CryptoKeyIAMBindingMapOutput
	ToCryptoKeyIAMBindingMapOutputWithContext(context.Context) CryptoKeyIAMBindingMapOutput
}

CryptoKeyIAMBindingMapInput is an input type that accepts CryptoKeyIAMBindingMap and CryptoKeyIAMBindingMapOutput values. You can construct a concrete instance of `CryptoKeyIAMBindingMapInput` via:

CryptoKeyIAMBindingMap{ "key": CryptoKeyIAMBindingArgs{...} }

type CryptoKeyIAMBindingMapOutput

type CryptoKeyIAMBindingMapOutput struct{ *pulumi.OutputState }

func (CryptoKeyIAMBindingMapOutput) ElementType

func (CryptoKeyIAMBindingMapOutput) MapIndex

func (CryptoKeyIAMBindingMapOutput) ToCryptoKeyIAMBindingMapOutput

func (o CryptoKeyIAMBindingMapOutput) ToCryptoKeyIAMBindingMapOutput() CryptoKeyIAMBindingMapOutput

func (CryptoKeyIAMBindingMapOutput) ToCryptoKeyIAMBindingMapOutputWithContext

func (o CryptoKeyIAMBindingMapOutput) ToCryptoKeyIAMBindingMapOutputWithContext(ctx context.Context) CryptoKeyIAMBindingMapOutput

type CryptoKeyIAMBindingOutput

type CryptoKeyIAMBindingOutput struct{ *pulumi.OutputState }

func (CryptoKeyIAMBindingOutput) Condition

An [IAM Condition](https://cloud.google.com/iam/docs/conditions-overview) for a given binding. Structure is documented below.

func (CryptoKeyIAMBindingOutput) CryptoKeyId

The crypto key ID, in the form `{project_id}/{location_name}/{key_ring_name}/{crypto_key_name}` or `{location_name}/{key_ring_name}/{crypto_key_name}`. In the second form, the provider's project setting will be used as a fallback.

func (CryptoKeyIAMBindingOutput) ElementType

func (CryptoKeyIAMBindingOutput) ElementType() reflect.Type

func (CryptoKeyIAMBindingOutput) Etag

(Computed) The etag of the project's IAM policy.

func (CryptoKeyIAMBindingOutput) Members

Identities that will be granted the privilege in `role`. Each entry can have one of the following values: * **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account. * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. * **user:{emailid}**: An email address that represents a specific Google account. For example, jane@example.com or joe@example.com. * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.

func (CryptoKeyIAMBindingOutput) Role

The role that should be applied. Note that custom roles must be of the format `[projects|organizations]/{parent-name}/roles/{role-name}`.

func (CryptoKeyIAMBindingOutput) ToCryptoKeyIAMBindingOutput

func (o CryptoKeyIAMBindingOutput) ToCryptoKeyIAMBindingOutput() CryptoKeyIAMBindingOutput

func (CryptoKeyIAMBindingOutput) ToCryptoKeyIAMBindingOutputWithContext

func (o CryptoKeyIAMBindingOutput) ToCryptoKeyIAMBindingOutputWithContext(ctx context.Context) CryptoKeyIAMBindingOutput

type CryptoKeyIAMBindingState

type CryptoKeyIAMBindingState struct {
	// An [IAM Condition](https://cloud.google.com/iam/docs/conditions-overview) for a given binding.
	// Structure is documented below.
	Condition CryptoKeyIAMBindingConditionPtrInput
	// The crypto key ID, in the form
	// `{project_id}/{location_name}/{key_ring_name}/{crypto_key_name}` or
	// `{location_name}/{key_ring_name}/{crypto_key_name}`. In the second form,
	// the provider's project setting will be used as a fallback.
	CryptoKeyId pulumi.StringPtrInput
	// (Computed) The etag of the project's IAM policy.
	Etag pulumi.StringPtrInput
	// Identities that will be granted the privilege in `role`.
	// Each entry can have one of the following values:
	// * **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.
	// * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
	// * **user:{emailid}**: An email address that represents a specific Google account. For example, jane@example.com or joe@example.com.
	// * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
	// * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
	// * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.
	Members pulumi.StringArrayInput
	// The role that should be applied. Note that custom roles must be of the format
	// `[projects|organizations]/{parent-name}/roles/{role-name}`.
	Role pulumi.StringPtrInput
}

func (CryptoKeyIAMBindingState) ElementType

func (CryptoKeyIAMBindingState) ElementType() reflect.Type

type CryptoKeyIAMMember

type CryptoKeyIAMMember struct {
	pulumi.CustomResourceState

	// An [IAM Condition](https://cloud.google.com/iam/docs/conditions-overview) for a given binding.
	// Structure is documented below.
	Condition CryptoKeyIAMMemberConditionPtrOutput `pulumi:"condition"`
	// The crypto key ID, in the form
	// `{project_id}/{location_name}/{key_ring_name}/{crypto_key_name}` or
	// `{location_name}/{key_ring_name}/{crypto_key_name}`. In the second form,
	// the provider's project setting will be used as a fallback.
	CryptoKeyId pulumi.StringOutput `pulumi:"cryptoKeyId"`
	// (Computed) The etag of the project's IAM policy.
	Etag pulumi.StringOutput `pulumi:"etag"`
	// Identities that will be granted the privilege in `role`.
	// Each entry can have one of the following values:
	// * **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.
	// * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
	// * **user:{emailid}**: An email address that represents a specific Google account. For example, jane@example.com or joe@example.com.
	// * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
	// * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
	// * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.
	Member pulumi.StringOutput `pulumi:"member"`
	// The role that should be applied. Note that custom roles must be of the format
	// `[projects|organizations]/{parent-name}/roles/{role-name}`.
	Role pulumi.StringOutput `pulumi:"role"`
}

Three different resources help you manage your IAM policy for KMS crypto key. Each of these resources serves a different use case:

* `kms.CryptoKeyIAMPolicy`: Authoritative. Sets the IAM policy for the crypto key and replaces any existing policy already attached. * `kms.CryptoKeyIAMBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the crypto key are preserved. * `kms.CryptoKeyIAMMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the crypto key are preserved.

> **Note:** `kms.CryptoKeyIAMPolicy` **cannot** be used in conjunction with `kms.CryptoKeyIAMBinding` and `kms.CryptoKeyIAMMember` or they will fight over what your policy should be.

> **Note:** `kms.CryptoKeyIAMBinding` resources **can be** used in conjunction with `kms.CryptoKeyIAMMember` resources **only if** they do not grant privilege to the same role.

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		keyring, err := kms.NewKeyRing(ctx, "keyring", &kms.KeyRingArgs{
			Name:     pulumi.String("keyring-example"),
			Location: pulumi.String("global"),
		})
		if err != nil {
			return err
		}
		key, err := kms.NewCryptoKey(ctx, "key", &kms.CryptoKeyArgs{
			Name:           pulumi.String("crypto-key-example"),
			KeyRing:        keyring.ID(),
			RotationPeriod: pulumi.String("7776000s"),
		})
		if err != nil {
			return err
		}
		admin, err := organizations.LookupIAMPolicy(ctx, &organizations.LookupIAMPolicyArgs{
			Bindings: []organizations.GetIAMPolicyBinding{
				{
					Role: "roles/cloudkms.cryptoKeyEncrypter",
					Members: []string{
						"user:jane@example.com",
					},
				},
			},
		}, nil)
		if err != nil {
			return err
		}
		_, err = kms.NewCryptoKeyIAMPolicy(ctx, "crypto_key", &kms.CryptoKeyIAMPolicyArgs{
			CryptoKeyId: key.ID(),
			PolicyData:  pulumi.String(admin.PolicyData),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

With IAM Conditions:

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := organizations.LookupIAMPolicy(ctx, &organizations.LookupIAMPolicyArgs{
			Bindings: []organizations.GetIAMPolicyBinding{
				{
					Role: "roles/cloudkms.cryptoKeyEncrypter",
					Members: []string{
						"user:jane@example.com",
					},
					Condition: {
						Title:       "expires_after_2019_12_31",
						Description: pulumi.StringRef("Expiring at midnight of 2019-12-31"),
						Expression:  "request.time < timestamp(\"2020-01-01T00:00:00Z\")",
					},
				},
			},
		}, nil)
		if err != nil {
			return err
		}
		return nil
	})
}

```

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.NewCryptoKeyIAMBinding(ctx, "crypto_key", &kms.CryptoKeyIAMBindingArgs{
			CryptoKeyId: pulumi.Any(key.Id),
			Role:        pulumi.String("roles/cloudkms.cryptoKeyEncrypter"),
			Members: pulumi.StringArray{
				pulumi.String("user:jane@example.com"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

With IAM Conditions:

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.NewCryptoKeyIAMBinding(ctx, "crypto_key", &kms.CryptoKeyIAMBindingArgs{
			CryptoKeyId: pulumi.Any(key.Id),
			Role:        pulumi.String("roles/cloudkms.cryptoKeyEncrypter"),
			Members: pulumi.StringArray{
				pulumi.String("user:jane@example.com"),
			},
			Condition: &kms.CryptoKeyIAMBindingConditionArgs{
				Title:       pulumi.String("expires_after_2019_12_31"),
				Description: pulumi.String("Expiring at midnight of 2019-12-31"),
				Expression:  pulumi.String("request.time < timestamp(\"2020-01-01T00:00:00Z\")"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.NewCryptoKeyIAMMember(ctx, "crypto_key", &kms.CryptoKeyIAMMemberArgs{
			CryptoKeyId: pulumi.Any(key.Id),
			Role:        pulumi.String("roles/cloudkms.cryptoKeyEncrypter"),
			Member:      pulumi.String("user:jane@example.com"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

With IAM Conditions:

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.NewCryptoKeyIAMMember(ctx, "crypto_key", &kms.CryptoKeyIAMMemberArgs{
			CryptoKeyId: pulumi.Any(key.Id),
			Role:        pulumi.String("roles/cloudkms.cryptoKeyEncrypter"),
			Member:      pulumi.String("user:jane@example.com"),
			Condition: &kms.CryptoKeyIAMMemberConditionArgs{
				Title:       pulumi.String("expires_after_2019_12_31"),
				Description: pulumi.String("Expiring at midnight of 2019-12-31"),
				Expression:  pulumi.String("request.time < timestamp(\"2020-01-01T00:00:00Z\")"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## Import

### Importing IAM policies

IAM policy imports use the identifier of the KMS crypto key only. For example:

* `{{project_id}}/{{location}}/{{key_ring_name}}/{{crypto_key_name}}`

An `import` block (Terraform v1.5.0 and later) can be used to import IAM policies:

tf

import {

id = "{{project_id}}/{{location}}/{{key_ring_name}}/{{crypto_key_name}}"

to = google_kms_crypto_key_iam_policy.default

}

The `pulumi import` command can also be used:

```sh $ pulumi import gcp:kms/cryptoKeyIAMMember:CryptoKeyIAMMember default {{project_id}}/{{location}}/{{key_ring_name}}/{{crypto_key_name}} ```

func GetCryptoKeyIAMMember

func GetCryptoKeyIAMMember(ctx *pulumi.Context,
	name string, id pulumi.IDInput, state *CryptoKeyIAMMemberState, opts ...pulumi.ResourceOption) (*CryptoKeyIAMMember, error)

GetCryptoKeyIAMMember gets an existing CryptoKeyIAMMember resource's state with the given name, ID, and optional state properties that are used to uniquely qualify the lookup (nil if not required).

func NewCryptoKeyIAMMember

func NewCryptoKeyIAMMember(ctx *pulumi.Context,
	name string, args *CryptoKeyIAMMemberArgs, opts ...pulumi.ResourceOption) (*CryptoKeyIAMMember, error)

NewCryptoKeyIAMMember registers a new resource with the given unique name, arguments, and options.

func (*CryptoKeyIAMMember) ElementType

func (*CryptoKeyIAMMember) ElementType() reflect.Type

func (*CryptoKeyIAMMember) ToCryptoKeyIAMMemberOutput

func (i *CryptoKeyIAMMember) ToCryptoKeyIAMMemberOutput() CryptoKeyIAMMemberOutput

func (*CryptoKeyIAMMember) ToCryptoKeyIAMMemberOutputWithContext

func (i *CryptoKeyIAMMember) ToCryptoKeyIAMMemberOutputWithContext(ctx context.Context) CryptoKeyIAMMemberOutput

type CryptoKeyIAMMemberArgs

type CryptoKeyIAMMemberArgs struct {
	// An [IAM Condition](https://cloud.google.com/iam/docs/conditions-overview) for a given binding.
	// Structure is documented below.
	Condition CryptoKeyIAMMemberConditionPtrInput
	// The crypto key ID, in the form
	// `{project_id}/{location_name}/{key_ring_name}/{crypto_key_name}` or
	// `{location_name}/{key_ring_name}/{crypto_key_name}`. In the second form,
	// the provider's project setting will be used as a fallback.
	CryptoKeyId pulumi.StringInput
	// Identities that will be granted the privilege in `role`.
	// Each entry can have one of the following values:
	// * **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.
	// * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
	// * **user:{emailid}**: An email address that represents a specific Google account. For example, jane@example.com or joe@example.com.
	// * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
	// * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
	// * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.
	Member pulumi.StringInput
	// The role that should be applied. Note that custom roles must be of the format
	// `[projects|organizations]/{parent-name}/roles/{role-name}`.
	Role pulumi.StringInput
}

The set of arguments for constructing a CryptoKeyIAMMember resource.

func (CryptoKeyIAMMemberArgs) ElementType

func (CryptoKeyIAMMemberArgs) ElementType() reflect.Type

type CryptoKeyIAMMemberArray

type CryptoKeyIAMMemberArray []CryptoKeyIAMMemberInput

func (CryptoKeyIAMMemberArray) ElementType

func (CryptoKeyIAMMemberArray) ElementType() reflect.Type

func (CryptoKeyIAMMemberArray) ToCryptoKeyIAMMemberArrayOutput

func (i CryptoKeyIAMMemberArray) ToCryptoKeyIAMMemberArrayOutput() CryptoKeyIAMMemberArrayOutput

func (CryptoKeyIAMMemberArray) ToCryptoKeyIAMMemberArrayOutputWithContext

func (i CryptoKeyIAMMemberArray) ToCryptoKeyIAMMemberArrayOutputWithContext(ctx context.Context) CryptoKeyIAMMemberArrayOutput

type CryptoKeyIAMMemberArrayInput

type CryptoKeyIAMMemberArrayInput interface {
	pulumi.Input

	ToCryptoKeyIAMMemberArrayOutput() CryptoKeyIAMMemberArrayOutput
	ToCryptoKeyIAMMemberArrayOutputWithContext(context.Context) CryptoKeyIAMMemberArrayOutput
}

CryptoKeyIAMMemberArrayInput is an input type that accepts CryptoKeyIAMMemberArray and CryptoKeyIAMMemberArrayOutput values. You can construct a concrete instance of `CryptoKeyIAMMemberArrayInput` via:

CryptoKeyIAMMemberArray{ CryptoKeyIAMMemberArgs{...} }

type CryptoKeyIAMMemberArrayOutput

type CryptoKeyIAMMemberArrayOutput struct{ *pulumi.OutputState }

func (CryptoKeyIAMMemberArrayOutput) ElementType

func (CryptoKeyIAMMemberArrayOutput) Index

func (CryptoKeyIAMMemberArrayOutput) ToCryptoKeyIAMMemberArrayOutput

func (o CryptoKeyIAMMemberArrayOutput) ToCryptoKeyIAMMemberArrayOutput() CryptoKeyIAMMemberArrayOutput

func (CryptoKeyIAMMemberArrayOutput) ToCryptoKeyIAMMemberArrayOutputWithContext

func (o CryptoKeyIAMMemberArrayOutput) ToCryptoKeyIAMMemberArrayOutputWithContext(ctx context.Context) CryptoKeyIAMMemberArrayOutput

type CryptoKeyIAMMemberCondition

type CryptoKeyIAMMemberCondition struct {
	// An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
	//
	// > **Warning:** The provider considers the `role` and condition contents (`title`+`description`+`expression`) as the
	// identifier for the binding. This means that if any part of the condition is changed out-of-band, the provider will
	// consider it to be an entirely different resource and will treat it as such.
	Description *string `pulumi:"description"`
	// Textual representation of an expression in Common Expression Language syntax.
	Expression string `pulumi:"expression"`
	// A title for the expression, i.e. a short string describing its purpose.
	Title string `pulumi:"title"`
}

type CryptoKeyIAMMemberConditionArgs

type CryptoKeyIAMMemberConditionArgs struct {
	// An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
	//
	// > **Warning:** The provider considers the `role` and condition contents (`title`+`description`+`expression`) as the
	// identifier for the binding. This means that if any part of the condition is changed out-of-band, the provider will
	// consider it to be an entirely different resource and will treat it as such.
	Description pulumi.StringPtrInput `pulumi:"description"`
	// Textual representation of an expression in Common Expression Language syntax.
	Expression pulumi.StringInput `pulumi:"expression"`
	// A title for the expression, i.e. a short string describing its purpose.
	Title pulumi.StringInput `pulumi:"title"`
}

func (CryptoKeyIAMMemberConditionArgs) ElementType

func (CryptoKeyIAMMemberConditionArgs) ToCryptoKeyIAMMemberConditionOutput

func (i CryptoKeyIAMMemberConditionArgs) ToCryptoKeyIAMMemberConditionOutput() CryptoKeyIAMMemberConditionOutput

func (CryptoKeyIAMMemberConditionArgs) ToCryptoKeyIAMMemberConditionOutputWithContext

func (i CryptoKeyIAMMemberConditionArgs) ToCryptoKeyIAMMemberConditionOutputWithContext(ctx context.Context) CryptoKeyIAMMemberConditionOutput

func (CryptoKeyIAMMemberConditionArgs) ToCryptoKeyIAMMemberConditionPtrOutput

func (i CryptoKeyIAMMemberConditionArgs) ToCryptoKeyIAMMemberConditionPtrOutput() CryptoKeyIAMMemberConditionPtrOutput

func (CryptoKeyIAMMemberConditionArgs) ToCryptoKeyIAMMemberConditionPtrOutputWithContext

func (i CryptoKeyIAMMemberConditionArgs) ToCryptoKeyIAMMemberConditionPtrOutputWithContext(ctx context.Context) CryptoKeyIAMMemberConditionPtrOutput

type CryptoKeyIAMMemberConditionInput

type CryptoKeyIAMMemberConditionInput interface {
	pulumi.Input

	ToCryptoKeyIAMMemberConditionOutput() CryptoKeyIAMMemberConditionOutput
	ToCryptoKeyIAMMemberConditionOutputWithContext(context.Context) CryptoKeyIAMMemberConditionOutput
}

CryptoKeyIAMMemberConditionInput is an input type that accepts CryptoKeyIAMMemberConditionArgs and CryptoKeyIAMMemberConditionOutput values. You can construct a concrete instance of `CryptoKeyIAMMemberConditionInput` via:

CryptoKeyIAMMemberConditionArgs{...}

type CryptoKeyIAMMemberConditionOutput

type CryptoKeyIAMMemberConditionOutput struct{ *pulumi.OutputState }

func (CryptoKeyIAMMemberConditionOutput) Description

An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.

> **Warning:** The provider considers the `role` and condition contents (`title`+`description`+`expression`) as the identifier for the binding. This means that if any part of the condition is changed out-of-band, the provider will consider it to be an entirely different resource and will treat it as such.

func (CryptoKeyIAMMemberConditionOutput) ElementType

func (CryptoKeyIAMMemberConditionOutput) Expression

Textual representation of an expression in Common Expression Language syntax.

func (CryptoKeyIAMMemberConditionOutput) Title

A title for the expression, i.e. a short string describing its purpose.

func (CryptoKeyIAMMemberConditionOutput) ToCryptoKeyIAMMemberConditionOutput

func (o CryptoKeyIAMMemberConditionOutput) ToCryptoKeyIAMMemberConditionOutput() CryptoKeyIAMMemberConditionOutput

func (CryptoKeyIAMMemberConditionOutput) ToCryptoKeyIAMMemberConditionOutputWithContext

func (o CryptoKeyIAMMemberConditionOutput) ToCryptoKeyIAMMemberConditionOutputWithContext(ctx context.Context) CryptoKeyIAMMemberConditionOutput

func (CryptoKeyIAMMemberConditionOutput) ToCryptoKeyIAMMemberConditionPtrOutput

func (o CryptoKeyIAMMemberConditionOutput) ToCryptoKeyIAMMemberConditionPtrOutput() CryptoKeyIAMMemberConditionPtrOutput

func (CryptoKeyIAMMemberConditionOutput) ToCryptoKeyIAMMemberConditionPtrOutputWithContext

func (o CryptoKeyIAMMemberConditionOutput) ToCryptoKeyIAMMemberConditionPtrOutputWithContext(ctx context.Context) CryptoKeyIAMMemberConditionPtrOutput

type CryptoKeyIAMMemberConditionPtrInput

type CryptoKeyIAMMemberConditionPtrInput interface {
	pulumi.Input

	ToCryptoKeyIAMMemberConditionPtrOutput() CryptoKeyIAMMemberConditionPtrOutput
	ToCryptoKeyIAMMemberConditionPtrOutputWithContext(context.Context) CryptoKeyIAMMemberConditionPtrOutput
}

CryptoKeyIAMMemberConditionPtrInput is an input type that accepts CryptoKeyIAMMemberConditionArgs, CryptoKeyIAMMemberConditionPtr and CryptoKeyIAMMemberConditionPtrOutput values. You can construct a concrete instance of `CryptoKeyIAMMemberConditionPtrInput` via:

        CryptoKeyIAMMemberConditionArgs{...}

or:

        nil

type CryptoKeyIAMMemberConditionPtrOutput

type CryptoKeyIAMMemberConditionPtrOutput struct{ *pulumi.OutputState }

func (CryptoKeyIAMMemberConditionPtrOutput) Description

An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.

> **Warning:** The provider considers the `role` and condition contents (`title`+`description`+`expression`) as the identifier for the binding. This means that if any part of the condition is changed out-of-band, the provider will consider it to be an entirely different resource and will treat it as such.

func (CryptoKeyIAMMemberConditionPtrOutput) Elem

func (CryptoKeyIAMMemberConditionPtrOutput) ElementType

func (CryptoKeyIAMMemberConditionPtrOutput) Expression

Textual representation of an expression in Common Expression Language syntax.

func (CryptoKeyIAMMemberConditionPtrOutput) Title

A title for the expression, i.e. a short string describing its purpose.

func (CryptoKeyIAMMemberConditionPtrOutput) ToCryptoKeyIAMMemberConditionPtrOutput

func (o CryptoKeyIAMMemberConditionPtrOutput) ToCryptoKeyIAMMemberConditionPtrOutput() CryptoKeyIAMMemberConditionPtrOutput

func (CryptoKeyIAMMemberConditionPtrOutput) ToCryptoKeyIAMMemberConditionPtrOutputWithContext

func (o CryptoKeyIAMMemberConditionPtrOutput) ToCryptoKeyIAMMemberConditionPtrOutputWithContext(ctx context.Context) CryptoKeyIAMMemberConditionPtrOutput

type CryptoKeyIAMMemberInput

type CryptoKeyIAMMemberInput interface {
	pulumi.Input

	ToCryptoKeyIAMMemberOutput() CryptoKeyIAMMemberOutput
	ToCryptoKeyIAMMemberOutputWithContext(ctx context.Context) CryptoKeyIAMMemberOutput
}

type CryptoKeyIAMMemberMap

type CryptoKeyIAMMemberMap map[string]CryptoKeyIAMMemberInput

func (CryptoKeyIAMMemberMap) ElementType

func (CryptoKeyIAMMemberMap) ElementType() reflect.Type

func (CryptoKeyIAMMemberMap) ToCryptoKeyIAMMemberMapOutput

func (i CryptoKeyIAMMemberMap) ToCryptoKeyIAMMemberMapOutput() CryptoKeyIAMMemberMapOutput

func (CryptoKeyIAMMemberMap) ToCryptoKeyIAMMemberMapOutputWithContext

func (i CryptoKeyIAMMemberMap) ToCryptoKeyIAMMemberMapOutputWithContext(ctx context.Context) CryptoKeyIAMMemberMapOutput

type CryptoKeyIAMMemberMapInput

type CryptoKeyIAMMemberMapInput interface {
	pulumi.Input

	ToCryptoKeyIAMMemberMapOutput() CryptoKeyIAMMemberMapOutput
	ToCryptoKeyIAMMemberMapOutputWithContext(context.Context) CryptoKeyIAMMemberMapOutput
}

CryptoKeyIAMMemberMapInput is an input type that accepts CryptoKeyIAMMemberMap and CryptoKeyIAMMemberMapOutput values. You can construct a concrete instance of `CryptoKeyIAMMemberMapInput` via:

CryptoKeyIAMMemberMap{ "key": CryptoKeyIAMMemberArgs{...} }

type CryptoKeyIAMMemberMapOutput

type CryptoKeyIAMMemberMapOutput struct{ *pulumi.OutputState }

func (CryptoKeyIAMMemberMapOutput) ElementType

func (CryptoKeyIAMMemberMapOutput) MapIndex

func (CryptoKeyIAMMemberMapOutput) ToCryptoKeyIAMMemberMapOutput

func (o CryptoKeyIAMMemberMapOutput) ToCryptoKeyIAMMemberMapOutput() CryptoKeyIAMMemberMapOutput

func (CryptoKeyIAMMemberMapOutput) ToCryptoKeyIAMMemberMapOutputWithContext

func (o CryptoKeyIAMMemberMapOutput) ToCryptoKeyIAMMemberMapOutputWithContext(ctx context.Context) CryptoKeyIAMMemberMapOutput

type CryptoKeyIAMMemberOutput

type CryptoKeyIAMMemberOutput struct{ *pulumi.OutputState }

func (CryptoKeyIAMMemberOutput) Condition

An [IAM Condition](https://cloud.google.com/iam/docs/conditions-overview) for a given binding. Structure is documented below.

func (CryptoKeyIAMMemberOutput) CryptoKeyId

The crypto key ID, in the form `{project_id}/{location_name}/{key_ring_name}/{crypto_key_name}` or `{location_name}/{key_ring_name}/{crypto_key_name}`. In the second form, the provider's project setting will be used as a fallback.

func (CryptoKeyIAMMemberOutput) ElementType

func (CryptoKeyIAMMemberOutput) ElementType() reflect.Type

func (CryptoKeyIAMMemberOutput) Etag

(Computed) The etag of the project's IAM policy.

func (CryptoKeyIAMMemberOutput) Member

Identities that will be granted the privilege in `role`. Each entry can have one of the following values: * **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account. * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. * **user:{emailid}**: An email address that represents a specific Google account. For example, jane@example.com or joe@example.com. * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.

func (CryptoKeyIAMMemberOutput) Role

The role that should be applied. Note that custom roles must be of the format `[projects|organizations]/{parent-name}/roles/{role-name}`.

func (CryptoKeyIAMMemberOutput) ToCryptoKeyIAMMemberOutput

func (o CryptoKeyIAMMemberOutput) ToCryptoKeyIAMMemberOutput() CryptoKeyIAMMemberOutput

func (CryptoKeyIAMMemberOutput) ToCryptoKeyIAMMemberOutputWithContext

func (o CryptoKeyIAMMemberOutput) ToCryptoKeyIAMMemberOutputWithContext(ctx context.Context) CryptoKeyIAMMemberOutput

type CryptoKeyIAMMemberState

type CryptoKeyIAMMemberState struct {
	// An [IAM Condition](https://cloud.google.com/iam/docs/conditions-overview) for a given binding.
	// Structure is documented below.
	Condition CryptoKeyIAMMemberConditionPtrInput
	// The crypto key ID, in the form
	// `{project_id}/{location_name}/{key_ring_name}/{crypto_key_name}` or
	// `{location_name}/{key_ring_name}/{crypto_key_name}`. In the second form,
	// the provider's project setting will be used as a fallback.
	CryptoKeyId pulumi.StringPtrInput
	// (Computed) The etag of the project's IAM policy.
	Etag pulumi.StringPtrInput
	// Identities that will be granted the privilege in `role`.
	// Each entry can have one of the following values:
	// * **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.
	// * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
	// * **user:{emailid}**: An email address that represents a specific Google account. For example, jane@example.com or joe@example.com.
	// * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
	// * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
	// * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.
	Member pulumi.StringPtrInput
	// The role that should be applied. Note that custom roles must be of the format
	// `[projects|organizations]/{parent-name}/roles/{role-name}`.
	Role pulumi.StringPtrInput
}

func (CryptoKeyIAMMemberState) ElementType

func (CryptoKeyIAMMemberState) ElementType() reflect.Type

type CryptoKeyIAMPolicy

type CryptoKeyIAMPolicy struct {
	pulumi.CustomResourceState

	// The crypto key ID, in the form
	// `{project_id}/{location_name}/{key_ring_name}/{crypto_key_name}` or
	// `{location_name}/{key_ring_name}/{crypto_key_name}`. In the second form,
	// the provider's project setting will be used as a fallback.
	CryptoKeyId pulumi.StringOutput `pulumi:"cryptoKeyId"`
	// (Computed) The etag of the project's IAM policy.
	Etag pulumi.StringOutput `pulumi:"etag"`
	// The policy data generated by
	// a `organizations.getIAMPolicy` data source.
	PolicyData pulumi.StringOutput `pulumi:"policyData"`
}

Three different resources help you manage your IAM policy for KMS crypto key. Each of these resources serves a different use case:

* `kms.CryptoKeyIAMPolicy`: Authoritative. Sets the IAM policy for the crypto key and replaces any existing policy already attached. * `kms.CryptoKeyIAMBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the crypto key are preserved. * `kms.CryptoKeyIAMMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the crypto key are preserved.

> **Note:** `kms.CryptoKeyIAMPolicy` **cannot** be used in conjunction with `kms.CryptoKeyIAMBinding` and `kms.CryptoKeyIAMMember` or they will fight over what your policy should be.

> **Note:** `kms.CryptoKeyIAMBinding` resources **can be** used in conjunction with `kms.CryptoKeyIAMMember` resources **only if** they do not grant privilege to the same role.

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		keyring, err := kms.NewKeyRing(ctx, "keyring", &kms.KeyRingArgs{
			Name:     pulumi.String("keyring-example"),
			Location: pulumi.String("global"),
		})
		if err != nil {
			return err
		}
		key, err := kms.NewCryptoKey(ctx, "key", &kms.CryptoKeyArgs{
			Name:           pulumi.String("crypto-key-example"),
			KeyRing:        keyring.ID(),
			RotationPeriod: pulumi.String("7776000s"),
		})
		if err != nil {
			return err
		}
		admin, err := organizations.LookupIAMPolicy(ctx, &organizations.LookupIAMPolicyArgs{
			Bindings: []organizations.GetIAMPolicyBinding{
				{
					Role: "roles/cloudkms.cryptoKeyEncrypter",
					Members: []string{
						"user:jane@example.com",
					},
				},
			},
		}, nil)
		if err != nil {
			return err
		}
		_, err = kms.NewCryptoKeyIAMPolicy(ctx, "crypto_key", &kms.CryptoKeyIAMPolicyArgs{
			CryptoKeyId: key.ID(),
			PolicyData:  pulumi.String(admin.PolicyData),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

With IAM Conditions:

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := organizations.LookupIAMPolicy(ctx, &organizations.LookupIAMPolicyArgs{
			Bindings: []organizations.GetIAMPolicyBinding{
				{
					Role: "roles/cloudkms.cryptoKeyEncrypter",
					Members: []string{
						"user:jane@example.com",
					},
					Condition: {
						Title:       "expires_after_2019_12_31",
						Description: pulumi.StringRef("Expiring at midnight of 2019-12-31"),
						Expression:  "request.time < timestamp(\"2020-01-01T00:00:00Z\")",
					},
				},
			},
		}, nil)
		if err != nil {
			return err
		}
		return nil
	})
}

```

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.NewCryptoKeyIAMBinding(ctx, "crypto_key", &kms.CryptoKeyIAMBindingArgs{
			CryptoKeyId: pulumi.Any(key.Id),
			Role:        pulumi.String("roles/cloudkms.cryptoKeyEncrypter"),
			Members: pulumi.StringArray{
				pulumi.String("user:jane@example.com"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

With IAM Conditions:

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.NewCryptoKeyIAMBinding(ctx, "crypto_key", &kms.CryptoKeyIAMBindingArgs{
			CryptoKeyId: pulumi.Any(key.Id),
			Role:        pulumi.String("roles/cloudkms.cryptoKeyEncrypter"),
			Members: pulumi.StringArray{
				pulumi.String("user:jane@example.com"),
			},
			Condition: &kms.CryptoKeyIAMBindingConditionArgs{
				Title:       pulumi.String("expires_after_2019_12_31"),
				Description: pulumi.String("Expiring at midnight of 2019-12-31"),
				Expression:  pulumi.String("request.time < timestamp(\"2020-01-01T00:00:00Z\")"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.NewCryptoKeyIAMMember(ctx, "crypto_key", &kms.CryptoKeyIAMMemberArgs{
			CryptoKeyId: pulumi.Any(key.Id),
			Role:        pulumi.String("roles/cloudkms.cryptoKeyEncrypter"),
			Member:      pulumi.String("user:jane@example.com"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

With IAM Conditions:

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.NewCryptoKeyIAMMember(ctx, "crypto_key", &kms.CryptoKeyIAMMemberArgs{
			CryptoKeyId: pulumi.Any(key.Id),
			Role:        pulumi.String("roles/cloudkms.cryptoKeyEncrypter"),
			Member:      pulumi.String("user:jane@example.com"),
			Condition: &kms.CryptoKeyIAMMemberConditionArgs{
				Title:       pulumi.String("expires_after_2019_12_31"),
				Description: pulumi.String("Expiring at midnight of 2019-12-31"),
				Expression:  pulumi.String("request.time < timestamp(\"2020-01-01T00:00:00Z\")"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## Import

### Importing IAM policies

IAM policy imports use the identifier of the KMS crypto key only. For example:

* `{{project_id}}/{{location}}/{{key_ring_name}}/{{crypto_key_name}}`

An `import` block (Terraform v1.5.0 and later) can be used to import IAM policies:

tf

import {

id = "{{project_id}}/{{location}}/{{key_ring_name}}/{{crypto_key_name}}"

to = google_kms_crypto_key_iam_policy.default

}

The `pulumi import` command can also be used:

```sh $ pulumi import gcp:kms/cryptoKeyIAMPolicy:CryptoKeyIAMPolicy default {{project_id}}/{{location}}/{{key_ring_name}}/{{crypto_key_name}} ```

func GetCryptoKeyIAMPolicy

func GetCryptoKeyIAMPolicy(ctx *pulumi.Context,
	name string, id pulumi.IDInput, state *CryptoKeyIAMPolicyState, opts ...pulumi.ResourceOption) (*CryptoKeyIAMPolicy, error)

GetCryptoKeyIAMPolicy gets an existing CryptoKeyIAMPolicy resource's state with the given name, ID, and optional state properties that are used to uniquely qualify the lookup (nil if not required).

func NewCryptoKeyIAMPolicy

func NewCryptoKeyIAMPolicy(ctx *pulumi.Context,
	name string, args *CryptoKeyIAMPolicyArgs, opts ...pulumi.ResourceOption) (*CryptoKeyIAMPolicy, error)

NewCryptoKeyIAMPolicy registers a new resource with the given unique name, arguments, and options.

func (*CryptoKeyIAMPolicy) ElementType

func (*CryptoKeyIAMPolicy) ElementType() reflect.Type

func (*CryptoKeyIAMPolicy) ToCryptoKeyIAMPolicyOutput

func (i *CryptoKeyIAMPolicy) ToCryptoKeyIAMPolicyOutput() CryptoKeyIAMPolicyOutput

func (*CryptoKeyIAMPolicy) ToCryptoKeyIAMPolicyOutputWithContext

func (i *CryptoKeyIAMPolicy) ToCryptoKeyIAMPolicyOutputWithContext(ctx context.Context) CryptoKeyIAMPolicyOutput

type CryptoKeyIAMPolicyArgs

type CryptoKeyIAMPolicyArgs struct {
	// The crypto key ID, in the form
	// `{project_id}/{location_name}/{key_ring_name}/{crypto_key_name}` or
	// `{location_name}/{key_ring_name}/{crypto_key_name}`. In the second form,
	// the provider's project setting will be used as a fallback.
	CryptoKeyId pulumi.StringInput
	// The policy data generated by
	// a `organizations.getIAMPolicy` data source.
	PolicyData pulumi.StringInput
}

The set of arguments for constructing a CryptoKeyIAMPolicy resource.

func (CryptoKeyIAMPolicyArgs) ElementType

func (CryptoKeyIAMPolicyArgs) ElementType() reflect.Type

type CryptoKeyIAMPolicyArray

type CryptoKeyIAMPolicyArray []CryptoKeyIAMPolicyInput

func (CryptoKeyIAMPolicyArray) ElementType

func (CryptoKeyIAMPolicyArray) ElementType() reflect.Type

func (CryptoKeyIAMPolicyArray) ToCryptoKeyIAMPolicyArrayOutput

func (i CryptoKeyIAMPolicyArray) ToCryptoKeyIAMPolicyArrayOutput() CryptoKeyIAMPolicyArrayOutput

func (CryptoKeyIAMPolicyArray) ToCryptoKeyIAMPolicyArrayOutputWithContext

func (i CryptoKeyIAMPolicyArray) ToCryptoKeyIAMPolicyArrayOutputWithContext(ctx context.Context) CryptoKeyIAMPolicyArrayOutput

type CryptoKeyIAMPolicyArrayInput

type CryptoKeyIAMPolicyArrayInput interface {
	pulumi.Input

	ToCryptoKeyIAMPolicyArrayOutput() CryptoKeyIAMPolicyArrayOutput
	ToCryptoKeyIAMPolicyArrayOutputWithContext(context.Context) CryptoKeyIAMPolicyArrayOutput
}

CryptoKeyIAMPolicyArrayInput is an input type that accepts CryptoKeyIAMPolicyArray and CryptoKeyIAMPolicyArrayOutput values. You can construct a concrete instance of `CryptoKeyIAMPolicyArrayInput` via:

CryptoKeyIAMPolicyArray{ CryptoKeyIAMPolicyArgs{...} }

type CryptoKeyIAMPolicyArrayOutput

type CryptoKeyIAMPolicyArrayOutput struct{ *pulumi.OutputState }

func (CryptoKeyIAMPolicyArrayOutput) ElementType

func (CryptoKeyIAMPolicyArrayOutput) Index

func (CryptoKeyIAMPolicyArrayOutput) ToCryptoKeyIAMPolicyArrayOutput

func (o CryptoKeyIAMPolicyArrayOutput) ToCryptoKeyIAMPolicyArrayOutput() CryptoKeyIAMPolicyArrayOutput

func (CryptoKeyIAMPolicyArrayOutput) ToCryptoKeyIAMPolicyArrayOutputWithContext

func (o CryptoKeyIAMPolicyArrayOutput) ToCryptoKeyIAMPolicyArrayOutputWithContext(ctx context.Context) CryptoKeyIAMPolicyArrayOutput

type CryptoKeyIAMPolicyInput

type CryptoKeyIAMPolicyInput interface {
	pulumi.Input

	ToCryptoKeyIAMPolicyOutput() CryptoKeyIAMPolicyOutput
	ToCryptoKeyIAMPolicyOutputWithContext(ctx context.Context) CryptoKeyIAMPolicyOutput
}

type CryptoKeyIAMPolicyMap

type CryptoKeyIAMPolicyMap map[string]CryptoKeyIAMPolicyInput

func (CryptoKeyIAMPolicyMap) ElementType

func (CryptoKeyIAMPolicyMap) ElementType() reflect.Type

func (CryptoKeyIAMPolicyMap) ToCryptoKeyIAMPolicyMapOutput

func (i CryptoKeyIAMPolicyMap) ToCryptoKeyIAMPolicyMapOutput() CryptoKeyIAMPolicyMapOutput

func (CryptoKeyIAMPolicyMap) ToCryptoKeyIAMPolicyMapOutputWithContext

func (i CryptoKeyIAMPolicyMap) ToCryptoKeyIAMPolicyMapOutputWithContext(ctx context.Context) CryptoKeyIAMPolicyMapOutput

type CryptoKeyIAMPolicyMapInput

type CryptoKeyIAMPolicyMapInput interface {
	pulumi.Input

	ToCryptoKeyIAMPolicyMapOutput() CryptoKeyIAMPolicyMapOutput
	ToCryptoKeyIAMPolicyMapOutputWithContext(context.Context) CryptoKeyIAMPolicyMapOutput
}

CryptoKeyIAMPolicyMapInput is an input type that accepts CryptoKeyIAMPolicyMap and CryptoKeyIAMPolicyMapOutput values. You can construct a concrete instance of `CryptoKeyIAMPolicyMapInput` via:

CryptoKeyIAMPolicyMap{ "key": CryptoKeyIAMPolicyArgs{...} }

type CryptoKeyIAMPolicyMapOutput

type CryptoKeyIAMPolicyMapOutput struct{ *pulumi.OutputState }

func (CryptoKeyIAMPolicyMapOutput) ElementType

func (CryptoKeyIAMPolicyMapOutput) MapIndex

func (CryptoKeyIAMPolicyMapOutput) ToCryptoKeyIAMPolicyMapOutput

func (o CryptoKeyIAMPolicyMapOutput) ToCryptoKeyIAMPolicyMapOutput() CryptoKeyIAMPolicyMapOutput

func (CryptoKeyIAMPolicyMapOutput) ToCryptoKeyIAMPolicyMapOutputWithContext

func (o CryptoKeyIAMPolicyMapOutput) ToCryptoKeyIAMPolicyMapOutputWithContext(ctx context.Context) CryptoKeyIAMPolicyMapOutput

type CryptoKeyIAMPolicyOutput

type CryptoKeyIAMPolicyOutput struct{ *pulumi.OutputState }

func (CryptoKeyIAMPolicyOutput) CryptoKeyId

The crypto key ID, in the form `{project_id}/{location_name}/{key_ring_name}/{crypto_key_name}` or `{location_name}/{key_ring_name}/{crypto_key_name}`. In the second form, the provider's project setting will be used as a fallback.

func (CryptoKeyIAMPolicyOutput) ElementType

func (CryptoKeyIAMPolicyOutput) ElementType() reflect.Type

func (CryptoKeyIAMPolicyOutput) Etag

(Computed) The etag of the project's IAM policy.

func (CryptoKeyIAMPolicyOutput) PolicyData

The policy data generated by a `organizations.getIAMPolicy` data source.

func (CryptoKeyIAMPolicyOutput) ToCryptoKeyIAMPolicyOutput

func (o CryptoKeyIAMPolicyOutput) ToCryptoKeyIAMPolicyOutput() CryptoKeyIAMPolicyOutput

func (CryptoKeyIAMPolicyOutput) ToCryptoKeyIAMPolicyOutputWithContext

func (o CryptoKeyIAMPolicyOutput) ToCryptoKeyIAMPolicyOutputWithContext(ctx context.Context) CryptoKeyIAMPolicyOutput

type CryptoKeyIAMPolicyState

type CryptoKeyIAMPolicyState struct {
	// The crypto key ID, in the form
	// `{project_id}/{location_name}/{key_ring_name}/{crypto_key_name}` or
	// `{location_name}/{key_ring_name}/{crypto_key_name}`. In the second form,
	// the provider's project setting will be used as a fallback.
	CryptoKeyId pulumi.StringPtrInput
	// (Computed) The etag of the project's IAM policy.
	Etag pulumi.StringPtrInput
	// The policy data generated by
	// a `organizations.getIAMPolicy` data source.
	PolicyData pulumi.StringPtrInput
}

func (CryptoKeyIAMPolicyState) ElementType

func (CryptoKeyIAMPolicyState) ElementType() reflect.Type

type CryptoKeyInput

type CryptoKeyInput interface {
	pulumi.Input

	ToCryptoKeyOutput() CryptoKeyOutput
	ToCryptoKeyOutputWithContext(ctx context.Context) CryptoKeyOutput
}

type CryptoKeyMap

type CryptoKeyMap map[string]CryptoKeyInput

func (CryptoKeyMap) ElementType

func (CryptoKeyMap) ElementType() reflect.Type

func (CryptoKeyMap) ToCryptoKeyMapOutput

func (i CryptoKeyMap) ToCryptoKeyMapOutput() CryptoKeyMapOutput

func (CryptoKeyMap) ToCryptoKeyMapOutputWithContext

func (i CryptoKeyMap) ToCryptoKeyMapOutputWithContext(ctx context.Context) CryptoKeyMapOutput

type CryptoKeyMapInput

type CryptoKeyMapInput interface {
	pulumi.Input

	ToCryptoKeyMapOutput() CryptoKeyMapOutput
	ToCryptoKeyMapOutputWithContext(context.Context) CryptoKeyMapOutput
}

CryptoKeyMapInput is an input type that accepts CryptoKeyMap and CryptoKeyMapOutput values. You can construct a concrete instance of `CryptoKeyMapInput` via:

CryptoKeyMap{ "key": CryptoKeyArgs{...} }

type CryptoKeyMapOutput

type CryptoKeyMapOutput struct{ *pulumi.OutputState }

func (CryptoKeyMapOutput) ElementType

func (CryptoKeyMapOutput) ElementType() reflect.Type

func (CryptoKeyMapOutput) MapIndex

func (CryptoKeyMapOutput) ToCryptoKeyMapOutput

func (o CryptoKeyMapOutput) ToCryptoKeyMapOutput() CryptoKeyMapOutput

func (CryptoKeyMapOutput) ToCryptoKeyMapOutputWithContext

func (o CryptoKeyMapOutput) ToCryptoKeyMapOutputWithContext(ctx context.Context) CryptoKeyMapOutput

type CryptoKeyOutput

type CryptoKeyOutput struct{ *pulumi.OutputState }

func (CryptoKeyOutput) CryptoKeyBackend added in v7.17.0

func (o CryptoKeyOutput) CryptoKeyBackend() pulumi.StringOutput

The resource name of the backend environment associated with all CryptoKeyVersions within this CryptoKey. The resource name is in the format "projects/*/locations/*/ekmConnections/*" and only applies to "EXTERNAL_VPC" keys.

func (CryptoKeyOutput) DestroyScheduledDuration

func (o CryptoKeyOutput) DestroyScheduledDuration() pulumi.StringOutput

The period of time that versions of this key spend in the DESTROY_SCHEDULED state before transitioning to DESTROYED. If not specified at creation time, the default duration is 24 hours.

func (CryptoKeyOutput) EffectiveLabels

func (o CryptoKeyOutput) EffectiveLabels() pulumi.StringMapOutput

All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.

func (CryptoKeyOutput) ElementType

func (CryptoKeyOutput) ElementType() reflect.Type

func (CryptoKeyOutput) ImportOnly

func (o CryptoKeyOutput) ImportOnly() pulumi.BoolOutput

Whether this key may contain imported versions only.

func (CryptoKeyOutput) KeyRing

func (o CryptoKeyOutput) KeyRing() pulumi.StringOutput

The KeyRing that this key belongs to. Format: `'projects/{{project}}/locations/{{location}}/keyRings/{{keyRing}}'`.

***

func (CryptoKeyOutput) Labels

Labels with user-defined metadata to apply to this resource.

**Note**: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field `effectiveLabels` for all of the labels present on the resource.

func (CryptoKeyOutput) Name

The resource name for the CryptoKey.

func (CryptoKeyOutput) Primaries added in v7.5.0

A copy of the primary CryptoKeyVersion that will be used by cryptoKeys.encrypt when this CryptoKey is given in EncryptRequest.name. Keys with purpose ENCRYPT_DECRYPT may have a primary. For other keys, this field will be unset. Structure is documented below.

func (CryptoKeyOutput) PulumiLabels

func (o CryptoKeyOutput) PulumiLabels() pulumi.StringMapOutput

The combination of labels configured directly on the resource and default labels configured on the provider.

func (CryptoKeyOutput) Purpose

The immutable purpose of this CryptoKey. See the [purpose reference](https://cloud.google.com/kms/docs/reference/rest/v1/projects.locations.keyRings.cryptoKeys#CryptoKeyPurpose) for possible inputs. Default value is "ENCRYPT_DECRYPT".

func (CryptoKeyOutput) RotationPeriod

func (o CryptoKeyOutput) RotationPeriod() pulumi.StringPtrOutput

Every time this period passes, generate a new CryptoKeyVersion and set it as the primary. The first rotation will take place after the specified period. The rotation period has the format of a decimal number with up to 9 fractional digits, followed by the letter `s` (seconds). It must be greater than a day (ie, 86400).

func (CryptoKeyOutput) SkipInitialVersionCreation

func (o CryptoKeyOutput) SkipInitialVersionCreation() pulumi.BoolPtrOutput

If set to true, the request will create a CryptoKey without any CryptoKeyVersions. You must use the `kms.KeyRingImportJob` resource to import the CryptoKeyVersion.

func (CryptoKeyOutput) ToCryptoKeyOutput

func (o CryptoKeyOutput) ToCryptoKeyOutput() CryptoKeyOutput

func (CryptoKeyOutput) ToCryptoKeyOutputWithContext

func (o CryptoKeyOutput) ToCryptoKeyOutputWithContext(ctx context.Context) CryptoKeyOutput

func (CryptoKeyOutput) VersionTemplate

func (o CryptoKeyOutput) VersionTemplate() CryptoKeyVersionTemplateOutput

A template describing settings for new crypto key versions. Structure is documented below.

type CryptoKeyPrimary added in v7.5.0

type CryptoKeyPrimary struct {
	// The resource name for the CryptoKey.
	Name *string `pulumi:"name"`
	// (Output)
	// The current state of the CryptoKeyVersion.
	State *string `pulumi:"state"`
}

type CryptoKeyPrimaryArgs added in v7.5.0

type CryptoKeyPrimaryArgs struct {
	// The resource name for the CryptoKey.
	Name pulumi.StringPtrInput `pulumi:"name"`
	// (Output)
	// The current state of the CryptoKeyVersion.
	State pulumi.StringPtrInput `pulumi:"state"`
}

func (CryptoKeyPrimaryArgs) ElementType added in v7.5.0

func (CryptoKeyPrimaryArgs) ElementType() reflect.Type

func (CryptoKeyPrimaryArgs) ToCryptoKeyPrimaryOutput added in v7.5.0

func (i CryptoKeyPrimaryArgs) ToCryptoKeyPrimaryOutput() CryptoKeyPrimaryOutput

func (CryptoKeyPrimaryArgs) ToCryptoKeyPrimaryOutputWithContext added in v7.5.0

func (i CryptoKeyPrimaryArgs) ToCryptoKeyPrimaryOutputWithContext(ctx context.Context) CryptoKeyPrimaryOutput

type CryptoKeyPrimaryArray added in v7.5.0

type CryptoKeyPrimaryArray []CryptoKeyPrimaryInput

func (CryptoKeyPrimaryArray) ElementType added in v7.5.0

func (CryptoKeyPrimaryArray) ElementType() reflect.Type

func (CryptoKeyPrimaryArray) ToCryptoKeyPrimaryArrayOutput added in v7.5.0

func (i CryptoKeyPrimaryArray) ToCryptoKeyPrimaryArrayOutput() CryptoKeyPrimaryArrayOutput

func (CryptoKeyPrimaryArray) ToCryptoKeyPrimaryArrayOutputWithContext added in v7.5.0

func (i CryptoKeyPrimaryArray) ToCryptoKeyPrimaryArrayOutputWithContext(ctx context.Context) CryptoKeyPrimaryArrayOutput

type CryptoKeyPrimaryArrayInput added in v7.5.0

type CryptoKeyPrimaryArrayInput interface {
	pulumi.Input

	ToCryptoKeyPrimaryArrayOutput() CryptoKeyPrimaryArrayOutput
	ToCryptoKeyPrimaryArrayOutputWithContext(context.Context) CryptoKeyPrimaryArrayOutput
}

CryptoKeyPrimaryArrayInput is an input type that accepts CryptoKeyPrimaryArray and CryptoKeyPrimaryArrayOutput values. You can construct a concrete instance of `CryptoKeyPrimaryArrayInput` via:

CryptoKeyPrimaryArray{ CryptoKeyPrimaryArgs{...} }

type CryptoKeyPrimaryArrayOutput added in v7.5.0

type CryptoKeyPrimaryArrayOutput struct{ *pulumi.OutputState }

func (CryptoKeyPrimaryArrayOutput) ElementType added in v7.5.0

func (CryptoKeyPrimaryArrayOutput) Index added in v7.5.0

func (CryptoKeyPrimaryArrayOutput) ToCryptoKeyPrimaryArrayOutput added in v7.5.0

func (o CryptoKeyPrimaryArrayOutput) ToCryptoKeyPrimaryArrayOutput() CryptoKeyPrimaryArrayOutput

func (CryptoKeyPrimaryArrayOutput) ToCryptoKeyPrimaryArrayOutputWithContext added in v7.5.0

func (o CryptoKeyPrimaryArrayOutput) ToCryptoKeyPrimaryArrayOutputWithContext(ctx context.Context) CryptoKeyPrimaryArrayOutput

type CryptoKeyPrimaryInput added in v7.5.0

type CryptoKeyPrimaryInput interface {
	pulumi.Input

	ToCryptoKeyPrimaryOutput() CryptoKeyPrimaryOutput
	ToCryptoKeyPrimaryOutputWithContext(context.Context) CryptoKeyPrimaryOutput
}

CryptoKeyPrimaryInput is an input type that accepts CryptoKeyPrimaryArgs and CryptoKeyPrimaryOutput values. You can construct a concrete instance of `CryptoKeyPrimaryInput` via:

CryptoKeyPrimaryArgs{...}

type CryptoKeyPrimaryOutput added in v7.5.0

type CryptoKeyPrimaryOutput struct{ *pulumi.OutputState }

func (CryptoKeyPrimaryOutput) ElementType added in v7.5.0

func (CryptoKeyPrimaryOutput) ElementType() reflect.Type

func (CryptoKeyPrimaryOutput) Name added in v7.5.0

The resource name for the CryptoKey.

func (CryptoKeyPrimaryOutput) State added in v7.5.0

(Output) The current state of the CryptoKeyVersion.

func (CryptoKeyPrimaryOutput) ToCryptoKeyPrimaryOutput added in v7.5.0

func (o CryptoKeyPrimaryOutput) ToCryptoKeyPrimaryOutput() CryptoKeyPrimaryOutput

func (CryptoKeyPrimaryOutput) ToCryptoKeyPrimaryOutputWithContext added in v7.5.0

func (o CryptoKeyPrimaryOutput) ToCryptoKeyPrimaryOutputWithContext(ctx context.Context) CryptoKeyPrimaryOutput

type CryptoKeyState

type CryptoKeyState struct {
	// The resource name of the backend environment associated with all CryptoKeyVersions within this CryptoKey.
	// The resource name is in the format "projects/*/locations/*/ekmConnections/*" and only applies to "EXTERNAL_VPC" keys.
	CryptoKeyBackend pulumi.StringPtrInput
	// The period of time that versions of this key spend in the DESTROY_SCHEDULED state before transitioning to DESTROYED.
	// If not specified at creation time, the default duration is 24 hours.
	DestroyScheduledDuration pulumi.StringPtrInput
	// All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
	EffectiveLabels pulumi.StringMapInput
	// Whether this key may contain imported versions only.
	ImportOnly pulumi.BoolPtrInput
	// The KeyRing that this key belongs to.
	// Format: `'projects/{{project}}/locations/{{location}}/keyRings/{{keyRing}}'`.
	//
	// ***
	KeyRing pulumi.StringPtrInput
	// Labels with user-defined metadata to apply to this resource.
	//
	// **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
	// Please refer to the field `effectiveLabels` for all of the labels present on the resource.
	Labels pulumi.StringMapInput
	// The resource name for the CryptoKey.
	Name pulumi.StringPtrInput
	// A copy of the primary CryptoKeyVersion that will be used by cryptoKeys.encrypt when this CryptoKey is given in EncryptRequest.name.
	// Keys with purpose ENCRYPT_DECRYPT may have a primary. For other keys, this field will be unset.
	// Structure is documented below.
	Primaries CryptoKeyPrimaryArrayInput
	// The combination of labels configured directly on the resource
	// and default labels configured on the provider.
	PulumiLabels pulumi.StringMapInput
	// The immutable purpose of this CryptoKey. See the
	// [purpose reference](https://cloud.google.com/kms/docs/reference/rest/v1/projects.locations.keyRings.cryptoKeys#CryptoKeyPurpose)
	// for possible inputs.
	// Default value is "ENCRYPT_DECRYPT".
	Purpose pulumi.StringPtrInput
	// Every time this period passes, generate a new CryptoKeyVersion and set it as the primary.
	// The first rotation will take place after the specified period. The rotation period has
	// the format of a decimal number with up to 9 fractional digits, followed by the
	// letter `s` (seconds). It must be greater than a day (ie, 86400).
	RotationPeriod pulumi.StringPtrInput
	// If set to true, the request will create a CryptoKey without any CryptoKeyVersions.
	// You must use the `kms.KeyRingImportJob` resource to import the CryptoKeyVersion.
	SkipInitialVersionCreation pulumi.BoolPtrInput
	// A template describing settings for new crypto key versions.
	// Structure is documented below.
	VersionTemplate CryptoKeyVersionTemplatePtrInput
}

func (CryptoKeyState) ElementType

func (CryptoKeyState) ElementType() reflect.Type

type CryptoKeyVersion

type CryptoKeyVersion struct {
	pulumi.CustomResourceState

	// The CryptoKeyVersionAlgorithm that this CryptoKeyVersion supports.
	Algorithm pulumi.StringOutput `pulumi:"algorithm"`
	// Statement that was generated and signed by the HSM at key creation time. Use this statement to verify attributes of the key as stored on the HSM, independently of Google.
	// Only provided for key versions with protectionLevel HSM.
	// Structure is documented below.
	Attestations CryptoKeyVersionAttestationArrayOutput `pulumi:"attestations"`
	// The name of the cryptoKey associated with the CryptoKeyVersions.
	// Format: `'projects/{{project}}/locations/{{location}}/keyRings/{{keyring}}/cryptoKeys/{{cryptoKey}}'`
	//
	// ***
	CryptoKey pulumi.StringOutput `pulumi:"cryptoKey"`
	// ExternalProtectionLevelOptions stores a group of additional fields for configuring a CryptoKeyVersion that are specific to the EXTERNAL protection level and EXTERNAL_VPC protection levels.
	// Structure is documented below.
	ExternalProtectionLevelOptions CryptoKeyVersionExternalProtectionLevelOptionsPtrOutput `pulumi:"externalProtectionLevelOptions"`
	// The time this CryptoKeyVersion key material was generated
	GenerateTime pulumi.StringOutput `pulumi:"generateTime"`
	// The resource name for this CryptoKeyVersion.
	Name pulumi.StringOutput `pulumi:"name"`
	// The ProtectionLevel describing how crypto operations are performed with this CryptoKeyVersion.
	ProtectionLevel pulumi.StringOutput `pulumi:"protectionLevel"`
	// The current state of the CryptoKeyVersion.
	// Possible values are: `PENDING_GENERATION`, `ENABLED`, `DISABLED`, `DESTROYED`, `DESTROY_SCHEDULED`, `PENDING_IMPORT`, `IMPORT_FAILED`.
	State pulumi.StringOutput `pulumi:"state"`
}

A `CryptoKeyVersion` represents an individual cryptographic key, and the associated key material.

Destroying a cryptoKeyVersion will not delete the resource from the project.

To get more information about CryptoKeyVersion, see:

* [API documentation](https://cloud.google.com/kms/docs/reference/rest/v1/projects.locations.keyRings.cryptoKeys.cryptoKeyVersions) * How-to Guides

## Example Usage

### Kms Crypto Key Version Basic

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		keyring, err := kms.NewKeyRing(ctx, "keyring", &kms.KeyRingArgs{
			Name:     pulumi.String("keyring-example"),
			Location: pulumi.String("global"),
		})
		if err != nil {
			return err
		}
		cryptokey, err := kms.NewCryptoKey(ctx, "cryptokey", &kms.CryptoKeyArgs{
			Name:           pulumi.String("crypto-key-example"),
			KeyRing:        keyring.ID(),
			RotationPeriod: pulumi.String("7776000s"),
		})
		if err != nil {
			return err
		}
		_, err = kms.NewCryptoKeyVersion(ctx, "example-key", &kms.CryptoKeyVersionArgs{
			CryptoKey: cryptokey.ID(),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## Import

CryptoKeyVersion can be imported using any of these accepted formats:

* `{{name}}`

When using the `pulumi import` command, CryptoKeyVersion can be imported using one of the formats above. For example:

```sh $ pulumi import gcp:kms/cryptoKeyVersion:CryptoKeyVersion default {{name}} ```

func GetCryptoKeyVersion

func GetCryptoKeyVersion(ctx *pulumi.Context,
	name string, id pulumi.IDInput, state *CryptoKeyVersionState, opts ...pulumi.ResourceOption) (*CryptoKeyVersion, error)

GetCryptoKeyVersion gets an existing CryptoKeyVersion resource's state with the given name, ID, and optional state properties that are used to uniquely qualify the lookup (nil if not required).

func NewCryptoKeyVersion

func NewCryptoKeyVersion(ctx *pulumi.Context,
	name string, args *CryptoKeyVersionArgs, opts ...pulumi.ResourceOption) (*CryptoKeyVersion, error)

NewCryptoKeyVersion registers a new resource with the given unique name, arguments, and options.

func (*CryptoKeyVersion) ElementType

func (*CryptoKeyVersion) ElementType() reflect.Type

func (*CryptoKeyVersion) ToCryptoKeyVersionOutput

func (i *CryptoKeyVersion) ToCryptoKeyVersionOutput() CryptoKeyVersionOutput

func (*CryptoKeyVersion) ToCryptoKeyVersionOutputWithContext

func (i *CryptoKeyVersion) ToCryptoKeyVersionOutputWithContext(ctx context.Context) CryptoKeyVersionOutput

type CryptoKeyVersionArgs

type CryptoKeyVersionArgs struct {
	// The name of the cryptoKey associated with the CryptoKeyVersions.
	// Format: `'projects/{{project}}/locations/{{location}}/keyRings/{{keyring}}/cryptoKeys/{{cryptoKey}}'`
	//
	// ***
	CryptoKey pulumi.StringInput
	// ExternalProtectionLevelOptions stores a group of additional fields for configuring a CryptoKeyVersion that are specific to the EXTERNAL protection level and EXTERNAL_VPC protection levels.
	// Structure is documented below.
	ExternalProtectionLevelOptions CryptoKeyVersionExternalProtectionLevelOptionsPtrInput
	// The current state of the CryptoKeyVersion.
	// Possible values are: `PENDING_GENERATION`, `ENABLED`, `DISABLED`, `DESTROYED`, `DESTROY_SCHEDULED`, `PENDING_IMPORT`, `IMPORT_FAILED`.
	State pulumi.StringPtrInput
}

The set of arguments for constructing a CryptoKeyVersion resource.

func (CryptoKeyVersionArgs) ElementType

func (CryptoKeyVersionArgs) ElementType() reflect.Type

type CryptoKeyVersionArray

type CryptoKeyVersionArray []CryptoKeyVersionInput

func (CryptoKeyVersionArray) ElementType

func (CryptoKeyVersionArray) ElementType() reflect.Type

func (CryptoKeyVersionArray) ToCryptoKeyVersionArrayOutput

func (i CryptoKeyVersionArray) ToCryptoKeyVersionArrayOutput() CryptoKeyVersionArrayOutput

func (CryptoKeyVersionArray) ToCryptoKeyVersionArrayOutputWithContext

func (i CryptoKeyVersionArray) ToCryptoKeyVersionArrayOutputWithContext(ctx context.Context) CryptoKeyVersionArrayOutput

type CryptoKeyVersionArrayInput

type CryptoKeyVersionArrayInput interface {
	pulumi.Input

	ToCryptoKeyVersionArrayOutput() CryptoKeyVersionArrayOutput
	ToCryptoKeyVersionArrayOutputWithContext(context.Context) CryptoKeyVersionArrayOutput
}

CryptoKeyVersionArrayInput is an input type that accepts CryptoKeyVersionArray and CryptoKeyVersionArrayOutput values. You can construct a concrete instance of `CryptoKeyVersionArrayInput` via:

CryptoKeyVersionArray{ CryptoKeyVersionArgs{...} }

type CryptoKeyVersionArrayOutput

type CryptoKeyVersionArrayOutput struct{ *pulumi.OutputState }

func (CryptoKeyVersionArrayOutput) ElementType

func (CryptoKeyVersionArrayOutput) Index

func (CryptoKeyVersionArrayOutput) ToCryptoKeyVersionArrayOutput

func (o CryptoKeyVersionArrayOutput) ToCryptoKeyVersionArrayOutput() CryptoKeyVersionArrayOutput

func (CryptoKeyVersionArrayOutput) ToCryptoKeyVersionArrayOutputWithContext

func (o CryptoKeyVersionArrayOutput) ToCryptoKeyVersionArrayOutputWithContext(ctx context.Context) CryptoKeyVersionArrayOutput

type CryptoKeyVersionAttestation

type CryptoKeyVersionAttestation struct {
	// The certificate chains needed to validate the attestation
	// Structure is documented below.
	CertChains *CryptoKeyVersionAttestationCertChains `pulumi:"certChains"`
	// (Output)
	// The attestation data provided by the HSM when the key operation was performed.
	Content *string `pulumi:"content"`
	// ExternalProtectionLevelOptions stores a group of additional fields for configuring a CryptoKeyVersion that are specific to the EXTERNAL protection level and EXTERNAL_VPC protection levels.
	// Structure is documented below.
	//
	// Deprecated: `externalProtectionLevelOptions` is being un-nested from the `attestation` field. Please use the top level `externalProtectionLevelOptions` field instead.
	ExternalProtectionLevelOptions *CryptoKeyVersionAttestationExternalProtectionLevelOptions `pulumi:"externalProtectionLevelOptions"`
	// (Output)
	// The format of the attestation data.
	Format *string `pulumi:"format"`
}

type CryptoKeyVersionAttestationArgs

type CryptoKeyVersionAttestationArgs struct {
	// The certificate chains needed to validate the attestation
	// Structure is documented below.
	CertChains CryptoKeyVersionAttestationCertChainsPtrInput `pulumi:"certChains"`
	// (Output)
	// The attestation data provided by the HSM when the key operation was performed.
	Content pulumi.StringPtrInput `pulumi:"content"`
	// ExternalProtectionLevelOptions stores a group of additional fields for configuring a CryptoKeyVersion that are specific to the EXTERNAL protection level and EXTERNAL_VPC protection levels.
	// Structure is documented below.
	//
	// Deprecated: `externalProtectionLevelOptions` is being un-nested from the `attestation` field. Please use the top level `externalProtectionLevelOptions` field instead.
	ExternalProtectionLevelOptions CryptoKeyVersionAttestationExternalProtectionLevelOptionsPtrInput `pulumi:"externalProtectionLevelOptions"`
	// (Output)
	// The format of the attestation data.
	Format pulumi.StringPtrInput `pulumi:"format"`
}

func (CryptoKeyVersionAttestationArgs) ElementType

func (CryptoKeyVersionAttestationArgs) ToCryptoKeyVersionAttestationOutput

func (i CryptoKeyVersionAttestationArgs) ToCryptoKeyVersionAttestationOutput() CryptoKeyVersionAttestationOutput

func (CryptoKeyVersionAttestationArgs) ToCryptoKeyVersionAttestationOutputWithContext

func (i CryptoKeyVersionAttestationArgs) ToCryptoKeyVersionAttestationOutputWithContext(ctx context.Context) CryptoKeyVersionAttestationOutput

type CryptoKeyVersionAttestationArray

type CryptoKeyVersionAttestationArray []CryptoKeyVersionAttestationInput

func (CryptoKeyVersionAttestationArray) ElementType

func (CryptoKeyVersionAttestationArray) ToCryptoKeyVersionAttestationArrayOutput

func (i CryptoKeyVersionAttestationArray) ToCryptoKeyVersionAttestationArrayOutput() CryptoKeyVersionAttestationArrayOutput

func (CryptoKeyVersionAttestationArray) ToCryptoKeyVersionAttestationArrayOutputWithContext

func (i CryptoKeyVersionAttestationArray) ToCryptoKeyVersionAttestationArrayOutputWithContext(ctx context.Context) CryptoKeyVersionAttestationArrayOutput

type CryptoKeyVersionAttestationArrayInput

type CryptoKeyVersionAttestationArrayInput interface {
	pulumi.Input

	ToCryptoKeyVersionAttestationArrayOutput() CryptoKeyVersionAttestationArrayOutput
	ToCryptoKeyVersionAttestationArrayOutputWithContext(context.Context) CryptoKeyVersionAttestationArrayOutput
}

CryptoKeyVersionAttestationArrayInput is an input type that accepts CryptoKeyVersionAttestationArray and CryptoKeyVersionAttestationArrayOutput values. You can construct a concrete instance of `CryptoKeyVersionAttestationArrayInput` via:

CryptoKeyVersionAttestationArray{ CryptoKeyVersionAttestationArgs{...} }

type CryptoKeyVersionAttestationArrayOutput

type CryptoKeyVersionAttestationArrayOutput struct{ *pulumi.OutputState }

func (CryptoKeyVersionAttestationArrayOutput) ElementType

func (CryptoKeyVersionAttestationArrayOutput) Index

func (CryptoKeyVersionAttestationArrayOutput) ToCryptoKeyVersionAttestationArrayOutput

func (o CryptoKeyVersionAttestationArrayOutput) ToCryptoKeyVersionAttestationArrayOutput() CryptoKeyVersionAttestationArrayOutput

func (CryptoKeyVersionAttestationArrayOutput) ToCryptoKeyVersionAttestationArrayOutputWithContext

func (o CryptoKeyVersionAttestationArrayOutput) ToCryptoKeyVersionAttestationArrayOutputWithContext(ctx context.Context) CryptoKeyVersionAttestationArrayOutput

type CryptoKeyVersionAttestationCertChains

type CryptoKeyVersionAttestationCertChains struct {
	// Cavium certificate chain corresponding to the attestation.
	CaviumCerts []string `pulumi:"caviumCerts"`
	// Google card certificate chain corresponding to the attestation.
	GoogleCardCerts []string `pulumi:"googleCardCerts"`
	// Google partition certificate chain corresponding to the attestation.
	GooglePartitionCerts []string `pulumi:"googlePartitionCerts"`
}

type CryptoKeyVersionAttestationCertChainsArgs

type CryptoKeyVersionAttestationCertChainsArgs struct {
	// Cavium certificate chain corresponding to the attestation.
	CaviumCerts pulumi.StringArrayInput `pulumi:"caviumCerts"`
	// Google card certificate chain corresponding to the attestation.
	GoogleCardCerts pulumi.StringArrayInput `pulumi:"googleCardCerts"`
	// Google partition certificate chain corresponding to the attestation.
	GooglePartitionCerts pulumi.StringArrayInput `pulumi:"googlePartitionCerts"`
}

func (CryptoKeyVersionAttestationCertChainsArgs) ElementType

func (CryptoKeyVersionAttestationCertChainsArgs) ToCryptoKeyVersionAttestationCertChainsOutput

func (i CryptoKeyVersionAttestationCertChainsArgs) ToCryptoKeyVersionAttestationCertChainsOutput() CryptoKeyVersionAttestationCertChainsOutput

func (CryptoKeyVersionAttestationCertChainsArgs) ToCryptoKeyVersionAttestationCertChainsOutputWithContext

func (i CryptoKeyVersionAttestationCertChainsArgs) ToCryptoKeyVersionAttestationCertChainsOutputWithContext(ctx context.Context) CryptoKeyVersionAttestationCertChainsOutput

func (CryptoKeyVersionAttestationCertChainsArgs) ToCryptoKeyVersionAttestationCertChainsPtrOutput

func (i CryptoKeyVersionAttestationCertChainsArgs) ToCryptoKeyVersionAttestationCertChainsPtrOutput() CryptoKeyVersionAttestationCertChainsPtrOutput

func (CryptoKeyVersionAttestationCertChainsArgs) ToCryptoKeyVersionAttestationCertChainsPtrOutputWithContext

func (i CryptoKeyVersionAttestationCertChainsArgs) ToCryptoKeyVersionAttestationCertChainsPtrOutputWithContext(ctx context.Context) CryptoKeyVersionAttestationCertChainsPtrOutput

type CryptoKeyVersionAttestationCertChainsInput

type CryptoKeyVersionAttestationCertChainsInput interface {
	pulumi.Input

	ToCryptoKeyVersionAttestationCertChainsOutput() CryptoKeyVersionAttestationCertChainsOutput
	ToCryptoKeyVersionAttestationCertChainsOutputWithContext(context.Context) CryptoKeyVersionAttestationCertChainsOutput
}

CryptoKeyVersionAttestationCertChainsInput is an input type that accepts CryptoKeyVersionAttestationCertChainsArgs and CryptoKeyVersionAttestationCertChainsOutput values. You can construct a concrete instance of `CryptoKeyVersionAttestationCertChainsInput` via:

CryptoKeyVersionAttestationCertChainsArgs{...}

type CryptoKeyVersionAttestationCertChainsOutput

type CryptoKeyVersionAttestationCertChainsOutput struct{ *pulumi.OutputState }

func (CryptoKeyVersionAttestationCertChainsOutput) CaviumCerts

Cavium certificate chain corresponding to the attestation.

func (CryptoKeyVersionAttestationCertChainsOutput) ElementType

func (CryptoKeyVersionAttestationCertChainsOutput) GoogleCardCerts

Google card certificate chain corresponding to the attestation.

func (CryptoKeyVersionAttestationCertChainsOutput) GooglePartitionCerts

Google partition certificate chain corresponding to the attestation.

func (CryptoKeyVersionAttestationCertChainsOutput) ToCryptoKeyVersionAttestationCertChainsOutput

func (o CryptoKeyVersionAttestationCertChainsOutput) ToCryptoKeyVersionAttestationCertChainsOutput() CryptoKeyVersionAttestationCertChainsOutput

func (CryptoKeyVersionAttestationCertChainsOutput) ToCryptoKeyVersionAttestationCertChainsOutputWithContext

func (o CryptoKeyVersionAttestationCertChainsOutput) ToCryptoKeyVersionAttestationCertChainsOutputWithContext(ctx context.Context) CryptoKeyVersionAttestationCertChainsOutput

func (CryptoKeyVersionAttestationCertChainsOutput) ToCryptoKeyVersionAttestationCertChainsPtrOutput

func (o CryptoKeyVersionAttestationCertChainsOutput) ToCryptoKeyVersionAttestationCertChainsPtrOutput() CryptoKeyVersionAttestationCertChainsPtrOutput

func (CryptoKeyVersionAttestationCertChainsOutput) ToCryptoKeyVersionAttestationCertChainsPtrOutputWithContext

func (o CryptoKeyVersionAttestationCertChainsOutput) ToCryptoKeyVersionAttestationCertChainsPtrOutputWithContext(ctx context.Context) CryptoKeyVersionAttestationCertChainsPtrOutput

type CryptoKeyVersionAttestationCertChainsPtrInput

type CryptoKeyVersionAttestationCertChainsPtrInput interface {
	pulumi.Input

	ToCryptoKeyVersionAttestationCertChainsPtrOutput() CryptoKeyVersionAttestationCertChainsPtrOutput
	ToCryptoKeyVersionAttestationCertChainsPtrOutputWithContext(context.Context) CryptoKeyVersionAttestationCertChainsPtrOutput
}

CryptoKeyVersionAttestationCertChainsPtrInput is an input type that accepts CryptoKeyVersionAttestationCertChainsArgs, CryptoKeyVersionAttestationCertChainsPtr and CryptoKeyVersionAttestationCertChainsPtrOutput values. You can construct a concrete instance of `CryptoKeyVersionAttestationCertChainsPtrInput` via:

        CryptoKeyVersionAttestationCertChainsArgs{...}

or:

        nil

type CryptoKeyVersionAttestationCertChainsPtrOutput

type CryptoKeyVersionAttestationCertChainsPtrOutput struct{ *pulumi.OutputState }

func (CryptoKeyVersionAttestationCertChainsPtrOutput) CaviumCerts

Cavium certificate chain corresponding to the attestation.

func (CryptoKeyVersionAttestationCertChainsPtrOutput) Elem

func (CryptoKeyVersionAttestationCertChainsPtrOutput) ElementType

func (CryptoKeyVersionAttestationCertChainsPtrOutput) GoogleCardCerts

Google card certificate chain corresponding to the attestation.

func (CryptoKeyVersionAttestationCertChainsPtrOutput) GooglePartitionCerts

Google partition certificate chain corresponding to the attestation.

func (CryptoKeyVersionAttestationCertChainsPtrOutput) ToCryptoKeyVersionAttestationCertChainsPtrOutput

func (o CryptoKeyVersionAttestationCertChainsPtrOutput) ToCryptoKeyVersionAttestationCertChainsPtrOutput() CryptoKeyVersionAttestationCertChainsPtrOutput

func (CryptoKeyVersionAttestationCertChainsPtrOutput) ToCryptoKeyVersionAttestationCertChainsPtrOutputWithContext

func (o CryptoKeyVersionAttestationCertChainsPtrOutput) ToCryptoKeyVersionAttestationCertChainsPtrOutputWithContext(ctx context.Context) CryptoKeyVersionAttestationCertChainsPtrOutput

type CryptoKeyVersionAttestationExternalProtectionLevelOptions

type CryptoKeyVersionAttestationExternalProtectionLevelOptions struct {
	// The path to the external key material on the EKM when using EkmConnection e.g., "v0/my/key". Set this field instead of externalKeyUri when using an EkmConnection.
	EkmConnectionKeyPath *string `pulumi:"ekmConnectionKeyPath"`
	// The URI for an external resource that this CryptoKeyVersion represents.
	ExternalKeyUri *string `pulumi:"externalKeyUri"`
}

type CryptoKeyVersionAttestationExternalProtectionLevelOptionsArgs

type CryptoKeyVersionAttestationExternalProtectionLevelOptionsArgs struct {
	// The path to the external key material on the EKM when using EkmConnection e.g., "v0/my/key". Set this field instead of externalKeyUri when using an EkmConnection.
	EkmConnectionKeyPath pulumi.StringPtrInput `pulumi:"ekmConnectionKeyPath"`
	// The URI for an external resource that this CryptoKeyVersion represents.
	ExternalKeyUri pulumi.StringPtrInput `pulumi:"externalKeyUri"`
}

func (CryptoKeyVersionAttestationExternalProtectionLevelOptionsArgs) ElementType

func (CryptoKeyVersionAttestationExternalProtectionLevelOptionsArgs) ToCryptoKeyVersionAttestationExternalProtectionLevelOptionsOutput

func (CryptoKeyVersionAttestationExternalProtectionLevelOptionsArgs) ToCryptoKeyVersionAttestationExternalProtectionLevelOptionsOutputWithContext

func (i CryptoKeyVersionAttestationExternalProtectionLevelOptionsArgs) ToCryptoKeyVersionAttestationExternalProtectionLevelOptionsOutputWithContext(ctx context.Context) CryptoKeyVersionAttestationExternalProtectionLevelOptionsOutput

func (CryptoKeyVersionAttestationExternalProtectionLevelOptionsArgs) ToCryptoKeyVersionAttestationExternalProtectionLevelOptionsPtrOutput

func (CryptoKeyVersionAttestationExternalProtectionLevelOptionsArgs) ToCryptoKeyVersionAttestationExternalProtectionLevelOptionsPtrOutputWithContext

func (i CryptoKeyVersionAttestationExternalProtectionLevelOptionsArgs) ToCryptoKeyVersionAttestationExternalProtectionLevelOptionsPtrOutputWithContext(ctx context.Context) CryptoKeyVersionAttestationExternalProtectionLevelOptionsPtrOutput

type CryptoKeyVersionAttestationExternalProtectionLevelOptionsInput

type CryptoKeyVersionAttestationExternalProtectionLevelOptionsInput interface {
	pulumi.Input

	ToCryptoKeyVersionAttestationExternalProtectionLevelOptionsOutput() CryptoKeyVersionAttestationExternalProtectionLevelOptionsOutput
	ToCryptoKeyVersionAttestationExternalProtectionLevelOptionsOutputWithContext(context.Context) CryptoKeyVersionAttestationExternalProtectionLevelOptionsOutput
}

CryptoKeyVersionAttestationExternalProtectionLevelOptionsInput is an input type that accepts CryptoKeyVersionAttestationExternalProtectionLevelOptionsArgs and CryptoKeyVersionAttestationExternalProtectionLevelOptionsOutput values. You can construct a concrete instance of `CryptoKeyVersionAttestationExternalProtectionLevelOptionsInput` via:

CryptoKeyVersionAttestationExternalProtectionLevelOptionsArgs{...}

type CryptoKeyVersionAttestationExternalProtectionLevelOptionsOutput

type CryptoKeyVersionAttestationExternalProtectionLevelOptionsOutput struct{ *pulumi.OutputState }

func (CryptoKeyVersionAttestationExternalProtectionLevelOptionsOutput) EkmConnectionKeyPath

The path to the external key material on the EKM when using EkmConnection e.g., "v0/my/key". Set this field instead of externalKeyUri when using an EkmConnection.

func (CryptoKeyVersionAttestationExternalProtectionLevelOptionsOutput) ElementType

func (CryptoKeyVersionAttestationExternalProtectionLevelOptionsOutput) ExternalKeyUri

The URI for an external resource that this CryptoKeyVersion represents.

func (CryptoKeyVersionAttestationExternalProtectionLevelOptionsOutput) ToCryptoKeyVersionAttestationExternalProtectionLevelOptionsOutput

func (CryptoKeyVersionAttestationExternalProtectionLevelOptionsOutput) ToCryptoKeyVersionAttestationExternalProtectionLevelOptionsOutputWithContext

func (o CryptoKeyVersionAttestationExternalProtectionLevelOptionsOutput) ToCryptoKeyVersionAttestationExternalProtectionLevelOptionsOutputWithContext(ctx context.Context) CryptoKeyVersionAttestationExternalProtectionLevelOptionsOutput

func (CryptoKeyVersionAttestationExternalProtectionLevelOptionsOutput) ToCryptoKeyVersionAttestationExternalProtectionLevelOptionsPtrOutput

func (CryptoKeyVersionAttestationExternalProtectionLevelOptionsOutput) ToCryptoKeyVersionAttestationExternalProtectionLevelOptionsPtrOutputWithContext

func (o CryptoKeyVersionAttestationExternalProtectionLevelOptionsOutput) ToCryptoKeyVersionAttestationExternalProtectionLevelOptionsPtrOutputWithContext(ctx context.Context) CryptoKeyVersionAttestationExternalProtectionLevelOptionsPtrOutput

type CryptoKeyVersionAttestationExternalProtectionLevelOptionsPtrInput

type CryptoKeyVersionAttestationExternalProtectionLevelOptionsPtrInput interface {
	pulumi.Input

	ToCryptoKeyVersionAttestationExternalProtectionLevelOptionsPtrOutput() CryptoKeyVersionAttestationExternalProtectionLevelOptionsPtrOutput
	ToCryptoKeyVersionAttestationExternalProtectionLevelOptionsPtrOutputWithContext(context.Context) CryptoKeyVersionAttestationExternalProtectionLevelOptionsPtrOutput
}

CryptoKeyVersionAttestationExternalProtectionLevelOptionsPtrInput is an input type that accepts CryptoKeyVersionAttestationExternalProtectionLevelOptionsArgs, CryptoKeyVersionAttestationExternalProtectionLevelOptionsPtr and CryptoKeyVersionAttestationExternalProtectionLevelOptionsPtrOutput values. You can construct a concrete instance of `CryptoKeyVersionAttestationExternalProtectionLevelOptionsPtrInput` via:

        CryptoKeyVersionAttestationExternalProtectionLevelOptionsArgs{...}

or:

        nil

type CryptoKeyVersionAttestationExternalProtectionLevelOptionsPtrOutput

type CryptoKeyVersionAttestationExternalProtectionLevelOptionsPtrOutput struct{ *pulumi.OutputState }

func (CryptoKeyVersionAttestationExternalProtectionLevelOptionsPtrOutput) EkmConnectionKeyPath

The path to the external key material on the EKM when using EkmConnection e.g., "v0/my/key". Set this field instead of externalKeyUri when using an EkmConnection.

func (CryptoKeyVersionAttestationExternalProtectionLevelOptionsPtrOutput) Elem

func (CryptoKeyVersionAttestationExternalProtectionLevelOptionsPtrOutput) ElementType

func (CryptoKeyVersionAttestationExternalProtectionLevelOptionsPtrOutput) ExternalKeyUri

The URI for an external resource that this CryptoKeyVersion represents.

func (CryptoKeyVersionAttestationExternalProtectionLevelOptionsPtrOutput) ToCryptoKeyVersionAttestationExternalProtectionLevelOptionsPtrOutput

func (CryptoKeyVersionAttestationExternalProtectionLevelOptionsPtrOutput) ToCryptoKeyVersionAttestationExternalProtectionLevelOptionsPtrOutputWithContext

func (o CryptoKeyVersionAttestationExternalProtectionLevelOptionsPtrOutput) ToCryptoKeyVersionAttestationExternalProtectionLevelOptionsPtrOutputWithContext(ctx context.Context) CryptoKeyVersionAttestationExternalProtectionLevelOptionsPtrOutput

type CryptoKeyVersionAttestationInput

type CryptoKeyVersionAttestationInput interface {
	pulumi.Input

	ToCryptoKeyVersionAttestationOutput() CryptoKeyVersionAttestationOutput
	ToCryptoKeyVersionAttestationOutputWithContext(context.Context) CryptoKeyVersionAttestationOutput
}

CryptoKeyVersionAttestationInput is an input type that accepts CryptoKeyVersionAttestationArgs and CryptoKeyVersionAttestationOutput values. You can construct a concrete instance of `CryptoKeyVersionAttestationInput` via:

CryptoKeyVersionAttestationArgs{...}

type CryptoKeyVersionAttestationOutput

type CryptoKeyVersionAttestationOutput struct{ *pulumi.OutputState }

func (CryptoKeyVersionAttestationOutput) CertChains

The certificate chains needed to validate the attestation Structure is documented below.

func (CryptoKeyVersionAttestationOutput) Content

(Output) The attestation data provided by the HSM when the key operation was performed.

func (CryptoKeyVersionAttestationOutput) ElementType

func (CryptoKeyVersionAttestationOutput) ExternalProtectionLevelOptions deprecated

ExternalProtectionLevelOptions stores a group of additional fields for configuring a CryptoKeyVersion that are specific to the EXTERNAL protection level and EXTERNAL_VPC protection levels. Structure is documented below.

Deprecated: `externalProtectionLevelOptions` is being un-nested from the `attestation` field. Please use the top level `externalProtectionLevelOptions` field instead.

func (CryptoKeyVersionAttestationOutput) Format

(Output) The format of the attestation data.

func (CryptoKeyVersionAttestationOutput) ToCryptoKeyVersionAttestationOutput

func (o CryptoKeyVersionAttestationOutput) ToCryptoKeyVersionAttestationOutput() CryptoKeyVersionAttestationOutput

func (CryptoKeyVersionAttestationOutput) ToCryptoKeyVersionAttestationOutputWithContext

func (o CryptoKeyVersionAttestationOutput) ToCryptoKeyVersionAttestationOutputWithContext(ctx context.Context) CryptoKeyVersionAttestationOutput

type CryptoKeyVersionExternalProtectionLevelOptions added in v7.17.0

type CryptoKeyVersionExternalProtectionLevelOptions struct {
	// The path to the external key material on the EKM when using EkmConnection e.g., "v0/my/key". Set this field instead of externalKeyUri when using an EkmConnection.
	EkmConnectionKeyPath *string `pulumi:"ekmConnectionKeyPath"`
	// The URI for an external resource that this CryptoKeyVersion represents.
	ExternalKeyUri *string `pulumi:"externalKeyUri"`
}

type CryptoKeyVersionExternalProtectionLevelOptionsArgs added in v7.17.0

type CryptoKeyVersionExternalProtectionLevelOptionsArgs struct {
	// The path to the external key material on the EKM when using EkmConnection e.g., "v0/my/key". Set this field instead of externalKeyUri when using an EkmConnection.
	EkmConnectionKeyPath pulumi.StringPtrInput `pulumi:"ekmConnectionKeyPath"`
	// The URI for an external resource that this CryptoKeyVersion represents.
	ExternalKeyUri pulumi.StringPtrInput `pulumi:"externalKeyUri"`
}

func (CryptoKeyVersionExternalProtectionLevelOptionsArgs) ElementType added in v7.17.0

func (CryptoKeyVersionExternalProtectionLevelOptionsArgs) ToCryptoKeyVersionExternalProtectionLevelOptionsOutput added in v7.17.0

func (i CryptoKeyVersionExternalProtectionLevelOptionsArgs) ToCryptoKeyVersionExternalProtectionLevelOptionsOutput() CryptoKeyVersionExternalProtectionLevelOptionsOutput

func (CryptoKeyVersionExternalProtectionLevelOptionsArgs) ToCryptoKeyVersionExternalProtectionLevelOptionsOutputWithContext added in v7.17.0

func (i CryptoKeyVersionExternalProtectionLevelOptionsArgs) ToCryptoKeyVersionExternalProtectionLevelOptionsOutputWithContext(ctx context.Context) CryptoKeyVersionExternalProtectionLevelOptionsOutput

func (CryptoKeyVersionExternalProtectionLevelOptionsArgs) ToCryptoKeyVersionExternalProtectionLevelOptionsPtrOutput added in v7.17.0

func (i CryptoKeyVersionExternalProtectionLevelOptionsArgs) ToCryptoKeyVersionExternalProtectionLevelOptionsPtrOutput() CryptoKeyVersionExternalProtectionLevelOptionsPtrOutput

func (CryptoKeyVersionExternalProtectionLevelOptionsArgs) ToCryptoKeyVersionExternalProtectionLevelOptionsPtrOutputWithContext added in v7.17.0

func (i CryptoKeyVersionExternalProtectionLevelOptionsArgs) ToCryptoKeyVersionExternalProtectionLevelOptionsPtrOutputWithContext(ctx context.Context) CryptoKeyVersionExternalProtectionLevelOptionsPtrOutput

type CryptoKeyVersionExternalProtectionLevelOptionsInput added in v7.17.0

type CryptoKeyVersionExternalProtectionLevelOptionsInput interface {
	pulumi.Input

	ToCryptoKeyVersionExternalProtectionLevelOptionsOutput() CryptoKeyVersionExternalProtectionLevelOptionsOutput
	ToCryptoKeyVersionExternalProtectionLevelOptionsOutputWithContext(context.Context) CryptoKeyVersionExternalProtectionLevelOptionsOutput
}

CryptoKeyVersionExternalProtectionLevelOptionsInput is an input type that accepts CryptoKeyVersionExternalProtectionLevelOptionsArgs and CryptoKeyVersionExternalProtectionLevelOptionsOutput values. You can construct a concrete instance of `CryptoKeyVersionExternalProtectionLevelOptionsInput` via:

CryptoKeyVersionExternalProtectionLevelOptionsArgs{...}

type CryptoKeyVersionExternalProtectionLevelOptionsOutput added in v7.17.0

type CryptoKeyVersionExternalProtectionLevelOptionsOutput struct{ *pulumi.OutputState }

func (CryptoKeyVersionExternalProtectionLevelOptionsOutput) EkmConnectionKeyPath added in v7.17.0

The path to the external key material on the EKM when using EkmConnection e.g., "v0/my/key". Set this field instead of externalKeyUri when using an EkmConnection.

func (CryptoKeyVersionExternalProtectionLevelOptionsOutput) ElementType added in v7.17.0

func (CryptoKeyVersionExternalProtectionLevelOptionsOutput) ExternalKeyUri added in v7.17.0

The URI for an external resource that this CryptoKeyVersion represents.

func (CryptoKeyVersionExternalProtectionLevelOptionsOutput) ToCryptoKeyVersionExternalProtectionLevelOptionsOutput added in v7.17.0

func (CryptoKeyVersionExternalProtectionLevelOptionsOutput) ToCryptoKeyVersionExternalProtectionLevelOptionsOutputWithContext added in v7.17.0

func (o CryptoKeyVersionExternalProtectionLevelOptionsOutput) ToCryptoKeyVersionExternalProtectionLevelOptionsOutputWithContext(ctx context.Context) CryptoKeyVersionExternalProtectionLevelOptionsOutput

func (CryptoKeyVersionExternalProtectionLevelOptionsOutput) ToCryptoKeyVersionExternalProtectionLevelOptionsPtrOutput added in v7.17.0

func (o CryptoKeyVersionExternalProtectionLevelOptionsOutput) ToCryptoKeyVersionExternalProtectionLevelOptionsPtrOutput() CryptoKeyVersionExternalProtectionLevelOptionsPtrOutput

func (CryptoKeyVersionExternalProtectionLevelOptionsOutput) ToCryptoKeyVersionExternalProtectionLevelOptionsPtrOutputWithContext added in v7.17.0

func (o CryptoKeyVersionExternalProtectionLevelOptionsOutput) ToCryptoKeyVersionExternalProtectionLevelOptionsPtrOutputWithContext(ctx context.Context) CryptoKeyVersionExternalProtectionLevelOptionsPtrOutput

type CryptoKeyVersionExternalProtectionLevelOptionsPtrInput added in v7.17.0

type CryptoKeyVersionExternalProtectionLevelOptionsPtrInput interface {
	pulumi.Input

	ToCryptoKeyVersionExternalProtectionLevelOptionsPtrOutput() CryptoKeyVersionExternalProtectionLevelOptionsPtrOutput
	ToCryptoKeyVersionExternalProtectionLevelOptionsPtrOutputWithContext(context.Context) CryptoKeyVersionExternalProtectionLevelOptionsPtrOutput
}

CryptoKeyVersionExternalProtectionLevelOptionsPtrInput is an input type that accepts CryptoKeyVersionExternalProtectionLevelOptionsArgs, CryptoKeyVersionExternalProtectionLevelOptionsPtr and CryptoKeyVersionExternalProtectionLevelOptionsPtrOutput values. You can construct a concrete instance of `CryptoKeyVersionExternalProtectionLevelOptionsPtrInput` via:

        CryptoKeyVersionExternalProtectionLevelOptionsArgs{...}

or:

        nil

type CryptoKeyVersionExternalProtectionLevelOptionsPtrOutput added in v7.17.0

type CryptoKeyVersionExternalProtectionLevelOptionsPtrOutput struct{ *pulumi.OutputState }

func (CryptoKeyVersionExternalProtectionLevelOptionsPtrOutput) EkmConnectionKeyPath added in v7.17.0

The path to the external key material on the EKM when using EkmConnection e.g., "v0/my/key". Set this field instead of externalKeyUri when using an EkmConnection.

func (CryptoKeyVersionExternalProtectionLevelOptionsPtrOutput) Elem added in v7.17.0

func (CryptoKeyVersionExternalProtectionLevelOptionsPtrOutput) ElementType added in v7.17.0

func (CryptoKeyVersionExternalProtectionLevelOptionsPtrOutput) ExternalKeyUri added in v7.17.0

The URI for an external resource that this CryptoKeyVersion represents.

func (CryptoKeyVersionExternalProtectionLevelOptionsPtrOutput) ToCryptoKeyVersionExternalProtectionLevelOptionsPtrOutput added in v7.17.0

func (CryptoKeyVersionExternalProtectionLevelOptionsPtrOutput) ToCryptoKeyVersionExternalProtectionLevelOptionsPtrOutputWithContext added in v7.17.0

func (o CryptoKeyVersionExternalProtectionLevelOptionsPtrOutput) ToCryptoKeyVersionExternalProtectionLevelOptionsPtrOutputWithContext(ctx context.Context) CryptoKeyVersionExternalProtectionLevelOptionsPtrOutput

type CryptoKeyVersionInput

type CryptoKeyVersionInput interface {
	pulumi.Input

	ToCryptoKeyVersionOutput() CryptoKeyVersionOutput
	ToCryptoKeyVersionOutputWithContext(ctx context.Context) CryptoKeyVersionOutput
}

type CryptoKeyVersionMap

type CryptoKeyVersionMap map[string]CryptoKeyVersionInput

func (CryptoKeyVersionMap) ElementType

func (CryptoKeyVersionMap) ElementType() reflect.Type

func (CryptoKeyVersionMap) ToCryptoKeyVersionMapOutput

func (i CryptoKeyVersionMap) ToCryptoKeyVersionMapOutput() CryptoKeyVersionMapOutput

func (CryptoKeyVersionMap) ToCryptoKeyVersionMapOutputWithContext

func (i CryptoKeyVersionMap) ToCryptoKeyVersionMapOutputWithContext(ctx context.Context) CryptoKeyVersionMapOutput

type CryptoKeyVersionMapInput

type CryptoKeyVersionMapInput interface {
	pulumi.Input

	ToCryptoKeyVersionMapOutput() CryptoKeyVersionMapOutput
	ToCryptoKeyVersionMapOutputWithContext(context.Context) CryptoKeyVersionMapOutput
}

CryptoKeyVersionMapInput is an input type that accepts CryptoKeyVersionMap and CryptoKeyVersionMapOutput values. You can construct a concrete instance of `CryptoKeyVersionMapInput` via:

CryptoKeyVersionMap{ "key": CryptoKeyVersionArgs{...} }

type CryptoKeyVersionMapOutput

type CryptoKeyVersionMapOutput struct{ *pulumi.OutputState }

func (CryptoKeyVersionMapOutput) ElementType

func (CryptoKeyVersionMapOutput) ElementType() reflect.Type

func (CryptoKeyVersionMapOutput) MapIndex

func (CryptoKeyVersionMapOutput) ToCryptoKeyVersionMapOutput

func (o CryptoKeyVersionMapOutput) ToCryptoKeyVersionMapOutput() CryptoKeyVersionMapOutput

func (CryptoKeyVersionMapOutput) ToCryptoKeyVersionMapOutputWithContext

func (o CryptoKeyVersionMapOutput) ToCryptoKeyVersionMapOutputWithContext(ctx context.Context) CryptoKeyVersionMapOutput

type CryptoKeyVersionOutput

type CryptoKeyVersionOutput struct{ *pulumi.OutputState }

func (CryptoKeyVersionOutput) Algorithm

The CryptoKeyVersionAlgorithm that this CryptoKeyVersion supports.

func (CryptoKeyVersionOutput) Attestations

Statement that was generated and signed by the HSM at key creation time. Use this statement to verify attributes of the key as stored on the HSM, independently of Google. Only provided for key versions with protectionLevel HSM. Structure is documented below.

func (CryptoKeyVersionOutput) CryptoKey

The name of the cryptoKey associated with the CryptoKeyVersions. Format: `'projects/{{project}}/locations/{{location}}/keyRings/{{keyring}}/cryptoKeys/{{cryptoKey}}'`

***

func (CryptoKeyVersionOutput) ElementType

func (CryptoKeyVersionOutput) ElementType() reflect.Type

func (CryptoKeyVersionOutput) ExternalProtectionLevelOptions added in v7.17.0

ExternalProtectionLevelOptions stores a group of additional fields for configuring a CryptoKeyVersion that are specific to the EXTERNAL protection level and EXTERNAL_VPC protection levels. Structure is documented below.

func (CryptoKeyVersionOutput) GenerateTime

func (o CryptoKeyVersionOutput) GenerateTime() pulumi.StringOutput

The time this CryptoKeyVersion key material was generated

func (CryptoKeyVersionOutput) Name

The resource name for this CryptoKeyVersion.

func (CryptoKeyVersionOutput) ProtectionLevel

func (o CryptoKeyVersionOutput) ProtectionLevel() pulumi.StringOutput

The ProtectionLevel describing how crypto operations are performed with this CryptoKeyVersion.

func (CryptoKeyVersionOutput) State

The current state of the CryptoKeyVersion. Possible values are: `PENDING_GENERATION`, `ENABLED`, `DISABLED`, `DESTROYED`, `DESTROY_SCHEDULED`, `PENDING_IMPORT`, `IMPORT_FAILED`.

func (CryptoKeyVersionOutput) ToCryptoKeyVersionOutput

func (o CryptoKeyVersionOutput) ToCryptoKeyVersionOutput() CryptoKeyVersionOutput

func (CryptoKeyVersionOutput) ToCryptoKeyVersionOutputWithContext

func (o CryptoKeyVersionOutput) ToCryptoKeyVersionOutputWithContext(ctx context.Context) CryptoKeyVersionOutput

type CryptoKeyVersionState

type CryptoKeyVersionState struct {
	// The CryptoKeyVersionAlgorithm that this CryptoKeyVersion supports.
	Algorithm pulumi.StringPtrInput
	// Statement that was generated and signed by the HSM at key creation time. Use this statement to verify attributes of the key as stored on the HSM, independently of Google.
	// Only provided for key versions with protectionLevel HSM.
	// Structure is documented below.
	Attestations CryptoKeyVersionAttestationArrayInput
	// The name of the cryptoKey associated with the CryptoKeyVersions.
	// Format: `'projects/{{project}}/locations/{{location}}/keyRings/{{keyring}}/cryptoKeys/{{cryptoKey}}'`
	//
	// ***
	CryptoKey pulumi.StringPtrInput
	// ExternalProtectionLevelOptions stores a group of additional fields for configuring a CryptoKeyVersion that are specific to the EXTERNAL protection level and EXTERNAL_VPC protection levels.
	// Structure is documented below.
	ExternalProtectionLevelOptions CryptoKeyVersionExternalProtectionLevelOptionsPtrInput
	// The time this CryptoKeyVersion key material was generated
	GenerateTime pulumi.StringPtrInput
	// The resource name for this CryptoKeyVersion.
	Name pulumi.StringPtrInput
	// The ProtectionLevel describing how crypto operations are performed with this CryptoKeyVersion.
	ProtectionLevel pulumi.StringPtrInput
	// The current state of the CryptoKeyVersion.
	// Possible values are: `PENDING_GENERATION`, `ENABLED`, `DISABLED`, `DESTROYED`, `DESTROY_SCHEDULED`, `PENDING_IMPORT`, `IMPORT_FAILED`.
	State pulumi.StringPtrInput
}

func (CryptoKeyVersionState) ElementType

func (CryptoKeyVersionState) ElementType() reflect.Type

type CryptoKeyVersionTemplate

type CryptoKeyVersionTemplate struct {
	// The algorithm to use when creating a version based on this template.
	// See the [algorithm reference](https://cloud.google.com/kms/docs/reference/rest/v1/CryptoKeyVersionAlgorithm) for possible inputs.
	Algorithm string `pulumi:"algorithm"`
	// The protection level to use when creating a version based on this template. Possible values include "SOFTWARE", "HSM", "EXTERNAL", "EXTERNAL_VPC". Defaults to "SOFTWARE".
	ProtectionLevel *string `pulumi:"protectionLevel"`
}

type CryptoKeyVersionTemplateArgs

type CryptoKeyVersionTemplateArgs struct {
	// The algorithm to use when creating a version based on this template.
	// See the [algorithm reference](https://cloud.google.com/kms/docs/reference/rest/v1/CryptoKeyVersionAlgorithm) for possible inputs.
	Algorithm pulumi.StringInput `pulumi:"algorithm"`
	// The protection level to use when creating a version based on this template. Possible values include "SOFTWARE", "HSM", "EXTERNAL", "EXTERNAL_VPC". Defaults to "SOFTWARE".
	ProtectionLevel pulumi.StringPtrInput `pulumi:"protectionLevel"`
}

func (CryptoKeyVersionTemplateArgs) ElementType

func (CryptoKeyVersionTemplateArgs) ToCryptoKeyVersionTemplateOutput

func (i CryptoKeyVersionTemplateArgs) ToCryptoKeyVersionTemplateOutput() CryptoKeyVersionTemplateOutput

func (CryptoKeyVersionTemplateArgs) ToCryptoKeyVersionTemplateOutputWithContext

func (i CryptoKeyVersionTemplateArgs) ToCryptoKeyVersionTemplateOutputWithContext(ctx context.Context) CryptoKeyVersionTemplateOutput

func (CryptoKeyVersionTemplateArgs) ToCryptoKeyVersionTemplatePtrOutput

func (i CryptoKeyVersionTemplateArgs) ToCryptoKeyVersionTemplatePtrOutput() CryptoKeyVersionTemplatePtrOutput

func (CryptoKeyVersionTemplateArgs) ToCryptoKeyVersionTemplatePtrOutputWithContext

func (i CryptoKeyVersionTemplateArgs) ToCryptoKeyVersionTemplatePtrOutputWithContext(ctx context.Context) CryptoKeyVersionTemplatePtrOutput

type CryptoKeyVersionTemplateInput

type CryptoKeyVersionTemplateInput interface {
	pulumi.Input

	ToCryptoKeyVersionTemplateOutput() CryptoKeyVersionTemplateOutput
	ToCryptoKeyVersionTemplateOutputWithContext(context.Context) CryptoKeyVersionTemplateOutput
}

CryptoKeyVersionTemplateInput is an input type that accepts CryptoKeyVersionTemplateArgs and CryptoKeyVersionTemplateOutput values. You can construct a concrete instance of `CryptoKeyVersionTemplateInput` via:

CryptoKeyVersionTemplateArgs{...}

type CryptoKeyVersionTemplateOutput

type CryptoKeyVersionTemplateOutput struct{ *pulumi.OutputState }

func (CryptoKeyVersionTemplateOutput) Algorithm

The algorithm to use when creating a version based on this template. See the [algorithm reference](https://cloud.google.com/kms/docs/reference/rest/v1/CryptoKeyVersionAlgorithm) for possible inputs.

func (CryptoKeyVersionTemplateOutput) ElementType

func (CryptoKeyVersionTemplateOutput) ProtectionLevel

The protection level to use when creating a version based on this template. Possible values include "SOFTWARE", "HSM", "EXTERNAL", "EXTERNAL_VPC". Defaults to "SOFTWARE".

func (CryptoKeyVersionTemplateOutput) ToCryptoKeyVersionTemplateOutput

func (o CryptoKeyVersionTemplateOutput) ToCryptoKeyVersionTemplateOutput() CryptoKeyVersionTemplateOutput

func (CryptoKeyVersionTemplateOutput) ToCryptoKeyVersionTemplateOutputWithContext

func (o CryptoKeyVersionTemplateOutput) ToCryptoKeyVersionTemplateOutputWithContext(ctx context.Context) CryptoKeyVersionTemplateOutput

func (CryptoKeyVersionTemplateOutput) ToCryptoKeyVersionTemplatePtrOutput

func (o CryptoKeyVersionTemplateOutput) ToCryptoKeyVersionTemplatePtrOutput() CryptoKeyVersionTemplatePtrOutput

func (CryptoKeyVersionTemplateOutput) ToCryptoKeyVersionTemplatePtrOutputWithContext

func (o CryptoKeyVersionTemplateOutput) ToCryptoKeyVersionTemplatePtrOutputWithContext(ctx context.Context) CryptoKeyVersionTemplatePtrOutput

type CryptoKeyVersionTemplatePtrInput

type CryptoKeyVersionTemplatePtrInput interface {
	pulumi.Input

	ToCryptoKeyVersionTemplatePtrOutput() CryptoKeyVersionTemplatePtrOutput
	ToCryptoKeyVersionTemplatePtrOutputWithContext(context.Context) CryptoKeyVersionTemplatePtrOutput
}

CryptoKeyVersionTemplatePtrInput is an input type that accepts CryptoKeyVersionTemplateArgs, CryptoKeyVersionTemplatePtr and CryptoKeyVersionTemplatePtrOutput values. You can construct a concrete instance of `CryptoKeyVersionTemplatePtrInput` via:

        CryptoKeyVersionTemplateArgs{...}

or:

        nil

type CryptoKeyVersionTemplatePtrOutput

type CryptoKeyVersionTemplatePtrOutput struct{ *pulumi.OutputState }

func (CryptoKeyVersionTemplatePtrOutput) Algorithm

The algorithm to use when creating a version based on this template. See the [algorithm reference](https://cloud.google.com/kms/docs/reference/rest/v1/CryptoKeyVersionAlgorithm) for possible inputs.

func (CryptoKeyVersionTemplatePtrOutput) Elem

func (CryptoKeyVersionTemplatePtrOutput) ElementType

func (CryptoKeyVersionTemplatePtrOutput) ProtectionLevel

The protection level to use when creating a version based on this template. Possible values include "SOFTWARE", "HSM", "EXTERNAL", "EXTERNAL_VPC". Defaults to "SOFTWARE".

func (CryptoKeyVersionTemplatePtrOutput) ToCryptoKeyVersionTemplatePtrOutput

func (o CryptoKeyVersionTemplatePtrOutput) ToCryptoKeyVersionTemplatePtrOutput() CryptoKeyVersionTemplatePtrOutput

func (CryptoKeyVersionTemplatePtrOutput) ToCryptoKeyVersionTemplatePtrOutputWithContext

func (o CryptoKeyVersionTemplatePtrOutput) ToCryptoKeyVersionTemplatePtrOutputWithContext(ctx context.Context) CryptoKeyVersionTemplatePtrOutput

type EkmConnection added in v7.15.0

type EkmConnection struct {
	pulumi.CustomResourceState

	// Output only. The time at which the EkmConnection was created.
	// A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".
	CreateTime pulumi.StringOutput `pulumi:"createTime"`
	// Optional. Identifies the EKM Crypto Space that this EkmConnection maps to. Note: This field is required if
	// KeyManagementMode is CLOUD_KMS.
	CryptoSpacePath pulumi.StringOutput `pulumi:"cryptoSpacePath"`
	// Optional. Etag of the currently stored EkmConnection.
	Etag pulumi.StringOutput `pulumi:"etag"`
	// Optional. Describes who can perform control plane operations on the EKM. If unset, this defaults to MANUAL Default
	// value: "MANUAL" Possible values: ["MANUAL", "CLOUD_KMS"]
	KeyManagementMode pulumi.StringPtrOutput `pulumi:"keyManagementMode"`
	// The location for the EkmConnection.
	// A full list of valid locations can be found by running `gcloud kms locations list`.
	Location pulumi.StringOutput `pulumi:"location"`
	// The resource name for the EkmConnection.
	Name    pulumi.StringOutput `pulumi:"name"`
	Project pulumi.StringOutput `pulumi:"project"`
	// A list of ServiceResolvers where the EKM can be reached. There should be one ServiceResolver per EKM replica. Currently, only a single ServiceResolver is supported
	// Structure is documented below.
	ServiceResolvers EkmConnectionServiceResolverArrayOutput `pulumi:"serviceResolvers"`
}

`Ekm Connections` are used to control the connection settings for an `EXTERNAL_VPC` CryptoKey. It is used to connect customer's external key manager to Google Cloud EKM.

> **Note:** Ekm Connections cannot be deleted from Google Cloud Platform.

To get more information about EkmConnection, see:

* [API documentation](https://cloud.google.com/kms/docs/reference/rest/v1/projects.locations.ekmConnections) * How-to Guides

## Example Usage

### Kms Ekm Connection Basic

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.NewEkmConnection(ctx, "example-ekmconnection", &kms.EkmConnectionArgs{
			Name:              pulumi.String("ekmconnection_example"),
			Location:          pulumi.String("us-central1"),
			KeyManagementMode: pulumi.String("MANUAL"),
			ServiceResolvers: kms.EkmConnectionServiceResolverArray{
				&kms.EkmConnectionServiceResolverArgs{
					ServiceDirectoryService: pulumi.String("projects/project_id/locations/us-central1/namespaces/namespace_name/services/service_name"),
					Hostname:                pulumi.String("example-ekm.goog"),
					ServerCertificates: kms.EkmConnectionServiceResolverServerCertificateArray{
						&kms.EkmConnectionServiceResolverServerCertificateArgs{
							RawDer: pulumi.String("==HAwIBCCAr6gAwIBAgIUWR+EV4lqiV7Ql12VY=="),
						},
					},
				},
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## Import

EkmConnection can be imported using any of these accepted formats:

* `projects/{{project}}/locations/{{location}}/ekmConnections/{{name}}`

* `{{project}}/{{location}}/{{name}}`

* `{{location}}/{{name}}`

When using the `pulumi import` command, EkmConnection can be imported using one of the formats above. For example:

```sh $ pulumi import gcp:kms/ekmConnection:EkmConnection default projects/{{project}}/locations/{{location}}/ekmConnections/{{name}} ```

```sh $ pulumi import gcp:kms/ekmConnection:EkmConnection default {{project}}/{{location}}/{{name}} ```

```sh $ pulumi import gcp:kms/ekmConnection:EkmConnection default {{location}}/{{name}} ```

func GetEkmConnection added in v7.15.0

func GetEkmConnection(ctx *pulumi.Context,
	name string, id pulumi.IDInput, state *EkmConnectionState, opts ...pulumi.ResourceOption) (*EkmConnection, error)

GetEkmConnection gets an existing EkmConnection resource's state with the given name, ID, and optional state properties that are used to uniquely qualify the lookup (nil if not required).

func NewEkmConnection added in v7.15.0

func NewEkmConnection(ctx *pulumi.Context,
	name string, args *EkmConnectionArgs, opts ...pulumi.ResourceOption) (*EkmConnection, error)

NewEkmConnection registers a new resource with the given unique name, arguments, and options.

func (*EkmConnection) ElementType added in v7.15.0

func (*EkmConnection) ElementType() reflect.Type

func (*EkmConnection) ToEkmConnectionOutput added in v7.15.0

func (i *EkmConnection) ToEkmConnectionOutput() EkmConnectionOutput

func (*EkmConnection) ToEkmConnectionOutputWithContext added in v7.15.0

func (i *EkmConnection) ToEkmConnectionOutputWithContext(ctx context.Context) EkmConnectionOutput

type EkmConnectionArgs added in v7.15.0

type EkmConnectionArgs struct {
	// Optional. Identifies the EKM Crypto Space that this EkmConnection maps to. Note: This field is required if
	// KeyManagementMode is CLOUD_KMS.
	CryptoSpacePath pulumi.StringPtrInput
	// Optional. Etag of the currently stored EkmConnection.
	Etag pulumi.StringPtrInput
	// Optional. Describes who can perform control plane operations on the EKM. If unset, this defaults to MANUAL Default
	// value: "MANUAL" Possible values: ["MANUAL", "CLOUD_KMS"]
	KeyManagementMode pulumi.StringPtrInput
	// The location for the EkmConnection.
	// A full list of valid locations can be found by running `gcloud kms locations list`.
	Location pulumi.StringInput
	// The resource name for the EkmConnection.
	Name    pulumi.StringPtrInput
	Project pulumi.StringPtrInput
	// A list of ServiceResolvers where the EKM can be reached. There should be one ServiceResolver per EKM replica. Currently, only a single ServiceResolver is supported
	// Structure is documented below.
	ServiceResolvers EkmConnectionServiceResolverArrayInput
}

The set of arguments for constructing a EkmConnection resource.

func (EkmConnectionArgs) ElementType added in v7.15.0

func (EkmConnectionArgs) ElementType() reflect.Type

type EkmConnectionArray added in v7.15.0

type EkmConnectionArray []EkmConnectionInput

func (EkmConnectionArray) ElementType added in v7.15.0

func (EkmConnectionArray) ElementType() reflect.Type

func (EkmConnectionArray) ToEkmConnectionArrayOutput added in v7.15.0

func (i EkmConnectionArray) ToEkmConnectionArrayOutput() EkmConnectionArrayOutput

func (EkmConnectionArray) ToEkmConnectionArrayOutputWithContext added in v7.15.0

func (i EkmConnectionArray) ToEkmConnectionArrayOutputWithContext(ctx context.Context) EkmConnectionArrayOutput

type EkmConnectionArrayInput added in v7.15.0

type EkmConnectionArrayInput interface {
	pulumi.Input

	ToEkmConnectionArrayOutput() EkmConnectionArrayOutput
	ToEkmConnectionArrayOutputWithContext(context.Context) EkmConnectionArrayOutput
}

EkmConnectionArrayInput is an input type that accepts EkmConnectionArray and EkmConnectionArrayOutput values. You can construct a concrete instance of `EkmConnectionArrayInput` via:

EkmConnectionArray{ EkmConnectionArgs{...} }

type EkmConnectionArrayOutput added in v7.15.0

type EkmConnectionArrayOutput struct{ *pulumi.OutputState }

func (EkmConnectionArrayOutput) ElementType added in v7.15.0

func (EkmConnectionArrayOutput) ElementType() reflect.Type

func (EkmConnectionArrayOutput) Index added in v7.15.0

func (EkmConnectionArrayOutput) ToEkmConnectionArrayOutput added in v7.15.0

func (o EkmConnectionArrayOutput) ToEkmConnectionArrayOutput() EkmConnectionArrayOutput

func (EkmConnectionArrayOutput) ToEkmConnectionArrayOutputWithContext added in v7.15.0

func (o EkmConnectionArrayOutput) ToEkmConnectionArrayOutputWithContext(ctx context.Context) EkmConnectionArrayOutput

type EkmConnectionInput added in v7.15.0

type EkmConnectionInput interface {
	pulumi.Input

	ToEkmConnectionOutput() EkmConnectionOutput
	ToEkmConnectionOutputWithContext(ctx context.Context) EkmConnectionOutput
}

type EkmConnectionMap added in v7.15.0

type EkmConnectionMap map[string]EkmConnectionInput

func (EkmConnectionMap) ElementType added in v7.15.0

func (EkmConnectionMap) ElementType() reflect.Type

func (EkmConnectionMap) ToEkmConnectionMapOutput added in v7.15.0

func (i EkmConnectionMap) ToEkmConnectionMapOutput() EkmConnectionMapOutput

func (EkmConnectionMap) ToEkmConnectionMapOutputWithContext added in v7.15.0

func (i EkmConnectionMap) ToEkmConnectionMapOutputWithContext(ctx context.Context) EkmConnectionMapOutput

type EkmConnectionMapInput added in v7.15.0

type EkmConnectionMapInput interface {
	pulumi.Input

	ToEkmConnectionMapOutput() EkmConnectionMapOutput
	ToEkmConnectionMapOutputWithContext(context.Context) EkmConnectionMapOutput
}

EkmConnectionMapInput is an input type that accepts EkmConnectionMap and EkmConnectionMapOutput values. You can construct a concrete instance of `EkmConnectionMapInput` via:

EkmConnectionMap{ "key": EkmConnectionArgs{...} }

type EkmConnectionMapOutput added in v7.15.0

type EkmConnectionMapOutput struct{ *pulumi.OutputState }

func (EkmConnectionMapOutput) ElementType added in v7.15.0

func (EkmConnectionMapOutput) ElementType() reflect.Type

func (EkmConnectionMapOutput) MapIndex added in v7.15.0

func (EkmConnectionMapOutput) ToEkmConnectionMapOutput added in v7.15.0

func (o EkmConnectionMapOutput) ToEkmConnectionMapOutput() EkmConnectionMapOutput

func (EkmConnectionMapOutput) ToEkmConnectionMapOutputWithContext added in v7.15.0

func (o EkmConnectionMapOutput) ToEkmConnectionMapOutputWithContext(ctx context.Context) EkmConnectionMapOutput

type EkmConnectionOutput added in v7.15.0

type EkmConnectionOutput struct{ *pulumi.OutputState }

func (EkmConnectionOutput) CreateTime added in v7.15.0

func (o EkmConnectionOutput) CreateTime() pulumi.StringOutput

Output only. The time at which the EkmConnection was created. A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".

func (EkmConnectionOutput) CryptoSpacePath added in v7.15.0

func (o EkmConnectionOutput) CryptoSpacePath() pulumi.StringOutput

Optional. Identifies the EKM Crypto Space that this EkmConnection maps to. Note: This field is required if KeyManagementMode is CLOUD_KMS.

func (EkmConnectionOutput) ElementType added in v7.15.0

func (EkmConnectionOutput) ElementType() reflect.Type

func (EkmConnectionOutput) Etag added in v7.15.0

Optional. Etag of the currently stored EkmConnection.

func (EkmConnectionOutput) KeyManagementMode added in v7.15.0

func (o EkmConnectionOutput) KeyManagementMode() pulumi.StringPtrOutput

Optional. Describes who can perform control plane operations on the EKM. If unset, this defaults to MANUAL Default value: "MANUAL" Possible values: ["MANUAL", "CLOUD_KMS"]

func (EkmConnectionOutput) Location added in v7.15.0

The location for the EkmConnection. A full list of valid locations can be found by running `gcloud kms locations list`.

func (EkmConnectionOutput) Name added in v7.15.0

The resource name for the EkmConnection.

func (EkmConnectionOutput) Project added in v7.15.0

func (EkmConnectionOutput) ServiceResolvers added in v7.15.0

A list of ServiceResolvers where the EKM can be reached. There should be one ServiceResolver per EKM replica. Currently, only a single ServiceResolver is supported Structure is documented below.

func (EkmConnectionOutput) ToEkmConnectionOutput added in v7.15.0

func (o EkmConnectionOutput) ToEkmConnectionOutput() EkmConnectionOutput

func (EkmConnectionOutput) ToEkmConnectionOutputWithContext added in v7.15.0

func (o EkmConnectionOutput) ToEkmConnectionOutputWithContext(ctx context.Context) EkmConnectionOutput

type EkmConnectionServiceResolver added in v7.15.0

type EkmConnectionServiceResolver struct {
	// Optional. The filter applied to the endpoints of the resolved service. If no filter is specified, all endpoints will be considered. An endpoint will be chosen arbitrarily from the filtered list for each request. For endpoint filter syntax and examples, see https://cloud.google.com/service-directory/docs/reference/rpc/google.cloud.servicedirectory.v1#resolveservicerequest.
	EndpointFilter *string `pulumi:"endpointFilter"`
	// Required. The hostname of the EKM replica used at TLS and HTTP layers.
	Hostname string `pulumi:"hostname"`
	// Required. A list of leaf server certificates used to authenticate HTTPS connections to the EKM replica. Currently, a maximum of 10 Certificate is supported.
	// Structure is documented below.
	ServerCertificates []EkmConnectionServiceResolverServerCertificate `pulumi:"serverCertificates"`
	// Required. The resource name of the Service Directory service pointing to an EKM replica, in the format projects/*/locations/*/namespaces/*/services/*
	ServiceDirectoryService string `pulumi:"serviceDirectoryService"`
}

type EkmConnectionServiceResolverArgs added in v7.15.0

type EkmConnectionServiceResolverArgs struct {
	// Optional. The filter applied to the endpoints of the resolved service. If no filter is specified, all endpoints will be considered. An endpoint will be chosen arbitrarily from the filtered list for each request. For endpoint filter syntax and examples, see https://cloud.google.com/service-directory/docs/reference/rpc/google.cloud.servicedirectory.v1#resolveservicerequest.
	EndpointFilter pulumi.StringPtrInput `pulumi:"endpointFilter"`
	// Required. The hostname of the EKM replica used at TLS and HTTP layers.
	Hostname pulumi.StringInput `pulumi:"hostname"`
	// Required. A list of leaf server certificates used to authenticate HTTPS connections to the EKM replica. Currently, a maximum of 10 Certificate is supported.
	// Structure is documented below.
	ServerCertificates EkmConnectionServiceResolverServerCertificateArrayInput `pulumi:"serverCertificates"`
	// Required. The resource name of the Service Directory service pointing to an EKM replica, in the format projects/*/locations/*/namespaces/*/services/*
	ServiceDirectoryService pulumi.StringInput `pulumi:"serviceDirectoryService"`
}

func (EkmConnectionServiceResolverArgs) ElementType added in v7.15.0

func (EkmConnectionServiceResolverArgs) ToEkmConnectionServiceResolverOutput added in v7.15.0

func (i EkmConnectionServiceResolverArgs) ToEkmConnectionServiceResolverOutput() EkmConnectionServiceResolverOutput

func (EkmConnectionServiceResolverArgs) ToEkmConnectionServiceResolverOutputWithContext added in v7.15.0

func (i EkmConnectionServiceResolverArgs) ToEkmConnectionServiceResolverOutputWithContext(ctx context.Context) EkmConnectionServiceResolverOutput

type EkmConnectionServiceResolverArray added in v7.15.0

type EkmConnectionServiceResolverArray []EkmConnectionServiceResolverInput

func (EkmConnectionServiceResolverArray) ElementType added in v7.15.0

func (EkmConnectionServiceResolverArray) ToEkmConnectionServiceResolverArrayOutput added in v7.15.0

func (i EkmConnectionServiceResolverArray) ToEkmConnectionServiceResolverArrayOutput() EkmConnectionServiceResolverArrayOutput

func (EkmConnectionServiceResolverArray) ToEkmConnectionServiceResolverArrayOutputWithContext added in v7.15.0

func (i EkmConnectionServiceResolverArray) ToEkmConnectionServiceResolverArrayOutputWithContext(ctx context.Context) EkmConnectionServiceResolverArrayOutput

type EkmConnectionServiceResolverArrayInput added in v7.15.0

type EkmConnectionServiceResolverArrayInput interface {
	pulumi.Input

	ToEkmConnectionServiceResolverArrayOutput() EkmConnectionServiceResolverArrayOutput
	ToEkmConnectionServiceResolverArrayOutputWithContext(context.Context) EkmConnectionServiceResolverArrayOutput
}

EkmConnectionServiceResolverArrayInput is an input type that accepts EkmConnectionServiceResolverArray and EkmConnectionServiceResolverArrayOutput values. You can construct a concrete instance of `EkmConnectionServiceResolverArrayInput` via:

EkmConnectionServiceResolverArray{ EkmConnectionServiceResolverArgs{...} }

type EkmConnectionServiceResolverArrayOutput added in v7.15.0

type EkmConnectionServiceResolverArrayOutput struct{ *pulumi.OutputState }

func (EkmConnectionServiceResolverArrayOutput) ElementType added in v7.15.0

func (EkmConnectionServiceResolverArrayOutput) Index added in v7.15.0

func (EkmConnectionServiceResolverArrayOutput) ToEkmConnectionServiceResolverArrayOutput added in v7.15.0

func (o EkmConnectionServiceResolverArrayOutput) ToEkmConnectionServiceResolverArrayOutput() EkmConnectionServiceResolverArrayOutput

func (EkmConnectionServiceResolverArrayOutput) ToEkmConnectionServiceResolverArrayOutputWithContext added in v7.15.0

func (o EkmConnectionServiceResolverArrayOutput) ToEkmConnectionServiceResolverArrayOutputWithContext(ctx context.Context) EkmConnectionServiceResolverArrayOutput

type EkmConnectionServiceResolverInput added in v7.15.0

type EkmConnectionServiceResolverInput interface {
	pulumi.Input

	ToEkmConnectionServiceResolverOutput() EkmConnectionServiceResolverOutput
	ToEkmConnectionServiceResolverOutputWithContext(context.Context) EkmConnectionServiceResolverOutput
}

EkmConnectionServiceResolverInput is an input type that accepts EkmConnectionServiceResolverArgs and EkmConnectionServiceResolverOutput values. You can construct a concrete instance of `EkmConnectionServiceResolverInput` via:

EkmConnectionServiceResolverArgs{...}

type EkmConnectionServiceResolverOutput added in v7.15.0

type EkmConnectionServiceResolverOutput struct{ *pulumi.OutputState }

func (EkmConnectionServiceResolverOutput) ElementType added in v7.15.0

func (EkmConnectionServiceResolverOutput) EndpointFilter added in v7.15.0

Optional. The filter applied to the endpoints of the resolved service. If no filter is specified, all endpoints will be considered. An endpoint will be chosen arbitrarily from the filtered list for each request. For endpoint filter syntax and examples, see https://cloud.google.com/service-directory/docs/reference/rpc/google.cloud.servicedirectory.v1#resolveservicerequest.

func (EkmConnectionServiceResolverOutput) Hostname added in v7.15.0

Required. The hostname of the EKM replica used at TLS and HTTP layers.

func (EkmConnectionServiceResolverOutput) ServerCertificates added in v7.15.0

Required. A list of leaf server certificates used to authenticate HTTPS connections to the EKM replica. Currently, a maximum of 10 Certificate is supported. Structure is documented below.

func (EkmConnectionServiceResolverOutput) ServiceDirectoryService added in v7.15.0

func (o EkmConnectionServiceResolverOutput) ServiceDirectoryService() pulumi.StringOutput

Required. The resource name of the Service Directory service pointing to an EKM replica, in the format projects/*/locations/*/namespaces/*/services/*

func (EkmConnectionServiceResolverOutput) ToEkmConnectionServiceResolverOutput added in v7.15.0

func (o EkmConnectionServiceResolverOutput) ToEkmConnectionServiceResolverOutput() EkmConnectionServiceResolverOutput

func (EkmConnectionServiceResolverOutput) ToEkmConnectionServiceResolverOutputWithContext added in v7.15.0

func (o EkmConnectionServiceResolverOutput) ToEkmConnectionServiceResolverOutputWithContext(ctx context.Context) EkmConnectionServiceResolverOutput

type EkmConnectionServiceResolverServerCertificate added in v7.15.0

type EkmConnectionServiceResolverServerCertificate struct {
	// (Output)
	// Output only. The issuer distinguished name in RFC 2253 format. Only present if parsed is true.
	Issuer *string `pulumi:"issuer"`
	// (Output)
	// Output only. The certificate is not valid after this time. Only present if parsed is true.
	// A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".
	NotAfterTime *string `pulumi:"notAfterTime"`
	// (Output)
	// Output only. The certificate is not valid before this time. Only present if parsed is true.
	// A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".
	NotBeforeTime *string `pulumi:"notBeforeTime"`
	// (Output)
	// Output only. True if the certificate was parsed successfully.
	Parsed *bool `pulumi:"parsed"`
	// Required. The raw certificate bytes in DER format. A base64-encoded string.
	RawDer string `pulumi:"rawDer"`
	// (Output)
	// Output only. The certificate serial number as a hex string. Only present if parsed is true.
	SerialNumber *string `pulumi:"serialNumber"`
	// (Output)
	// Output only. The SHA-256 certificate fingerprint as a hex string. Only present if parsed is true.
	Sha256Fingerprint *string `pulumi:"sha256Fingerprint"`
	// (Output)
	// Output only. The subject distinguished name in RFC 2253 format. Only present if parsed is true.
	Subject *string `pulumi:"subject"`
	// (Output)
	// Output only. The subject Alternative DNS names. Only present if parsed is true.
	//
	// ***
	SubjectAlternativeDnsNames []string `pulumi:"subjectAlternativeDnsNames"`
}

type EkmConnectionServiceResolverServerCertificateArgs added in v7.15.0

type EkmConnectionServiceResolverServerCertificateArgs struct {
	// (Output)
	// Output only. The issuer distinguished name in RFC 2253 format. Only present if parsed is true.
	Issuer pulumi.StringPtrInput `pulumi:"issuer"`
	// (Output)
	// Output only. The certificate is not valid after this time. Only present if parsed is true.
	// A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".
	NotAfterTime pulumi.StringPtrInput `pulumi:"notAfterTime"`
	// (Output)
	// Output only. The certificate is not valid before this time. Only present if parsed is true.
	// A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".
	NotBeforeTime pulumi.StringPtrInput `pulumi:"notBeforeTime"`
	// (Output)
	// Output only. True if the certificate was parsed successfully.
	Parsed pulumi.BoolPtrInput `pulumi:"parsed"`
	// Required. The raw certificate bytes in DER format. A base64-encoded string.
	RawDer pulumi.StringInput `pulumi:"rawDer"`
	// (Output)
	// Output only. The certificate serial number as a hex string. Only present if parsed is true.
	SerialNumber pulumi.StringPtrInput `pulumi:"serialNumber"`
	// (Output)
	// Output only. The SHA-256 certificate fingerprint as a hex string. Only present if parsed is true.
	Sha256Fingerprint pulumi.StringPtrInput `pulumi:"sha256Fingerprint"`
	// (Output)
	// Output only. The subject distinguished name in RFC 2253 format. Only present if parsed is true.
	Subject pulumi.StringPtrInput `pulumi:"subject"`
	// (Output)
	// Output only. The subject Alternative DNS names. Only present if parsed is true.
	//
	// ***
	SubjectAlternativeDnsNames pulumi.StringArrayInput `pulumi:"subjectAlternativeDnsNames"`
}

func (EkmConnectionServiceResolverServerCertificateArgs) ElementType added in v7.15.0

func (EkmConnectionServiceResolverServerCertificateArgs) ToEkmConnectionServiceResolverServerCertificateOutput added in v7.15.0

func (i EkmConnectionServiceResolverServerCertificateArgs) ToEkmConnectionServiceResolverServerCertificateOutput() EkmConnectionServiceResolverServerCertificateOutput

func (EkmConnectionServiceResolverServerCertificateArgs) ToEkmConnectionServiceResolverServerCertificateOutputWithContext added in v7.15.0

func (i EkmConnectionServiceResolverServerCertificateArgs) ToEkmConnectionServiceResolverServerCertificateOutputWithContext(ctx context.Context) EkmConnectionServiceResolverServerCertificateOutput

type EkmConnectionServiceResolverServerCertificateArray added in v7.15.0

type EkmConnectionServiceResolverServerCertificateArray []EkmConnectionServiceResolverServerCertificateInput

func (EkmConnectionServiceResolverServerCertificateArray) ElementType added in v7.15.0

func (EkmConnectionServiceResolverServerCertificateArray) ToEkmConnectionServiceResolverServerCertificateArrayOutput added in v7.15.0

func (i EkmConnectionServiceResolverServerCertificateArray) ToEkmConnectionServiceResolverServerCertificateArrayOutput() EkmConnectionServiceResolverServerCertificateArrayOutput

func (EkmConnectionServiceResolverServerCertificateArray) ToEkmConnectionServiceResolverServerCertificateArrayOutputWithContext added in v7.15.0

func (i EkmConnectionServiceResolverServerCertificateArray) ToEkmConnectionServiceResolverServerCertificateArrayOutputWithContext(ctx context.Context) EkmConnectionServiceResolverServerCertificateArrayOutput

type EkmConnectionServiceResolverServerCertificateArrayInput added in v7.15.0

type EkmConnectionServiceResolverServerCertificateArrayInput interface {
	pulumi.Input

	ToEkmConnectionServiceResolverServerCertificateArrayOutput() EkmConnectionServiceResolverServerCertificateArrayOutput
	ToEkmConnectionServiceResolverServerCertificateArrayOutputWithContext(context.Context) EkmConnectionServiceResolverServerCertificateArrayOutput
}

EkmConnectionServiceResolverServerCertificateArrayInput is an input type that accepts EkmConnectionServiceResolverServerCertificateArray and EkmConnectionServiceResolverServerCertificateArrayOutput values. You can construct a concrete instance of `EkmConnectionServiceResolverServerCertificateArrayInput` via:

EkmConnectionServiceResolverServerCertificateArray{ EkmConnectionServiceResolverServerCertificateArgs{...} }

type EkmConnectionServiceResolverServerCertificateArrayOutput added in v7.15.0

type EkmConnectionServiceResolverServerCertificateArrayOutput struct{ *pulumi.OutputState }

func (EkmConnectionServiceResolverServerCertificateArrayOutput) ElementType added in v7.15.0

func (EkmConnectionServiceResolverServerCertificateArrayOutput) Index added in v7.15.0

func (EkmConnectionServiceResolverServerCertificateArrayOutput) ToEkmConnectionServiceResolverServerCertificateArrayOutput added in v7.15.0

func (EkmConnectionServiceResolverServerCertificateArrayOutput) ToEkmConnectionServiceResolverServerCertificateArrayOutputWithContext added in v7.15.0

func (o EkmConnectionServiceResolverServerCertificateArrayOutput) ToEkmConnectionServiceResolverServerCertificateArrayOutputWithContext(ctx context.Context) EkmConnectionServiceResolverServerCertificateArrayOutput

type EkmConnectionServiceResolverServerCertificateInput added in v7.15.0

type EkmConnectionServiceResolverServerCertificateInput interface {
	pulumi.Input

	ToEkmConnectionServiceResolverServerCertificateOutput() EkmConnectionServiceResolverServerCertificateOutput
	ToEkmConnectionServiceResolverServerCertificateOutputWithContext(context.Context) EkmConnectionServiceResolverServerCertificateOutput
}

EkmConnectionServiceResolverServerCertificateInput is an input type that accepts EkmConnectionServiceResolverServerCertificateArgs and EkmConnectionServiceResolverServerCertificateOutput values. You can construct a concrete instance of `EkmConnectionServiceResolverServerCertificateInput` via:

EkmConnectionServiceResolverServerCertificateArgs{...}

type EkmConnectionServiceResolverServerCertificateOutput added in v7.15.0

type EkmConnectionServiceResolverServerCertificateOutput struct{ *pulumi.OutputState }

func (EkmConnectionServiceResolverServerCertificateOutput) ElementType added in v7.15.0

func (EkmConnectionServiceResolverServerCertificateOutput) Issuer added in v7.15.0

(Output) Output only. The issuer distinguished name in RFC 2253 format. Only present if parsed is true.

func (EkmConnectionServiceResolverServerCertificateOutput) NotAfterTime added in v7.15.0

(Output) Output only. The certificate is not valid after this time. Only present if parsed is true. A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".

func (EkmConnectionServiceResolverServerCertificateOutput) NotBeforeTime added in v7.15.0

(Output) Output only. The certificate is not valid before this time. Only present if parsed is true. A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".

func (EkmConnectionServiceResolverServerCertificateOutput) Parsed added in v7.15.0

(Output) Output only. True if the certificate was parsed successfully.

func (EkmConnectionServiceResolverServerCertificateOutput) RawDer added in v7.15.0

Required. The raw certificate bytes in DER format. A base64-encoded string.

func (EkmConnectionServiceResolverServerCertificateOutput) SerialNumber added in v7.15.0

(Output) Output only. The certificate serial number as a hex string. Only present if parsed is true.

func (EkmConnectionServiceResolverServerCertificateOutput) Sha256Fingerprint added in v7.15.0

(Output) Output only. The SHA-256 certificate fingerprint as a hex string. Only present if parsed is true.

func (EkmConnectionServiceResolverServerCertificateOutput) Subject added in v7.15.0

(Output) Output only. The subject distinguished name in RFC 2253 format. Only present if parsed is true.

func (EkmConnectionServiceResolverServerCertificateOutput) SubjectAlternativeDnsNames added in v7.15.0

(Output) Output only. The subject Alternative DNS names. Only present if parsed is true.

***

func (EkmConnectionServiceResolverServerCertificateOutput) ToEkmConnectionServiceResolverServerCertificateOutput added in v7.15.0

func (o EkmConnectionServiceResolverServerCertificateOutput) ToEkmConnectionServiceResolverServerCertificateOutput() EkmConnectionServiceResolverServerCertificateOutput

func (EkmConnectionServiceResolverServerCertificateOutput) ToEkmConnectionServiceResolverServerCertificateOutputWithContext added in v7.15.0

func (o EkmConnectionServiceResolverServerCertificateOutput) ToEkmConnectionServiceResolverServerCertificateOutputWithContext(ctx context.Context) EkmConnectionServiceResolverServerCertificateOutput

type EkmConnectionState added in v7.15.0

type EkmConnectionState struct {
	// Output only. The time at which the EkmConnection was created.
	// A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".
	CreateTime pulumi.StringPtrInput
	// Optional. Identifies the EKM Crypto Space that this EkmConnection maps to. Note: This field is required if
	// KeyManagementMode is CLOUD_KMS.
	CryptoSpacePath pulumi.StringPtrInput
	// Optional. Etag of the currently stored EkmConnection.
	Etag pulumi.StringPtrInput
	// Optional. Describes who can perform control plane operations on the EKM. If unset, this defaults to MANUAL Default
	// value: "MANUAL" Possible values: ["MANUAL", "CLOUD_KMS"]
	KeyManagementMode pulumi.StringPtrInput
	// The location for the EkmConnection.
	// A full list of valid locations can be found by running `gcloud kms locations list`.
	Location pulumi.StringPtrInput
	// The resource name for the EkmConnection.
	Name    pulumi.StringPtrInput
	Project pulumi.StringPtrInput
	// A list of ServiceResolvers where the EKM can be reached. There should be one ServiceResolver per EKM replica. Currently, only a single ServiceResolver is supported
	// Structure is documented below.
	ServiceResolvers EkmConnectionServiceResolverArrayInput
}

func (EkmConnectionState) ElementType added in v7.15.0

func (EkmConnectionState) ElementType() reflect.Type

type GetCryptoKeyIamPolicyArgs

type GetCryptoKeyIamPolicyArgs struct {
	// The crypto key ID, in the form
	CryptoKeyId string `pulumi:"cryptoKeyId"`
}

A collection of arguments for invoking getCryptoKeyIamPolicy.

type GetCryptoKeyIamPolicyOutputArgs

type GetCryptoKeyIamPolicyOutputArgs struct {
	// The crypto key ID, in the form
	CryptoKeyId pulumi.StringInput `pulumi:"cryptoKeyId"`
}

A collection of arguments for invoking getCryptoKeyIamPolicy.

func (GetCryptoKeyIamPolicyOutputArgs) ElementType

type GetCryptoKeyIamPolicyResult

type GetCryptoKeyIamPolicyResult struct {
	CryptoKeyId string `pulumi:"cryptoKeyId"`
	// (Computed) The etag of the IAM policy.
	Etag string `pulumi:"etag"`
	// The provider-assigned unique ID for this managed resource.
	Id string `pulumi:"id"`
	// (Computed) The policy data
	PolicyData string `pulumi:"policyData"`
}

A collection of values returned by getCryptoKeyIamPolicy.

func GetCryptoKeyIamPolicy

func GetCryptoKeyIamPolicy(ctx *pulumi.Context, args *GetCryptoKeyIamPolicyArgs, opts ...pulumi.InvokeOption) (*GetCryptoKeyIamPolicyResult, error)

Retrieves the current IAM policy data for a Google Cloud KMS crypto key.

## example

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.GetCryptoKeyIamPolicy(ctx, &kms.GetCryptoKeyIamPolicyArgs{
			CryptoKeyId: cryptoKey.Id,
		}, nil)
		if err != nil {
			return err
		}
		return nil
	})
}

```

type GetCryptoKeyIamPolicyResultOutput

type GetCryptoKeyIamPolicyResultOutput struct{ *pulumi.OutputState }

A collection of values returned by getCryptoKeyIamPolicy.

func (GetCryptoKeyIamPolicyResultOutput) CryptoKeyId

func (GetCryptoKeyIamPolicyResultOutput) ElementType

func (GetCryptoKeyIamPolicyResultOutput) Etag

(Computed) The etag of the IAM policy.

func (GetCryptoKeyIamPolicyResultOutput) Id

The provider-assigned unique ID for this managed resource.

func (GetCryptoKeyIamPolicyResultOutput) PolicyData

(Computed) The policy data

func (GetCryptoKeyIamPolicyResultOutput) ToGetCryptoKeyIamPolicyResultOutput

func (o GetCryptoKeyIamPolicyResultOutput) ToGetCryptoKeyIamPolicyResultOutput() GetCryptoKeyIamPolicyResultOutput

func (GetCryptoKeyIamPolicyResultOutput) ToGetCryptoKeyIamPolicyResultOutputWithContext

func (o GetCryptoKeyIamPolicyResultOutput) ToGetCryptoKeyIamPolicyResultOutputWithContext(ctx context.Context) GetCryptoKeyIamPolicyResultOutput

type GetKMSCryptoKeyArgs

type GetKMSCryptoKeyArgs struct {
	// The `id` of the Google Cloud Platform KeyRing to which the key belongs.
	KeyRing string `pulumi:"keyRing"`
	// The CryptoKey's name.
	// A CryptoKey’s name belonging to the specified Google Cloud Platform KeyRing and match the regular expression `[a-zA-Z0-9_-]{1,63}`
	Name string `pulumi:"name"`
}

A collection of arguments for invoking getKMSCryptoKey.

type GetKMSCryptoKeyOutputArgs

type GetKMSCryptoKeyOutputArgs struct {
	// The `id` of the Google Cloud Platform KeyRing to which the key belongs.
	KeyRing pulumi.StringInput `pulumi:"keyRing"`
	// The CryptoKey's name.
	// A CryptoKey’s name belonging to the specified Google Cloud Platform KeyRing and match the regular expression `[a-zA-Z0-9_-]{1,63}`
	Name pulumi.StringInput `pulumi:"name"`
}

A collection of arguments for invoking getKMSCryptoKey.

func (GetKMSCryptoKeyOutputArgs) ElementType

func (GetKMSCryptoKeyOutputArgs) ElementType() reflect.Type

type GetKMSCryptoKeyPrimary added in v7.5.0

type GetKMSCryptoKeyPrimary struct {
	// The CryptoKey's name.
	// A CryptoKey’s name belonging to the specified Google Cloud Platform KeyRing and match the regular expression `[a-zA-Z0-9_-]{1,63}`
	Name string `pulumi:"name"`
	// The current state of the CryptoKeyVersion.
	State string `pulumi:"state"`
}

type GetKMSCryptoKeyPrimaryArgs added in v7.5.0

type GetKMSCryptoKeyPrimaryArgs struct {
	// The CryptoKey's name.
	// A CryptoKey’s name belonging to the specified Google Cloud Platform KeyRing and match the regular expression `[a-zA-Z0-9_-]{1,63}`
	Name pulumi.StringInput `pulumi:"name"`
	// The current state of the CryptoKeyVersion.
	State pulumi.StringInput `pulumi:"state"`
}

func (GetKMSCryptoKeyPrimaryArgs) ElementType added in v7.5.0

func (GetKMSCryptoKeyPrimaryArgs) ElementType() reflect.Type

func (GetKMSCryptoKeyPrimaryArgs) ToGetKMSCryptoKeyPrimaryOutput added in v7.5.0

func (i GetKMSCryptoKeyPrimaryArgs) ToGetKMSCryptoKeyPrimaryOutput() GetKMSCryptoKeyPrimaryOutput

func (GetKMSCryptoKeyPrimaryArgs) ToGetKMSCryptoKeyPrimaryOutputWithContext added in v7.5.0

func (i GetKMSCryptoKeyPrimaryArgs) ToGetKMSCryptoKeyPrimaryOutputWithContext(ctx context.Context) GetKMSCryptoKeyPrimaryOutput

type GetKMSCryptoKeyPrimaryArray added in v7.5.0

type GetKMSCryptoKeyPrimaryArray []GetKMSCryptoKeyPrimaryInput

func (GetKMSCryptoKeyPrimaryArray) ElementType added in v7.5.0

func (GetKMSCryptoKeyPrimaryArray) ToGetKMSCryptoKeyPrimaryArrayOutput added in v7.5.0

func (i GetKMSCryptoKeyPrimaryArray) ToGetKMSCryptoKeyPrimaryArrayOutput() GetKMSCryptoKeyPrimaryArrayOutput

func (GetKMSCryptoKeyPrimaryArray) ToGetKMSCryptoKeyPrimaryArrayOutputWithContext added in v7.5.0

func (i GetKMSCryptoKeyPrimaryArray) ToGetKMSCryptoKeyPrimaryArrayOutputWithContext(ctx context.Context) GetKMSCryptoKeyPrimaryArrayOutput

type GetKMSCryptoKeyPrimaryArrayInput added in v7.5.0

type GetKMSCryptoKeyPrimaryArrayInput interface {
	pulumi.Input

	ToGetKMSCryptoKeyPrimaryArrayOutput() GetKMSCryptoKeyPrimaryArrayOutput
	ToGetKMSCryptoKeyPrimaryArrayOutputWithContext(context.Context) GetKMSCryptoKeyPrimaryArrayOutput
}

GetKMSCryptoKeyPrimaryArrayInput is an input type that accepts GetKMSCryptoKeyPrimaryArray and GetKMSCryptoKeyPrimaryArrayOutput values. You can construct a concrete instance of `GetKMSCryptoKeyPrimaryArrayInput` via:

GetKMSCryptoKeyPrimaryArray{ GetKMSCryptoKeyPrimaryArgs{...} }

type GetKMSCryptoKeyPrimaryArrayOutput added in v7.5.0

type GetKMSCryptoKeyPrimaryArrayOutput struct{ *pulumi.OutputState }

func (GetKMSCryptoKeyPrimaryArrayOutput) ElementType added in v7.5.0

func (GetKMSCryptoKeyPrimaryArrayOutput) Index added in v7.5.0

func (GetKMSCryptoKeyPrimaryArrayOutput) ToGetKMSCryptoKeyPrimaryArrayOutput added in v7.5.0

func (o GetKMSCryptoKeyPrimaryArrayOutput) ToGetKMSCryptoKeyPrimaryArrayOutput() GetKMSCryptoKeyPrimaryArrayOutput

func (GetKMSCryptoKeyPrimaryArrayOutput) ToGetKMSCryptoKeyPrimaryArrayOutputWithContext added in v7.5.0

func (o GetKMSCryptoKeyPrimaryArrayOutput) ToGetKMSCryptoKeyPrimaryArrayOutputWithContext(ctx context.Context) GetKMSCryptoKeyPrimaryArrayOutput

type GetKMSCryptoKeyPrimaryInput added in v7.5.0

type GetKMSCryptoKeyPrimaryInput interface {
	pulumi.Input

	ToGetKMSCryptoKeyPrimaryOutput() GetKMSCryptoKeyPrimaryOutput
	ToGetKMSCryptoKeyPrimaryOutputWithContext(context.Context) GetKMSCryptoKeyPrimaryOutput
}

GetKMSCryptoKeyPrimaryInput is an input type that accepts GetKMSCryptoKeyPrimaryArgs and GetKMSCryptoKeyPrimaryOutput values. You can construct a concrete instance of `GetKMSCryptoKeyPrimaryInput` via:

GetKMSCryptoKeyPrimaryArgs{...}

type GetKMSCryptoKeyPrimaryOutput added in v7.5.0

type GetKMSCryptoKeyPrimaryOutput struct{ *pulumi.OutputState }

func (GetKMSCryptoKeyPrimaryOutput) ElementType added in v7.5.0

func (GetKMSCryptoKeyPrimaryOutput) Name added in v7.5.0

The CryptoKey's name. A CryptoKey’s name belonging to the specified Google Cloud Platform KeyRing and match the regular expression `[a-zA-Z0-9_-]{1,63}`

func (GetKMSCryptoKeyPrimaryOutput) State added in v7.5.0

The current state of the CryptoKeyVersion.

func (GetKMSCryptoKeyPrimaryOutput) ToGetKMSCryptoKeyPrimaryOutput added in v7.5.0

func (o GetKMSCryptoKeyPrimaryOutput) ToGetKMSCryptoKeyPrimaryOutput() GetKMSCryptoKeyPrimaryOutput

func (GetKMSCryptoKeyPrimaryOutput) ToGetKMSCryptoKeyPrimaryOutputWithContext added in v7.5.0

func (o GetKMSCryptoKeyPrimaryOutput) ToGetKMSCryptoKeyPrimaryOutputWithContext(ctx context.Context) GetKMSCryptoKeyPrimaryOutput

type GetKMSCryptoKeyResult

type GetKMSCryptoKeyResult struct {
	CryptoKeyBackend         string            `pulumi:"cryptoKeyBackend"`
	DestroyScheduledDuration string            `pulumi:"destroyScheduledDuration"`
	EffectiveLabels          map[string]string `pulumi:"effectiveLabels"`
	// The provider-assigned unique ID for this managed resource.
	Id           string                   `pulumi:"id"`
	ImportOnly   bool                     `pulumi:"importOnly"`
	KeyRing      string                   `pulumi:"keyRing"`
	Labels       map[string]string        `pulumi:"labels"`
	Name         string                   `pulumi:"name"`
	Primaries    []GetKMSCryptoKeyPrimary `pulumi:"primaries"`
	PulumiLabels map[string]string        `pulumi:"pulumiLabels"`
	// Defines the cryptographic capabilities of the key.
	Purpose string `pulumi:"purpose"`
	// Every time this period passes, generate a new CryptoKeyVersion and set it as
	// the primary. The first rotation will take place after the specified period. The rotation period has the format
	// of a decimal number with up to 9 fractional digits, followed by the letter s (seconds).
	RotationPeriod             string                           `pulumi:"rotationPeriod"`
	SkipInitialVersionCreation bool                             `pulumi:"skipInitialVersionCreation"`
	VersionTemplates           []GetKMSCryptoKeyVersionTemplate `pulumi:"versionTemplates"`
}

A collection of values returned by getKMSCryptoKey.

func GetKMSCryptoKey

func GetKMSCryptoKey(ctx *pulumi.Context, args *GetKMSCryptoKeyArgs, opts ...pulumi.InvokeOption) (*GetKMSCryptoKeyResult, error)

Provides access to a Google Cloud Platform KMS CryptoKey. For more information see [the official documentation](https://cloud.google.com/kms/docs/object-hierarchy#key) and [API](https://cloud.google.com/kms/docs/reference/rest/v1/projects.locations.keyRings.cryptoKeys).

A CryptoKey is an interface to key material which can be used to encrypt and decrypt data. A CryptoKey belongs to a Google Cloud KMS KeyRing.

## Example Usage

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		myKeyRing, err := kms.GetKMSKeyRing(ctx, &kms.GetKMSKeyRingArgs{
			Name:     "my-key-ring",
			Location: "us-central1",
		}, nil)
		if err != nil {
			return err
		}
		_, err = kms.GetKMSCryptoKey(ctx, &kms.GetKMSCryptoKeyArgs{
			Name:    "my-crypto-key",
			KeyRing: myKeyRing.Id,
		}, nil)
		if err != nil {
			return err
		}
		return nil
	})
}

```

type GetKMSCryptoKeyResultOutput

type GetKMSCryptoKeyResultOutput struct{ *pulumi.OutputState }

A collection of values returned by getKMSCryptoKey.

func (GetKMSCryptoKeyResultOutput) CryptoKeyBackend added in v7.17.0

func (o GetKMSCryptoKeyResultOutput) CryptoKeyBackend() pulumi.StringOutput

func (GetKMSCryptoKeyResultOutput) DestroyScheduledDuration

func (o GetKMSCryptoKeyResultOutput) DestroyScheduledDuration() pulumi.StringOutput

func (GetKMSCryptoKeyResultOutput) EffectiveLabels

func (GetKMSCryptoKeyResultOutput) ElementType

func (GetKMSCryptoKeyResultOutput) Id

The provider-assigned unique ID for this managed resource.

func (GetKMSCryptoKeyResultOutput) ImportOnly

func (GetKMSCryptoKeyResultOutput) KeyRing

func (GetKMSCryptoKeyResultOutput) Labels

func (GetKMSCryptoKeyResultOutput) Name

func (GetKMSCryptoKeyResultOutput) Primaries added in v7.5.0

func (GetKMSCryptoKeyResultOutput) PulumiLabels

func (GetKMSCryptoKeyResultOutput) Purpose

Defines the cryptographic capabilities of the key.

func (GetKMSCryptoKeyResultOutput) RotationPeriod

func (o GetKMSCryptoKeyResultOutput) RotationPeriod() pulumi.StringOutput

Every time this period passes, generate a new CryptoKeyVersion and set it as the primary. The first rotation will take place after the specified period. The rotation period has the format of a decimal number with up to 9 fractional digits, followed by the letter s (seconds).

func (GetKMSCryptoKeyResultOutput) SkipInitialVersionCreation

func (o GetKMSCryptoKeyResultOutput) SkipInitialVersionCreation() pulumi.BoolOutput

func (GetKMSCryptoKeyResultOutput) ToGetKMSCryptoKeyResultOutput

func (o GetKMSCryptoKeyResultOutput) ToGetKMSCryptoKeyResultOutput() GetKMSCryptoKeyResultOutput

func (GetKMSCryptoKeyResultOutput) ToGetKMSCryptoKeyResultOutputWithContext

func (o GetKMSCryptoKeyResultOutput) ToGetKMSCryptoKeyResultOutputWithContext(ctx context.Context) GetKMSCryptoKeyResultOutput

func (GetKMSCryptoKeyResultOutput) VersionTemplates

type GetKMSCryptoKeyVersionArgs

type GetKMSCryptoKeyVersionArgs struct {
	// The `id` of the Google Cloud Platform CryptoKey to which the key version belongs. This is also the `id` field of the
	// `kms.CryptoKey` resource/datasource.
	CryptoKey string `pulumi:"cryptoKey"`
	// The version number for this CryptoKeyVersion. Defaults to `1`.
	Version *int `pulumi:"version"`
}

A collection of arguments for invoking getKMSCryptoKeyVersion.

type GetKMSCryptoKeyVersionOutputArgs

type GetKMSCryptoKeyVersionOutputArgs struct {
	// The `id` of the Google Cloud Platform CryptoKey to which the key version belongs. This is also the `id` field of the
	// `kms.CryptoKey` resource/datasource.
	CryptoKey pulumi.StringInput `pulumi:"cryptoKey"`
	// The version number for this CryptoKeyVersion. Defaults to `1`.
	Version pulumi.IntPtrInput `pulumi:"version"`
}

A collection of arguments for invoking getKMSCryptoKeyVersion.

func (GetKMSCryptoKeyVersionOutputArgs) ElementType

type GetKMSCryptoKeyVersionPublicKey

type GetKMSCryptoKeyVersionPublicKey struct {
	// The CryptoKeyVersionAlgorithm that this CryptoKeyVersion supports.
	Algorithm string `pulumi:"algorithm"`
	// The public key, encoded in PEM format. For more information, see the RFC 7468 sections for General Considerations and Textual Encoding of Subject Public Key Info.
	Pem string `pulumi:"pem"`
}

type GetKMSCryptoKeyVersionPublicKeyArgs

type GetKMSCryptoKeyVersionPublicKeyArgs struct {
	// The CryptoKeyVersionAlgorithm that this CryptoKeyVersion supports.
	Algorithm pulumi.StringInput `pulumi:"algorithm"`
	// The public key, encoded in PEM format. For more information, see the RFC 7468 sections for General Considerations and Textual Encoding of Subject Public Key Info.
	Pem pulumi.StringInput `pulumi:"pem"`
}

func (GetKMSCryptoKeyVersionPublicKeyArgs) ElementType

func (GetKMSCryptoKeyVersionPublicKeyArgs) ToGetKMSCryptoKeyVersionPublicKeyOutput

func (i GetKMSCryptoKeyVersionPublicKeyArgs) ToGetKMSCryptoKeyVersionPublicKeyOutput() GetKMSCryptoKeyVersionPublicKeyOutput

func (GetKMSCryptoKeyVersionPublicKeyArgs) ToGetKMSCryptoKeyVersionPublicKeyOutputWithContext

func (i GetKMSCryptoKeyVersionPublicKeyArgs) ToGetKMSCryptoKeyVersionPublicKeyOutputWithContext(ctx context.Context) GetKMSCryptoKeyVersionPublicKeyOutput

type GetKMSCryptoKeyVersionPublicKeyArray

type GetKMSCryptoKeyVersionPublicKeyArray []GetKMSCryptoKeyVersionPublicKeyInput

func (GetKMSCryptoKeyVersionPublicKeyArray) ElementType

func (GetKMSCryptoKeyVersionPublicKeyArray) ToGetKMSCryptoKeyVersionPublicKeyArrayOutput

func (i GetKMSCryptoKeyVersionPublicKeyArray) ToGetKMSCryptoKeyVersionPublicKeyArrayOutput() GetKMSCryptoKeyVersionPublicKeyArrayOutput

func (GetKMSCryptoKeyVersionPublicKeyArray) ToGetKMSCryptoKeyVersionPublicKeyArrayOutputWithContext

func (i GetKMSCryptoKeyVersionPublicKeyArray) ToGetKMSCryptoKeyVersionPublicKeyArrayOutputWithContext(ctx context.Context) GetKMSCryptoKeyVersionPublicKeyArrayOutput

type GetKMSCryptoKeyVersionPublicKeyArrayInput

type GetKMSCryptoKeyVersionPublicKeyArrayInput interface {
	pulumi.Input

	ToGetKMSCryptoKeyVersionPublicKeyArrayOutput() GetKMSCryptoKeyVersionPublicKeyArrayOutput
	ToGetKMSCryptoKeyVersionPublicKeyArrayOutputWithContext(context.Context) GetKMSCryptoKeyVersionPublicKeyArrayOutput
}

GetKMSCryptoKeyVersionPublicKeyArrayInput is an input type that accepts GetKMSCryptoKeyVersionPublicKeyArray and GetKMSCryptoKeyVersionPublicKeyArrayOutput values. You can construct a concrete instance of `GetKMSCryptoKeyVersionPublicKeyArrayInput` via:

GetKMSCryptoKeyVersionPublicKeyArray{ GetKMSCryptoKeyVersionPublicKeyArgs{...} }

type GetKMSCryptoKeyVersionPublicKeyArrayOutput

type GetKMSCryptoKeyVersionPublicKeyArrayOutput struct{ *pulumi.OutputState }

func (GetKMSCryptoKeyVersionPublicKeyArrayOutput) ElementType

func (GetKMSCryptoKeyVersionPublicKeyArrayOutput) Index

func (GetKMSCryptoKeyVersionPublicKeyArrayOutput) ToGetKMSCryptoKeyVersionPublicKeyArrayOutput

func (o GetKMSCryptoKeyVersionPublicKeyArrayOutput) ToGetKMSCryptoKeyVersionPublicKeyArrayOutput() GetKMSCryptoKeyVersionPublicKeyArrayOutput

func (GetKMSCryptoKeyVersionPublicKeyArrayOutput) ToGetKMSCryptoKeyVersionPublicKeyArrayOutputWithContext

func (o GetKMSCryptoKeyVersionPublicKeyArrayOutput) ToGetKMSCryptoKeyVersionPublicKeyArrayOutputWithContext(ctx context.Context) GetKMSCryptoKeyVersionPublicKeyArrayOutput

type GetKMSCryptoKeyVersionPublicKeyInput

type GetKMSCryptoKeyVersionPublicKeyInput interface {
	pulumi.Input

	ToGetKMSCryptoKeyVersionPublicKeyOutput() GetKMSCryptoKeyVersionPublicKeyOutput
	ToGetKMSCryptoKeyVersionPublicKeyOutputWithContext(context.Context) GetKMSCryptoKeyVersionPublicKeyOutput
}

GetKMSCryptoKeyVersionPublicKeyInput is an input type that accepts GetKMSCryptoKeyVersionPublicKeyArgs and GetKMSCryptoKeyVersionPublicKeyOutput values. You can construct a concrete instance of `GetKMSCryptoKeyVersionPublicKeyInput` via:

GetKMSCryptoKeyVersionPublicKeyArgs{...}

type GetKMSCryptoKeyVersionPublicKeyOutput

type GetKMSCryptoKeyVersionPublicKeyOutput struct{ *pulumi.OutputState }

func (GetKMSCryptoKeyVersionPublicKeyOutput) Algorithm

The CryptoKeyVersionAlgorithm that this CryptoKeyVersion supports.

func (GetKMSCryptoKeyVersionPublicKeyOutput) ElementType

func (GetKMSCryptoKeyVersionPublicKeyOutput) Pem

The public key, encoded in PEM format. For more information, see the RFC 7468 sections for General Considerations and Textual Encoding of Subject Public Key Info.

func (GetKMSCryptoKeyVersionPublicKeyOutput) ToGetKMSCryptoKeyVersionPublicKeyOutput

func (o GetKMSCryptoKeyVersionPublicKeyOutput) ToGetKMSCryptoKeyVersionPublicKeyOutput() GetKMSCryptoKeyVersionPublicKeyOutput

func (GetKMSCryptoKeyVersionPublicKeyOutput) ToGetKMSCryptoKeyVersionPublicKeyOutputWithContext

func (o GetKMSCryptoKeyVersionPublicKeyOutput) ToGetKMSCryptoKeyVersionPublicKeyOutputWithContext(ctx context.Context) GetKMSCryptoKeyVersionPublicKeyOutput

type GetKMSCryptoKeyVersionResult

type GetKMSCryptoKeyVersionResult struct {
	// The CryptoKeyVersionAlgorithm that this CryptoKeyVersion supports.
	Algorithm string `pulumi:"algorithm"`
	CryptoKey string `pulumi:"cryptoKey"`
	// The provider-assigned unique ID for this managed resource.
	Id string `pulumi:"id"`
	// The resource name for this CryptoKeyVersion in the format `projects/*/locations/*/keyRings/*/cryptoKeys/*/cryptoKeyVersions/*`
	Name string `pulumi:"name"`
	// The ProtectionLevel describing how crypto operations are performed with this CryptoKeyVersion. See the [protectionLevel reference](https://cloud.google.com/kms/docs/reference/rest/v1/ProtectionLevel) for possible outputs.
	ProtectionLevel string `pulumi:"protectionLevel"`
	// If the enclosing CryptoKey has purpose `ASYMMETRIC_SIGN` or `ASYMMETRIC_DECRYPT`, this block contains details about the public key associated to this CryptoKeyVersion. Structure is documented below.
	PublicKeys []GetKMSCryptoKeyVersionPublicKey `pulumi:"publicKeys"`
	// The current state of the CryptoKeyVersion. See the [state reference](https://cloud.google.com/kms/docs/reference/rest/v1/projects.locations.keyRings.cryptoKeys.cryptoKeyVersions#CryptoKeyVersion.CryptoKeyVersionState) for possible outputs.
	State   string `pulumi:"state"`
	Version *int   `pulumi:"version"`
}

A collection of values returned by getKMSCryptoKeyVersion.

func GetKMSCryptoKeyVersion

func GetKMSCryptoKeyVersion(ctx *pulumi.Context, args *GetKMSCryptoKeyVersionArgs, opts ...pulumi.InvokeOption) (*GetKMSCryptoKeyVersionResult, error)

Provides access to a Google Cloud Platform KMS CryptoKeyVersion. For more information see [the official documentation](https://cloud.google.com/kms/docs/object-hierarchy#key_version) and [API](https://cloud.google.com/kms/docs/reference/rest/v1/projects.locations.keyRings.cryptoKeys.cryptoKeyVersions).

A CryptoKeyVersion represents an individual cryptographic key, and the associated key material.

## Example Usage

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		myKeyRing, err := kms.GetKMSKeyRing(ctx, &kms.GetKMSKeyRingArgs{
			Name:     "my-key-ring",
			Location: "us-central1",
		}, nil)
		if err != nil {
			return err
		}
		_, err = kms.GetKMSCryptoKey(ctx, &kms.GetKMSCryptoKeyArgs{
			Name:    "my-crypto-key",
			KeyRing: myKeyRing.Id,
		}, nil)
		if err != nil {
			return err
		}
		_, err = kms.GetKMSCryptoKeyVersion(ctx, &kms.GetKMSCryptoKeyVersionArgs{
			CryptoKey: myKey.Id,
		}, nil)
		if err != nil {
			return err
		}
		return nil
	})
}

```

type GetKMSCryptoKeyVersionResultOutput

type GetKMSCryptoKeyVersionResultOutput struct{ *pulumi.OutputState }

A collection of values returned by getKMSCryptoKeyVersion.

func (GetKMSCryptoKeyVersionResultOutput) Algorithm

The CryptoKeyVersionAlgorithm that this CryptoKeyVersion supports.

func (GetKMSCryptoKeyVersionResultOutput) CryptoKey

func (GetKMSCryptoKeyVersionResultOutput) ElementType

func (GetKMSCryptoKeyVersionResultOutput) Id

The provider-assigned unique ID for this managed resource.

func (GetKMSCryptoKeyVersionResultOutput) Name

The resource name for this CryptoKeyVersion in the format `projects/*/locations/*/keyRings/*/cryptoKeys/*/cryptoKeyVersions/*`

func (GetKMSCryptoKeyVersionResultOutput) ProtectionLevel

The ProtectionLevel describing how crypto operations are performed with this CryptoKeyVersion. See the [protectionLevel reference](https://cloud.google.com/kms/docs/reference/rest/v1/ProtectionLevel) for possible outputs.

func (GetKMSCryptoKeyVersionResultOutput) PublicKeys

If the enclosing CryptoKey has purpose `ASYMMETRIC_SIGN` or `ASYMMETRIC_DECRYPT`, this block contains details about the public key associated to this CryptoKeyVersion. Structure is documented below.

func (GetKMSCryptoKeyVersionResultOutput) State

The current state of the CryptoKeyVersion. See the [state reference](https://cloud.google.com/kms/docs/reference/rest/v1/projects.locations.keyRings.cryptoKeys.cryptoKeyVersions#CryptoKeyVersion.CryptoKeyVersionState) for possible outputs.

func (GetKMSCryptoKeyVersionResultOutput) ToGetKMSCryptoKeyVersionResultOutput

func (o GetKMSCryptoKeyVersionResultOutput) ToGetKMSCryptoKeyVersionResultOutput() GetKMSCryptoKeyVersionResultOutput

func (GetKMSCryptoKeyVersionResultOutput) ToGetKMSCryptoKeyVersionResultOutputWithContext

func (o GetKMSCryptoKeyVersionResultOutput) ToGetKMSCryptoKeyVersionResultOutputWithContext(ctx context.Context) GetKMSCryptoKeyVersionResultOutput

func (GetKMSCryptoKeyVersionResultOutput) Version

type GetKMSCryptoKeyVersionTemplate

type GetKMSCryptoKeyVersionTemplate struct {
	// The algorithm to use when creating a version based on this template.
	// See the [algorithm reference](https://cloud.google.com/kms/docs/reference/rest/v1/CryptoKeyVersionAlgorithm) for possible inputs.
	Algorithm string `pulumi:"algorithm"`
	// The protection level to use when creating a version based on this template. Possible values include "SOFTWARE", "HSM", "EXTERNAL", "EXTERNAL_VPC". Defaults to "SOFTWARE".
	ProtectionLevel string `pulumi:"protectionLevel"`
}

type GetKMSCryptoKeyVersionTemplateArgs

type GetKMSCryptoKeyVersionTemplateArgs struct {
	// The algorithm to use when creating a version based on this template.
	// See the [algorithm reference](https://cloud.google.com/kms/docs/reference/rest/v1/CryptoKeyVersionAlgorithm) for possible inputs.
	Algorithm pulumi.StringInput `pulumi:"algorithm"`
	// The protection level to use when creating a version based on this template. Possible values include "SOFTWARE", "HSM", "EXTERNAL", "EXTERNAL_VPC". Defaults to "SOFTWARE".
	ProtectionLevel pulumi.StringInput `pulumi:"protectionLevel"`
}

func (GetKMSCryptoKeyVersionTemplateArgs) ElementType

func (GetKMSCryptoKeyVersionTemplateArgs) ToGetKMSCryptoKeyVersionTemplateOutput

func (i GetKMSCryptoKeyVersionTemplateArgs) ToGetKMSCryptoKeyVersionTemplateOutput() GetKMSCryptoKeyVersionTemplateOutput

func (GetKMSCryptoKeyVersionTemplateArgs) ToGetKMSCryptoKeyVersionTemplateOutputWithContext

func (i GetKMSCryptoKeyVersionTemplateArgs) ToGetKMSCryptoKeyVersionTemplateOutputWithContext(ctx context.Context) GetKMSCryptoKeyVersionTemplateOutput

type GetKMSCryptoKeyVersionTemplateArray

type GetKMSCryptoKeyVersionTemplateArray []GetKMSCryptoKeyVersionTemplateInput

func (GetKMSCryptoKeyVersionTemplateArray) ElementType

func (GetKMSCryptoKeyVersionTemplateArray) ToGetKMSCryptoKeyVersionTemplateArrayOutput

func (i GetKMSCryptoKeyVersionTemplateArray) ToGetKMSCryptoKeyVersionTemplateArrayOutput() GetKMSCryptoKeyVersionTemplateArrayOutput

func (GetKMSCryptoKeyVersionTemplateArray) ToGetKMSCryptoKeyVersionTemplateArrayOutputWithContext

func (i GetKMSCryptoKeyVersionTemplateArray) ToGetKMSCryptoKeyVersionTemplateArrayOutputWithContext(ctx context.Context) GetKMSCryptoKeyVersionTemplateArrayOutput

type GetKMSCryptoKeyVersionTemplateArrayInput

type GetKMSCryptoKeyVersionTemplateArrayInput interface {
	pulumi.Input

	ToGetKMSCryptoKeyVersionTemplateArrayOutput() GetKMSCryptoKeyVersionTemplateArrayOutput
	ToGetKMSCryptoKeyVersionTemplateArrayOutputWithContext(context.Context) GetKMSCryptoKeyVersionTemplateArrayOutput
}

GetKMSCryptoKeyVersionTemplateArrayInput is an input type that accepts GetKMSCryptoKeyVersionTemplateArray and GetKMSCryptoKeyVersionTemplateArrayOutput values. You can construct a concrete instance of `GetKMSCryptoKeyVersionTemplateArrayInput` via:

GetKMSCryptoKeyVersionTemplateArray{ GetKMSCryptoKeyVersionTemplateArgs{...} }

type GetKMSCryptoKeyVersionTemplateArrayOutput

type GetKMSCryptoKeyVersionTemplateArrayOutput struct{ *pulumi.OutputState }

func (GetKMSCryptoKeyVersionTemplateArrayOutput) ElementType

func (GetKMSCryptoKeyVersionTemplateArrayOutput) Index

func (GetKMSCryptoKeyVersionTemplateArrayOutput) ToGetKMSCryptoKeyVersionTemplateArrayOutput

func (o GetKMSCryptoKeyVersionTemplateArrayOutput) ToGetKMSCryptoKeyVersionTemplateArrayOutput() GetKMSCryptoKeyVersionTemplateArrayOutput

func (GetKMSCryptoKeyVersionTemplateArrayOutput) ToGetKMSCryptoKeyVersionTemplateArrayOutputWithContext

func (o GetKMSCryptoKeyVersionTemplateArrayOutput) ToGetKMSCryptoKeyVersionTemplateArrayOutputWithContext(ctx context.Context) GetKMSCryptoKeyVersionTemplateArrayOutput

type GetKMSCryptoKeyVersionTemplateInput

type GetKMSCryptoKeyVersionTemplateInput interface {
	pulumi.Input

	ToGetKMSCryptoKeyVersionTemplateOutput() GetKMSCryptoKeyVersionTemplateOutput
	ToGetKMSCryptoKeyVersionTemplateOutputWithContext(context.Context) GetKMSCryptoKeyVersionTemplateOutput
}

GetKMSCryptoKeyVersionTemplateInput is an input type that accepts GetKMSCryptoKeyVersionTemplateArgs and GetKMSCryptoKeyVersionTemplateOutput values. You can construct a concrete instance of `GetKMSCryptoKeyVersionTemplateInput` via:

GetKMSCryptoKeyVersionTemplateArgs{...}

type GetKMSCryptoKeyVersionTemplateOutput

type GetKMSCryptoKeyVersionTemplateOutput struct{ *pulumi.OutputState }

func (GetKMSCryptoKeyVersionTemplateOutput) Algorithm

The algorithm to use when creating a version based on this template. See the [algorithm reference](https://cloud.google.com/kms/docs/reference/rest/v1/CryptoKeyVersionAlgorithm) for possible inputs.

func (GetKMSCryptoKeyVersionTemplateOutput) ElementType

func (GetKMSCryptoKeyVersionTemplateOutput) ProtectionLevel

The protection level to use when creating a version based on this template. Possible values include "SOFTWARE", "HSM", "EXTERNAL", "EXTERNAL_VPC". Defaults to "SOFTWARE".

func (GetKMSCryptoKeyVersionTemplateOutput) ToGetKMSCryptoKeyVersionTemplateOutput

func (o GetKMSCryptoKeyVersionTemplateOutput) ToGetKMSCryptoKeyVersionTemplateOutput() GetKMSCryptoKeyVersionTemplateOutput

func (GetKMSCryptoKeyVersionTemplateOutput) ToGetKMSCryptoKeyVersionTemplateOutputWithContext

func (o GetKMSCryptoKeyVersionTemplateOutput) ToGetKMSCryptoKeyVersionTemplateOutputWithContext(ctx context.Context) GetKMSCryptoKeyVersionTemplateOutput

type GetKMSKeyRingArgs

type GetKMSKeyRingArgs struct {
	// The Google Cloud Platform location for the KeyRing.
	// A full list of valid locations can be found by running `gcloud kms locations list`.
	//
	// ***
	Location string `pulumi:"location"`
	// The KeyRing's name.
	// A KeyRing name must exist within the provided location and match the regular expression `[a-zA-Z0-9_-]{1,63}`
	Name string `pulumi:"name"`
	// The project in which the resource belongs. If it
	// is not provided, the provider project is used.
	Project *string `pulumi:"project"`
}

A collection of arguments for invoking getKMSKeyRing.

type GetKMSKeyRingOutputArgs

type GetKMSKeyRingOutputArgs struct {
	// The Google Cloud Platform location for the KeyRing.
	// A full list of valid locations can be found by running `gcloud kms locations list`.
	//
	// ***
	Location pulumi.StringInput `pulumi:"location"`
	// The KeyRing's name.
	// A KeyRing name must exist within the provided location and match the regular expression `[a-zA-Z0-9_-]{1,63}`
	Name pulumi.StringInput `pulumi:"name"`
	// The project in which the resource belongs. If it
	// is not provided, the provider project is used.
	Project pulumi.StringPtrInput `pulumi:"project"`
}

A collection of arguments for invoking getKMSKeyRing.

func (GetKMSKeyRingOutputArgs) ElementType

func (GetKMSKeyRingOutputArgs) ElementType() reflect.Type

type GetKMSKeyRingResult

type GetKMSKeyRingResult struct {
	// The provider-assigned unique ID for this managed resource.
	Id       string  `pulumi:"id"`
	Location string  `pulumi:"location"`
	Name     string  `pulumi:"name"`
	Project  *string `pulumi:"project"`
}

A collection of values returned by getKMSKeyRing.

func GetKMSKeyRing

func GetKMSKeyRing(ctx *pulumi.Context, args *GetKMSKeyRingArgs, opts ...pulumi.InvokeOption) (*GetKMSKeyRingResult, error)

Provides access to Google Cloud Platform KMS KeyRing. For more information see [the official documentation](https://cloud.google.com/kms/docs/object-hierarchy#key_ring) and [API](https://cloud.google.com/kms/docs/reference/rest/v1/projects.locations.keyRings).

A KeyRing is a grouping of CryptoKeys for organizational purposes. A KeyRing belongs to a Google Cloud Platform Project and resides in a specific location.

## Example Usage

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.GetKMSKeyRing(ctx, &kms.GetKMSKeyRingArgs{
			Name:     "my-key-ring",
			Location: "us-central1",
		}, nil)
		if err != nil {
			return err
		}
		return nil
	})
}

```

type GetKMSKeyRingResultOutput

type GetKMSKeyRingResultOutput struct{ *pulumi.OutputState }

A collection of values returned by getKMSKeyRing.

func (GetKMSKeyRingResultOutput) ElementType

func (GetKMSKeyRingResultOutput) ElementType() reflect.Type

func (GetKMSKeyRingResultOutput) Id

The provider-assigned unique ID for this managed resource.

func (GetKMSKeyRingResultOutput) Location

func (GetKMSKeyRingResultOutput) Name

func (GetKMSKeyRingResultOutput) Project

func (GetKMSKeyRingResultOutput) ToGetKMSKeyRingResultOutput

func (o GetKMSKeyRingResultOutput) ToGetKMSKeyRingResultOutput() GetKMSKeyRingResultOutput

func (GetKMSKeyRingResultOutput) ToGetKMSKeyRingResultOutputWithContext

func (o GetKMSKeyRingResultOutput) ToGetKMSKeyRingResultOutputWithContext(ctx context.Context) GetKMSKeyRingResultOutput

type GetKMSSecretArgs

type GetKMSSecretArgs struct {
	// The [additional authenticated data](https://cloud.google.com/kms/docs/additional-authenticated-data) used for integrity checks during encryption and decryption.
	AdditionalAuthenticatedData *string `pulumi:"additionalAuthenticatedData"`
	// The ciphertext to be decrypted, encoded in base64
	Ciphertext string `pulumi:"ciphertext"`
	// The id of the CryptoKey that will be used to
	// decrypt the provided ciphertext. This is represented by the format
	// `{projectId}/{location}/{keyRingName}/{cryptoKeyName}`.
	CryptoKey string `pulumi:"cryptoKey"`
}

A collection of arguments for invoking getKMSSecret.

type GetKMSSecretAsymmetricArgs

type GetKMSSecretAsymmetricArgs struct {
	// The ciphertext to be decrypted, encoded in base64
	Ciphertext string `pulumi:"ciphertext"`
	// The crc32 checksum of the `ciphertext` in hexadecimal notation. If not specified, it will be computed.
	Crc32 *string `pulumi:"crc32"`
	// The id of the CryptoKey version that will be used to
	// decrypt the provided ciphertext. This is represented by the format
	// `projects/{project}/locations/{location}/keyRings/{keyring}/cryptoKeys/{key}/cryptoKeyVersions/{version}`.
	CryptoKeyVersion string `pulumi:"cryptoKeyVersion"`
}

A collection of arguments for invoking getKMSSecretAsymmetric.

type GetKMSSecretAsymmetricOutputArgs

type GetKMSSecretAsymmetricOutputArgs struct {
	// The ciphertext to be decrypted, encoded in base64
	Ciphertext pulumi.StringInput `pulumi:"ciphertext"`
	// The crc32 checksum of the `ciphertext` in hexadecimal notation. If not specified, it will be computed.
	Crc32 pulumi.StringPtrInput `pulumi:"crc32"`
	// The id of the CryptoKey version that will be used to
	// decrypt the provided ciphertext. This is represented by the format
	// `projects/{project}/locations/{location}/keyRings/{keyring}/cryptoKeys/{key}/cryptoKeyVersions/{version}`.
	CryptoKeyVersion pulumi.StringInput `pulumi:"cryptoKeyVersion"`
}

A collection of arguments for invoking getKMSSecretAsymmetric.

func (GetKMSSecretAsymmetricOutputArgs) ElementType

type GetKMSSecretAsymmetricResult

type GetKMSSecretAsymmetricResult struct {
	Ciphertext string `pulumi:"ciphertext"`
	// Contains the crc32 checksum of the provided ciphertext.
	Crc32            *string `pulumi:"crc32"`
	CryptoKeyVersion string  `pulumi:"cryptoKeyVersion"`
	// The provider-assigned unique ID for this managed resource.
	Id string `pulumi:"id"`
	// Contains the result of decrypting the provided ciphertext.
	Plaintext string `pulumi:"plaintext"`
}

A collection of values returned by getKMSSecretAsymmetric.

func GetKMSSecretAsymmetric

func GetKMSSecretAsymmetric(ctx *pulumi.Context, args *GetKMSSecretAsymmetricArgs, opts ...pulumi.InvokeOption) (*GetKMSSecretAsymmetricResult, error)

## Example Usage

First, create a KMS KeyRing and CryptoKey using the resource definitions:

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		myKeyRing, err := kms.NewKeyRing(ctx, "my_key_ring", &kms.KeyRingArgs{
			Project:  pulumi.String("my-project"),
			Name:     pulumi.String("my-key-ring"),
			Location: pulumi.String("us-central1"),
		})
		if err != nil {
			return err
		}
		myCryptoKeyCryptoKey, err := kms.NewCryptoKey(ctx, "my_crypto_key", &kms.CryptoKeyArgs{
			Name:    pulumi.String("my-crypto-key"),
			KeyRing: myKeyRing.ID(),
			Purpose: pulumi.String("ASYMMETRIC_DECRYPT"),
			VersionTemplate: &kms.CryptoKeyVersionTemplateArgs{
				Algorithm: pulumi.String("RSA_DECRYPT_OAEP_4096_SHA256"),
			},
		})
		if err != nil {
			return err
		}
		_ = kms.GetKMSCryptoKeyVersionOutput(ctx, kms.GetKMSCryptoKeyVersionOutputArgs{
			CryptoKey: myCryptoKeyCryptoKey.ID(),
		}, nil)
		return nil
	})
}

```

Next, use the [Cloud SDK](https://cloud.google.com/kms/docs/encrypt-decrypt-rsa#kms-encrypt-asymmetric-cli) to encrypt some sensitive information:

Finally, reference the encrypted ciphertext in your resource definitions:

```go package main

import (

"fmt"

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/sql"
"github.com/pulumi/pulumi-random/sdk/v4/go/random"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.GetKMSSecretAsymmetric(ctx, &kms.GetKMSSecretAsymmetricArgs{
			CryptoKeyVersion: myCryptoKey.Id,
			Crc32:            pulumi.StringRef("12c59e54"),
			Ciphertext: `    M7nUoba9EGVTu2LjNjBKGdGVBYjyS/i/AY+4yQMQF0Qf/RfUfX31Jw6+VO9OuThq
    ylu/7ihX9XD4bM7yYdXnMv9p1OHQUlorSBSbb/J6n1W9UJhcp6um8Tw8/Isx4f75
    4PskYS6f8Y2ItliGt1/A9iR5BTgGtJBwOxMlgoX2Ggq+Nh4E5SbdoaE5o6CO1nBx
    eIPsPEebQ6qC4JehQM3IGuV/lrm58+hZhaXAqNzX1cEYyAt5GYqJIVCiI585SUYs
    wRToGyTgaN+zthF0HP9IWlR4Am4LmJ/1OcePTnYw11CkU8wNRbDzVAzogwNH+rXr
    LTmf7hxVjBm6bBSVSNFcBKAXFlllubSfIeZ5hgzGqn54OmSf6odO12L5JxllddHc
    yAd54vWKs2kJtnsKV2V4ZdkI0w6y1TeI67baFZDNGo6qsCpFMPnvv7d46Pg2VOp1
    J6Ivner0NnNHE4MzNmpZRk8WXMwqq4P/gTiT7F/aCX6oFCUQ4AWPQhJYh2dkcOmL
    IP+47Veb10aFn61F1CJwpmOOiGNXKdDT1vK8CMnnwhm825K0q/q9Zqpzc1+1ae1z
    mSqol1zCoa88CuSN6nTLQlVnN/dzfrGbc0boJPaM0iGhHtSzHk4SWg84LhiJB1q9
    A9XFJmOVdkvRY9nnz/iVLAdd0Q3vFtLqCdUYsNN2yh4=

`,

		}, nil)
		if err != nil {
			return err
		}
		dbNameSuffix, err := random.NewRandomId(ctx, "db_name_suffix", &random.RandomIdArgs{
			ByteLength: pulumi.Int(4),
		})
		if err != nil {
			return err
		}
		main, err := sql.NewDatabaseInstance(ctx, "main", &sql.DatabaseInstanceArgs{
			Name: dbNameSuffix.Hex.ApplyT(func(hex string) (string, error) {
				return fmt.Sprintf("main-instance-%v", hex), nil
			}).(pulumi.StringOutput),
			DatabaseVersion: pulumi.String("MYSQL_5_7"),
			Settings: &sql.DatabaseInstanceSettingsArgs{
				Tier: pulumi.String("db-f1-micro"),
			},
		})
		if err != nil {
			return err
		}
		_, err = sql.NewUser(ctx, "users", &sql.UserArgs{
			Name:     pulumi.String("me"),
			Instance: main.Name,
			Host:     pulumi.String("me.com"),
			Password: pulumi.Any(sqlUserPasswordGoogleKmsSecret.Plaintext),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

This will result in a Cloud SQL user being created with password `my-secret-password`.

type GetKMSSecretAsymmetricResultOutput

type GetKMSSecretAsymmetricResultOutput struct{ *pulumi.OutputState }

A collection of values returned by getKMSSecretAsymmetric.

func (GetKMSSecretAsymmetricResultOutput) Ciphertext

func (GetKMSSecretAsymmetricResultOutput) Crc32

Contains the crc32 checksum of the provided ciphertext.

func (GetKMSSecretAsymmetricResultOutput) CryptoKeyVersion

func (GetKMSSecretAsymmetricResultOutput) ElementType

func (GetKMSSecretAsymmetricResultOutput) Id

The provider-assigned unique ID for this managed resource.

func (GetKMSSecretAsymmetricResultOutput) Plaintext

Contains the result of decrypting the provided ciphertext.

func (GetKMSSecretAsymmetricResultOutput) ToGetKMSSecretAsymmetricResultOutput

func (o GetKMSSecretAsymmetricResultOutput) ToGetKMSSecretAsymmetricResultOutput() GetKMSSecretAsymmetricResultOutput

func (GetKMSSecretAsymmetricResultOutput) ToGetKMSSecretAsymmetricResultOutputWithContext

func (o GetKMSSecretAsymmetricResultOutput) ToGetKMSSecretAsymmetricResultOutputWithContext(ctx context.Context) GetKMSSecretAsymmetricResultOutput

type GetKMSSecretCiphertextArgs

type GetKMSSecretCiphertextArgs struct {
	// The id of the CryptoKey that will be used to
	// encrypt the provided plaintext. This is represented by the format
	// `{projectId}/{location}/{keyRingName}/{cryptoKeyName}`.
	CryptoKey string `pulumi:"cryptoKey"`
	// The plaintext to be encrypted
	Plaintext string `pulumi:"plaintext"`
}

A collection of arguments for invoking getKMSSecretCiphertext.

type GetKMSSecretCiphertextOutputArgs

type GetKMSSecretCiphertextOutputArgs struct {
	// The id of the CryptoKey that will be used to
	// encrypt the provided plaintext. This is represented by the format
	// `{projectId}/{location}/{keyRingName}/{cryptoKeyName}`.
	CryptoKey pulumi.StringInput `pulumi:"cryptoKey"`
	// The plaintext to be encrypted
	Plaintext pulumi.StringInput `pulumi:"plaintext"`
}

A collection of arguments for invoking getKMSSecretCiphertext.

func (GetKMSSecretCiphertextOutputArgs) ElementType

type GetKMSSecretCiphertextResult

type GetKMSSecretCiphertextResult struct {
	// Contains the result of encrypting the provided plaintext, encoded in base64.
	Ciphertext string `pulumi:"ciphertext"`
	CryptoKey  string `pulumi:"cryptoKey"`
	// The provider-assigned unique ID for this managed resource.
	Id        string `pulumi:"id"`
	Plaintext string `pulumi:"plaintext"`
}

A collection of values returned by getKMSSecretCiphertext.

func GetKMSSecretCiphertext

func GetKMSSecretCiphertext(ctx *pulumi.Context, args *GetKMSSecretCiphertextArgs, opts ...pulumi.InvokeOption) (*GetKMSSecretCiphertextResult, error)

!> **Warning:** This data source is deprecated. Use the `kms.SecretCiphertext` **resource** instead.

This data source allows you to encrypt data with Google Cloud KMS and use the ciphertext within your resource definitions.

For more information see [the official documentation](https://cloud.google.com/kms/docs/encrypt-decrypt).

> **NOTE:** Using this data source will allow you to conceal secret data within your resource definitions, but it does not take care of protecting that data in the logging output, plan output, or state output. Please take care to secure your secret data outside of resource definitions.

## Example Usage

First, create a KMS KeyRing and CryptoKey using the resource definitions:

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		myKeyRing, err := kms.NewKeyRing(ctx, "my_key_ring", &kms.KeyRingArgs{
			Project:  pulumi.String("my-project"),
			Name:     pulumi.String("my-key-ring"),
			Location: pulumi.String("us-central1"),
		})
		if err != nil {
			return err
		}
		_, err = kms.NewCryptoKey(ctx, "my_crypto_key", &kms.CryptoKeyArgs{
			Name:    pulumi.String("my-crypto-key"),
			KeyRing: myKeyRing.ID(),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

Next, encrypt some sensitive information and use the encrypted data in your resource definitions:

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute"
"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		myPassword, err := kms.GetKMSSecretCiphertext(ctx, &kms.GetKMSSecretCiphertextArgs{
			CryptoKey: myCryptoKey.Id,
			Plaintext: "my-secret-password",
		}, nil)
		if err != nil {
			return err
		}
		_, err = compute.NewInstance(ctx, "instance", &compute.InstanceArgs{
			NetworkInterfaces: compute.InstanceNetworkInterfaceArray{
				&compute.InstanceNetworkInterfaceArgs{
					AccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{
						nil,
					},
					Network: pulumi.String("default"),
				},
			},
			Name:        pulumi.String("test"),
			MachineType: pulumi.String("e2-medium"),
			Zone:        pulumi.String("us-central1-a"),
			BootDisk: &compute.InstanceBootDiskArgs{
				InitializeParams: &compute.InstanceBootDiskInitializeParamsArgs{
					Image: pulumi.String("debian-cloud/debian-11"),
				},
			},
			Metadata: pulumi.StringMap{
				"password": pulumi.String(myPassword.Ciphertext),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

The resulting instance can then access the encrypted password from its metadata and decrypt it, e.g. using the [Cloud SDK](https://cloud.google.com/sdk/gcloud/reference/kms/decrypt)):

type GetKMSSecretCiphertextResultOutput

type GetKMSSecretCiphertextResultOutput struct{ *pulumi.OutputState }

A collection of values returned by getKMSSecretCiphertext.

func (GetKMSSecretCiphertextResultOutput) Ciphertext

Contains the result of encrypting the provided plaintext, encoded in base64.

func (GetKMSSecretCiphertextResultOutput) CryptoKey

func (GetKMSSecretCiphertextResultOutput) ElementType

func (GetKMSSecretCiphertextResultOutput) Id

The provider-assigned unique ID for this managed resource.

func (GetKMSSecretCiphertextResultOutput) Plaintext

func (GetKMSSecretCiphertextResultOutput) ToGetKMSSecretCiphertextResultOutput

func (o GetKMSSecretCiphertextResultOutput) ToGetKMSSecretCiphertextResultOutput() GetKMSSecretCiphertextResultOutput

func (GetKMSSecretCiphertextResultOutput) ToGetKMSSecretCiphertextResultOutputWithContext

func (o GetKMSSecretCiphertextResultOutput) ToGetKMSSecretCiphertextResultOutputWithContext(ctx context.Context) GetKMSSecretCiphertextResultOutput

type GetKMSSecretOutputArgs

type GetKMSSecretOutputArgs struct {
	// The [additional authenticated data](https://cloud.google.com/kms/docs/additional-authenticated-data) used for integrity checks during encryption and decryption.
	AdditionalAuthenticatedData pulumi.StringPtrInput `pulumi:"additionalAuthenticatedData"`
	// The ciphertext to be decrypted, encoded in base64
	Ciphertext pulumi.StringInput `pulumi:"ciphertext"`
	// The id of the CryptoKey that will be used to
	// decrypt the provided ciphertext. This is represented by the format
	// `{projectId}/{location}/{keyRingName}/{cryptoKeyName}`.
	CryptoKey pulumi.StringInput `pulumi:"cryptoKey"`
}

A collection of arguments for invoking getKMSSecret.

func (GetKMSSecretOutputArgs) ElementType

func (GetKMSSecretOutputArgs) ElementType() reflect.Type

type GetKMSSecretResult

type GetKMSSecretResult struct {
	AdditionalAuthenticatedData *string `pulumi:"additionalAuthenticatedData"`
	Ciphertext                  string  `pulumi:"ciphertext"`
	CryptoKey                   string  `pulumi:"cryptoKey"`
	// The provider-assigned unique ID for this managed resource.
	Id string `pulumi:"id"`
	// Contains the result of decrypting the provided ciphertext.
	Plaintext string `pulumi:"plaintext"`
}

A collection of values returned by getKMSSecret.

func GetKMSSecret

func GetKMSSecret(ctx *pulumi.Context, args *GetKMSSecretArgs, opts ...pulumi.InvokeOption) (*GetKMSSecretResult, error)

This data source allows you to use data encrypted with Google Cloud KMS within your resource definitions.

For more information see [the official documentation](https://cloud.google.com/kms/docs/encrypt-decrypt).

> **NOTE:** Using this data provider will allow you to conceal secret data within your resource definitions, but it does not take care of protecting that data in the logging output, plan output, or state output. Please take care to secure your secret data outside of resource definitions.

## Example Usage

First, create a KMS KeyRing and CryptoKey using the resource definitions:

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		myKeyRing, err := kms.NewKeyRing(ctx, "my_key_ring", &kms.KeyRingArgs{
			Project:  pulumi.String("my-project"),
			Name:     pulumi.String("my-key-ring"),
			Location: pulumi.String("us-central1"),
		})
		if err != nil {
			return err
		}
		_, err = kms.NewCryptoKey(ctx, "my_crypto_key", &kms.CryptoKeyArgs{
			Name:    pulumi.String("my-crypto-key"),
			KeyRing: myKeyRing.ID(),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

Next, use the [Cloud SDK](https://cloud.google.com/sdk/gcloud/reference/kms/encrypt) to encrypt some sensitive information:

Finally, reference the encrypted ciphertext in your resource definitions:

```go package main

import (

"fmt"

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/sql"
"github.com/pulumi/pulumi-random/sdk/v4/go/random"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		sqlUserPassword, err := kms.GetKMSSecret(ctx, &kms.GetKMSSecretArgs{
			CryptoKey:  myCryptoKey.Id,
			Ciphertext: "CiQAqD+xX4SXOSziF4a8JYvq4spfAuWhhYSNul33H85HnVtNQW4SOgDu2UZ46dQCRFl5MF6ekabviN8xq+F+2035ZJ85B+xTYXqNf4mZs0RJitnWWuXlYQh6axnnJYu3kDU=",
		}, nil)
		if err != nil {
			return err
		}
		dbNameSuffix, err := random.NewRandomId(ctx, "db_name_suffix", &random.RandomIdArgs{
			ByteLength: pulumi.Int(4),
		})
		if err != nil {
			return err
		}
		main, err := sql.NewDatabaseInstance(ctx, "main", &sql.DatabaseInstanceArgs{
			Name: dbNameSuffix.Hex.ApplyT(func(hex string) (string, error) {
				return fmt.Sprintf("main-instance-%v", hex), nil
			}).(pulumi.StringOutput),
			DatabaseVersion: pulumi.String("MYSQL_5_7"),
			Settings: &sql.DatabaseInstanceSettingsArgs{
				Tier: pulumi.String("db-f1-micro"),
			},
		})
		if err != nil {
			return err
		}
		_, err = sql.NewUser(ctx, "users", &sql.UserArgs{
			Name:     pulumi.String("me"),
			Instance: main.Name,
			Host:     pulumi.String("me.com"),
			Password: pulumi.String(sqlUserPassword.Plaintext),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

This will result in a Cloud SQL user being created with password `my-secret-password`.

type GetKMSSecretResultOutput

type GetKMSSecretResultOutput struct{ *pulumi.OutputState }

A collection of values returned by getKMSSecret.

func (GetKMSSecretResultOutput) AdditionalAuthenticatedData

func (o GetKMSSecretResultOutput) AdditionalAuthenticatedData() pulumi.StringPtrOutput

func (GetKMSSecretResultOutput) Ciphertext

func (GetKMSSecretResultOutput) CryptoKey

func (GetKMSSecretResultOutput) ElementType

func (GetKMSSecretResultOutput) ElementType() reflect.Type

func (GetKMSSecretResultOutput) Id

The provider-assigned unique ID for this managed resource.

func (GetKMSSecretResultOutput) Plaintext

Contains the result of decrypting the provided ciphertext.

func (GetKMSSecretResultOutput) ToGetKMSSecretResultOutput

func (o GetKMSSecretResultOutput) ToGetKMSSecretResultOutput() GetKMSSecretResultOutput

func (GetKMSSecretResultOutput) ToGetKMSSecretResultOutputWithContext

func (o GetKMSSecretResultOutput) ToGetKMSSecretResultOutputWithContext(ctx context.Context) GetKMSSecretResultOutput

type GetKeyRingIamPolicyArgs

type GetKeyRingIamPolicyArgs struct {
	// The key ring ID, in the form
	// `{project_id}/{location_name}/{key_ring_name}` or
	// `{location_name}/{key_ring_name}`. In the second form, the provider's
	// project setting will be used as a fallback.
	KeyRingId string `pulumi:"keyRingId"`
}

A collection of arguments for invoking getKeyRingIamPolicy.

type GetKeyRingIamPolicyOutputArgs

type GetKeyRingIamPolicyOutputArgs struct {
	// The key ring ID, in the form
	// `{project_id}/{location_name}/{key_ring_name}` or
	// `{location_name}/{key_ring_name}`. In the second form, the provider's
	// project setting will be used as a fallback.
	KeyRingId pulumi.StringInput `pulumi:"keyRingId"`
}

A collection of arguments for invoking getKeyRingIamPolicy.

func (GetKeyRingIamPolicyOutputArgs) ElementType

type GetKeyRingIamPolicyResult

type GetKeyRingIamPolicyResult struct {
	// (Computed) The etag of the IAM policy.
	Etag string `pulumi:"etag"`
	// The provider-assigned unique ID for this managed resource.
	Id        string `pulumi:"id"`
	KeyRingId string `pulumi:"keyRingId"`
	// (Computed) The policy data
	PolicyData string `pulumi:"policyData"`
}

A collection of values returned by getKeyRingIamPolicy.

func GetKeyRingIamPolicy

func GetKeyRingIamPolicy(ctx *pulumi.Context, args *GetKeyRingIamPolicyArgs, opts ...pulumi.InvokeOption) (*GetKeyRingIamPolicyResult, error)

Retrieves the current IAM policy data for a Google Cloud KMS key ring.

## example

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.GetKeyRingIamPolicy(ctx, &kms.GetKeyRingIamPolicyArgs{
			KeyRingId: "{project_id}/{location_name}/{key_ring_name}",
		}, nil)
		if err != nil {
			return err
		}
		return nil
	})
}

```

type GetKeyRingIamPolicyResultOutput

type GetKeyRingIamPolicyResultOutput struct{ *pulumi.OutputState }

A collection of values returned by getKeyRingIamPolicy.

func (GetKeyRingIamPolicyResultOutput) ElementType

func (GetKeyRingIamPolicyResultOutput) Etag

(Computed) The etag of the IAM policy.

func (GetKeyRingIamPolicyResultOutput) Id

The provider-assigned unique ID for this managed resource.

func (GetKeyRingIamPolicyResultOutput) KeyRingId

func (GetKeyRingIamPolicyResultOutput) PolicyData

(Computed) The policy data

func (GetKeyRingIamPolicyResultOutput) ToGetKeyRingIamPolicyResultOutput

func (o GetKeyRingIamPolicyResultOutput) ToGetKeyRingIamPolicyResultOutput() GetKeyRingIamPolicyResultOutput

func (GetKeyRingIamPolicyResultOutput) ToGetKeyRingIamPolicyResultOutputWithContext

func (o GetKeyRingIamPolicyResultOutput) ToGetKeyRingIamPolicyResultOutputWithContext(ctx context.Context) GetKeyRingIamPolicyResultOutput

type KeyRing

type KeyRing struct {
	pulumi.CustomResourceState

	// The location for the KeyRing.
	// A full list of valid locations can be found by running `gcloud kms locations list`.
	//
	// ***
	Location pulumi.StringOutput `pulumi:"location"`
	// The resource name for the KeyRing.
	Name pulumi.StringOutput `pulumi:"name"`
	// The ID of the project in which the resource belongs.
	// If it is not provided, the provider project is used.
	Project pulumi.StringOutput `pulumi:"project"`
}

A `KeyRing` is a toplevel logical grouping of `CryptoKeys`.

> **Note:** KeyRings cannot be deleted from Google Cloud Platform. Destroying a provider-managed KeyRing will remove it from state but *will not delete the resource from the project.*

To get more information about KeyRing, see:

* [API documentation](https://cloud.google.com/kms/docs/reference/rest/v1/projects.locations.keyRings) * How-to Guides

## Example Usage

### Kms Key Ring Basic

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.NewKeyRing(ctx, "example-keyring", &kms.KeyRingArgs{
			Name:     pulumi.String("keyring-example"),
			Location: pulumi.String("global"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## Import

KeyRing can be imported using any of these accepted formats:

* `projects/{{project}}/locations/{{location}}/keyRings/{{name}}`

* `{{project}}/{{location}}/{{name}}`

* `{{location}}/{{name}}`

When using the `pulumi import` command, KeyRing can be imported using one of the formats above. For example:

```sh $ pulumi import gcp:kms/keyRing:KeyRing default projects/{{project}}/locations/{{location}}/keyRings/{{name}} ```

```sh $ pulumi import gcp:kms/keyRing:KeyRing default {{project}}/{{location}}/{{name}} ```

```sh $ pulumi import gcp:kms/keyRing:KeyRing default {{location}}/{{name}} ```

func GetKeyRing

func GetKeyRing(ctx *pulumi.Context,
	name string, id pulumi.IDInput, state *KeyRingState, opts ...pulumi.ResourceOption) (*KeyRing, error)

GetKeyRing gets an existing KeyRing resource's state with the given name, ID, and optional state properties that are used to uniquely qualify the lookup (nil if not required).

func NewKeyRing

func NewKeyRing(ctx *pulumi.Context,
	name string, args *KeyRingArgs, opts ...pulumi.ResourceOption) (*KeyRing, error)

NewKeyRing registers a new resource with the given unique name, arguments, and options.

func (*KeyRing) ElementType

func (*KeyRing) ElementType() reflect.Type

func (*KeyRing) ToKeyRingOutput

func (i *KeyRing) ToKeyRingOutput() KeyRingOutput

func (*KeyRing) ToKeyRingOutputWithContext

func (i *KeyRing) ToKeyRingOutputWithContext(ctx context.Context) KeyRingOutput

type KeyRingArgs

type KeyRingArgs struct {
	// The location for the KeyRing.
	// A full list of valid locations can be found by running `gcloud kms locations list`.
	//
	// ***
	Location pulumi.StringInput
	// The resource name for the KeyRing.
	Name pulumi.StringPtrInput
	// The ID of the project in which the resource belongs.
	// If it is not provided, the provider project is used.
	Project pulumi.StringPtrInput
}

The set of arguments for constructing a KeyRing resource.

func (KeyRingArgs) ElementType

func (KeyRingArgs) ElementType() reflect.Type

type KeyRingArray

type KeyRingArray []KeyRingInput

func (KeyRingArray) ElementType

func (KeyRingArray) ElementType() reflect.Type

func (KeyRingArray) ToKeyRingArrayOutput

func (i KeyRingArray) ToKeyRingArrayOutput() KeyRingArrayOutput

func (KeyRingArray) ToKeyRingArrayOutputWithContext

func (i KeyRingArray) ToKeyRingArrayOutputWithContext(ctx context.Context) KeyRingArrayOutput

type KeyRingArrayInput

type KeyRingArrayInput interface {
	pulumi.Input

	ToKeyRingArrayOutput() KeyRingArrayOutput
	ToKeyRingArrayOutputWithContext(context.Context) KeyRingArrayOutput
}

KeyRingArrayInput is an input type that accepts KeyRingArray and KeyRingArrayOutput values. You can construct a concrete instance of `KeyRingArrayInput` via:

KeyRingArray{ KeyRingArgs{...} }

type KeyRingArrayOutput

type KeyRingArrayOutput struct{ *pulumi.OutputState }

func (KeyRingArrayOutput) ElementType

func (KeyRingArrayOutput) ElementType() reflect.Type

func (KeyRingArrayOutput) Index

func (KeyRingArrayOutput) ToKeyRingArrayOutput

func (o KeyRingArrayOutput) ToKeyRingArrayOutput() KeyRingArrayOutput

func (KeyRingArrayOutput) ToKeyRingArrayOutputWithContext

func (o KeyRingArrayOutput) ToKeyRingArrayOutputWithContext(ctx context.Context) KeyRingArrayOutput

type KeyRingIAMBinding

type KeyRingIAMBinding struct {
	pulumi.CustomResourceState

	// An [IAM Condition](https://cloud.google.com/iam/docs/conditions-overview) for a given binding.
	// Structure is documented below.
	Condition KeyRingIAMBindingConditionPtrOutput `pulumi:"condition"`
	// (Computed) The etag of the key ring's IAM policy.
	Etag pulumi.StringOutput `pulumi:"etag"`
	// The key ring ID, in the form
	// `{project_id}/{location_name}/{key_ring_name}` or
	// `{location_name}/{key_ring_name}`. In the second form, the provider's
	// project setting will be used as a fallback.
	KeyRingId pulumi.StringOutput `pulumi:"keyRingId"`
	// Identities that will be granted the privilege in `role`.
	// Each entry can have one of the following values:
	// * **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.
	// * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
	// * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.
	// * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
	// * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
	// * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.
	Members pulumi.StringArrayOutput `pulumi:"members"`
	// The role that should be applied. Only one
	// `kms.KeyRingIAMBinding` can be used per role. Note that custom roles must be of the format
	// `[projects|organizations]/{parent-name}/roles/{role-name}`.
	Role pulumi.StringOutput `pulumi:"role"`
}

Three different resources help you manage your IAM policy for KMS key ring. Each of these resources serves a different use case:

* `kms.KeyRingIAMPolicy`: Authoritative. Sets the IAM policy for the key ring and replaces any existing policy already attached. * `kms.KeyRingIAMBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the key ring are preserved. * `kms.KeyRingIAMMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the key ring are preserved.

> **Note:** `kms.KeyRingIAMPolicy` **cannot** be used in conjunction with `kms.KeyRingIAMBinding` and `kms.KeyRingIAMMember` or they will fight over what your policy should be.

> **Note:** `kms.KeyRingIAMBinding` resources **can be** used in conjunction with `kms.KeyRingIAMMember` resources **only if** they do not grant privilege to the same role.

## google\_kms\_key\_ring\_iam\_policy

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		keyring, err := kms.NewKeyRing(ctx, "keyring", &kms.KeyRingArgs{
			Name:     pulumi.String("keyring-example"),
			Location: pulumi.String("global"),
		})
		if err != nil {
			return err
		}
		admin, err := organizations.LookupIAMPolicy(ctx, &organizations.LookupIAMPolicyArgs{
			Bindings: []organizations.GetIAMPolicyBinding{
				{
					Role: "roles/editor",
					Members: []string{
						"user:jane@example.com",
					},
				},
			},
		}, nil)
		if err != nil {
			return err
		}
		_, err = kms.NewKeyRingIAMPolicy(ctx, "key_ring", &kms.KeyRingIAMPolicyArgs{
			KeyRingId:  keyring.ID(),
			PolicyData: pulumi.String(admin.PolicyData),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

With IAM Conditions:

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		keyring, err := kms.NewKeyRing(ctx, "keyring", &kms.KeyRingArgs{
			Name:     pulumi.String("keyring-example"),
			Location: pulumi.String("global"),
		})
		if err != nil {
			return err
		}
		admin, err := organizations.LookupIAMPolicy(ctx, &organizations.LookupIAMPolicyArgs{
			Bindings: []organizations.GetIAMPolicyBinding{
				{
					Role: "roles/editor",
					Members: []string{
						"user:jane@example.com",
					},
					Condition: {
						Title:       "expires_after_2019_12_31",
						Description: pulumi.StringRef("Expiring at midnight of 2019-12-31"),
						Expression:  "request.time < timestamp(\"2020-01-01T00:00:00Z\")",
					},
				},
			},
		}, nil)
		if err != nil {
			return err
		}
		_, err = kms.NewKeyRingIAMPolicy(ctx, "key_ring", &kms.KeyRingIAMPolicyArgs{
			KeyRingId:  keyring.ID(),
			PolicyData: pulumi.String(admin.PolicyData),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## google\_kms\_key\_ring\_iam\_binding

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.NewKeyRingIAMBinding(ctx, "key_ring", &kms.KeyRingIAMBindingArgs{
			KeyRingId: pulumi.String("your-key-ring-id"),
			Role:      pulumi.String("roles/cloudkms.admin"),
			Members: pulumi.StringArray{
				pulumi.String("user:jane@example.com"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

With IAM Conditions:

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.NewKeyRingIAMBinding(ctx, "key_ring", &kms.KeyRingIAMBindingArgs{
			KeyRingId: pulumi.String("your-key-ring-id"),
			Role:      pulumi.String("roles/cloudkms.admin"),
			Members: pulumi.StringArray{
				pulumi.String("user:jane@example.com"),
			},
			Condition: &kms.KeyRingIAMBindingConditionArgs{
				Title:       pulumi.String("expires_after_2019_12_31"),
				Description: pulumi.String("Expiring at midnight of 2019-12-31"),
				Expression:  pulumi.String("request.time < timestamp(\"2020-01-01T00:00:00Z\")"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## google\_kms\_key\_ring\_iam\_member

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.NewKeyRingIAMMember(ctx, "key_ring", &kms.KeyRingIAMMemberArgs{
			KeyRingId: pulumi.String("your-key-ring-id"),
			Role:      pulumi.String("roles/cloudkms.admin"),
			Member:    pulumi.String("user:jane@example.com"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

With IAM Conditions:

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.NewKeyRingIAMMember(ctx, "key_ring", &kms.KeyRingIAMMemberArgs{
			KeyRingId: pulumi.String("your-key-ring-id"),
			Role:      pulumi.String("roles/cloudkms.admin"),
			Member:    pulumi.String("user:jane@example.com"),
			Condition: &kms.KeyRingIAMMemberConditionArgs{
				Title:       pulumi.String("expires_after_2019_12_31"),
				Description: pulumi.String("Expiring at midnight of 2019-12-31"),
				Expression:  pulumi.String("request.time < timestamp(\"2020-01-01T00:00:00Z\")"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## google\_kms\_key\_ring\_iam\_policy

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		keyring, err := kms.NewKeyRing(ctx, "keyring", &kms.KeyRingArgs{
			Name:     pulumi.String("keyring-example"),
			Location: pulumi.String("global"),
		})
		if err != nil {
			return err
		}
		admin, err := organizations.LookupIAMPolicy(ctx, &organizations.LookupIAMPolicyArgs{
			Bindings: []organizations.GetIAMPolicyBinding{
				{
					Role: "roles/editor",
					Members: []string{
						"user:jane@example.com",
					},
				},
			},
		}, nil)
		if err != nil {
			return err
		}
		_, err = kms.NewKeyRingIAMPolicy(ctx, "key_ring", &kms.KeyRingIAMPolicyArgs{
			KeyRingId:  keyring.ID(),
			PolicyData: pulumi.String(admin.PolicyData),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

With IAM Conditions:

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		keyring, err := kms.NewKeyRing(ctx, "keyring", &kms.KeyRingArgs{
			Name:     pulumi.String("keyring-example"),
			Location: pulumi.String("global"),
		})
		if err != nil {
			return err
		}
		admin, err := organizations.LookupIAMPolicy(ctx, &organizations.LookupIAMPolicyArgs{
			Bindings: []organizations.GetIAMPolicyBinding{
				{
					Role: "roles/editor",
					Members: []string{
						"user:jane@example.com",
					},
					Condition: {
						Title:       "expires_after_2019_12_31",
						Description: pulumi.StringRef("Expiring at midnight of 2019-12-31"),
						Expression:  "request.time < timestamp(\"2020-01-01T00:00:00Z\")",
					},
				},
			},
		}, nil)
		if err != nil {
			return err
		}
		_, err = kms.NewKeyRingIAMPolicy(ctx, "key_ring", &kms.KeyRingIAMPolicyArgs{
			KeyRingId:  keyring.ID(),
			PolicyData: pulumi.String(admin.PolicyData),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## google\_kms\_key\_ring\_iam\_binding

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.NewKeyRingIAMBinding(ctx, "key_ring", &kms.KeyRingIAMBindingArgs{
			KeyRingId: pulumi.String("your-key-ring-id"),
			Role:      pulumi.String("roles/cloudkms.admin"),
			Members: pulumi.StringArray{
				pulumi.String("user:jane@example.com"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

With IAM Conditions:

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.NewKeyRingIAMBinding(ctx, "key_ring", &kms.KeyRingIAMBindingArgs{
			KeyRingId: pulumi.String("your-key-ring-id"),
			Role:      pulumi.String("roles/cloudkms.admin"),
			Members: pulumi.StringArray{
				pulumi.String("user:jane@example.com"),
			},
			Condition: &kms.KeyRingIAMBindingConditionArgs{
				Title:       pulumi.String("expires_after_2019_12_31"),
				Description: pulumi.String("Expiring at midnight of 2019-12-31"),
				Expression:  pulumi.String("request.time < timestamp(\"2020-01-01T00:00:00Z\")"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## google\_kms\_key\_ring\_iam\_member

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.NewKeyRingIAMMember(ctx, "key_ring", &kms.KeyRingIAMMemberArgs{
			KeyRingId: pulumi.String("your-key-ring-id"),
			Role:      pulumi.String("roles/cloudkms.admin"),
			Member:    pulumi.String("user:jane@example.com"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

With IAM Conditions:

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.NewKeyRingIAMMember(ctx, "key_ring", &kms.KeyRingIAMMemberArgs{
			KeyRingId: pulumi.String("your-key-ring-id"),
			Role:      pulumi.String("roles/cloudkms.admin"),
			Member:    pulumi.String("user:jane@example.com"),
			Condition: &kms.KeyRingIAMMemberConditionArgs{
				Title:       pulumi.String("expires_after_2019_12_31"),
				Description: pulumi.String("Expiring at midnight of 2019-12-31"),
				Expression:  pulumi.String("request.time < timestamp(\"2020-01-01T00:00:00Z\")"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## Import

### Importing IAM policies

IAM policy imports use the identifier of the Cloud KMS key ring only. For example:

* `{{project_id}}/{{location}}/{{key_ring_name}}`

An `import` block (Terraform v1.5.0 and later) can be used to import IAM policies:

tf

import {

id = "{{project_id}}/{{location}}/{{key_ring_name}}"

to = google_kms_key_ring_iam_policy.default

}

The `pulumi import` command can also be used:

```sh $ pulumi import gcp:kms/keyRingIAMBinding:KeyRingIAMBinding default {{project_id}}/{{location}}/{{key_ring_name}} ```

func GetKeyRingIAMBinding

func GetKeyRingIAMBinding(ctx *pulumi.Context,
	name string, id pulumi.IDInput, state *KeyRingIAMBindingState, opts ...pulumi.ResourceOption) (*KeyRingIAMBinding, error)

GetKeyRingIAMBinding gets an existing KeyRingIAMBinding resource's state with the given name, ID, and optional state properties that are used to uniquely qualify the lookup (nil if not required).

func NewKeyRingIAMBinding

func NewKeyRingIAMBinding(ctx *pulumi.Context,
	name string, args *KeyRingIAMBindingArgs, opts ...pulumi.ResourceOption) (*KeyRingIAMBinding, error)

NewKeyRingIAMBinding registers a new resource with the given unique name, arguments, and options.

func (*KeyRingIAMBinding) ElementType

func (*KeyRingIAMBinding) ElementType() reflect.Type

func (*KeyRingIAMBinding) ToKeyRingIAMBindingOutput

func (i *KeyRingIAMBinding) ToKeyRingIAMBindingOutput() KeyRingIAMBindingOutput

func (*KeyRingIAMBinding) ToKeyRingIAMBindingOutputWithContext

func (i *KeyRingIAMBinding) ToKeyRingIAMBindingOutputWithContext(ctx context.Context) KeyRingIAMBindingOutput

type KeyRingIAMBindingArgs

type KeyRingIAMBindingArgs struct {
	// An [IAM Condition](https://cloud.google.com/iam/docs/conditions-overview) for a given binding.
	// Structure is documented below.
	Condition KeyRingIAMBindingConditionPtrInput
	// The key ring ID, in the form
	// `{project_id}/{location_name}/{key_ring_name}` or
	// `{location_name}/{key_ring_name}`. In the second form, the provider's
	// project setting will be used as a fallback.
	KeyRingId pulumi.StringInput
	// Identities that will be granted the privilege in `role`.
	// Each entry can have one of the following values:
	// * **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.
	// * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
	// * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.
	// * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
	// * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
	// * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.
	Members pulumi.StringArrayInput
	// The role that should be applied. Only one
	// `kms.KeyRingIAMBinding` can be used per role. Note that custom roles must be of the format
	// `[projects|organizations]/{parent-name}/roles/{role-name}`.
	Role pulumi.StringInput
}

The set of arguments for constructing a KeyRingIAMBinding resource.

func (KeyRingIAMBindingArgs) ElementType

func (KeyRingIAMBindingArgs) ElementType() reflect.Type

type KeyRingIAMBindingArray

type KeyRingIAMBindingArray []KeyRingIAMBindingInput

func (KeyRingIAMBindingArray) ElementType

func (KeyRingIAMBindingArray) ElementType() reflect.Type

func (KeyRingIAMBindingArray) ToKeyRingIAMBindingArrayOutput

func (i KeyRingIAMBindingArray) ToKeyRingIAMBindingArrayOutput() KeyRingIAMBindingArrayOutput

func (KeyRingIAMBindingArray) ToKeyRingIAMBindingArrayOutputWithContext

func (i KeyRingIAMBindingArray) ToKeyRingIAMBindingArrayOutputWithContext(ctx context.Context) KeyRingIAMBindingArrayOutput

type KeyRingIAMBindingArrayInput

type KeyRingIAMBindingArrayInput interface {
	pulumi.Input

	ToKeyRingIAMBindingArrayOutput() KeyRingIAMBindingArrayOutput
	ToKeyRingIAMBindingArrayOutputWithContext(context.Context) KeyRingIAMBindingArrayOutput
}

KeyRingIAMBindingArrayInput is an input type that accepts KeyRingIAMBindingArray and KeyRingIAMBindingArrayOutput values. You can construct a concrete instance of `KeyRingIAMBindingArrayInput` via:

KeyRingIAMBindingArray{ KeyRingIAMBindingArgs{...} }

type KeyRingIAMBindingArrayOutput

type KeyRingIAMBindingArrayOutput struct{ *pulumi.OutputState }

func (KeyRingIAMBindingArrayOutput) ElementType

func (KeyRingIAMBindingArrayOutput) Index

func (KeyRingIAMBindingArrayOutput) ToKeyRingIAMBindingArrayOutput

func (o KeyRingIAMBindingArrayOutput) ToKeyRingIAMBindingArrayOutput() KeyRingIAMBindingArrayOutput

func (KeyRingIAMBindingArrayOutput) ToKeyRingIAMBindingArrayOutputWithContext

func (o KeyRingIAMBindingArrayOutput) ToKeyRingIAMBindingArrayOutputWithContext(ctx context.Context) KeyRingIAMBindingArrayOutput

type KeyRingIAMBindingCondition

type KeyRingIAMBindingCondition struct {
	// An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
	//
	// > **Warning:** The provider considers the `role` and condition contents (`title`+`description`+`expression`) as the
	// identifier for the binding. This means that if any part of the condition is changed out-of-band, the provider will
	// consider it to be an entirely different resource and will treat it as such.
	Description *string `pulumi:"description"`
	// Textual representation of an expression in Common Expression Language syntax.
	Expression string `pulumi:"expression"`
	// A title for the expression, i.e. a short string describing its purpose.
	Title string `pulumi:"title"`
}

type KeyRingIAMBindingConditionArgs

type KeyRingIAMBindingConditionArgs struct {
	// An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
	//
	// > **Warning:** The provider considers the `role` and condition contents (`title`+`description`+`expression`) as the
	// identifier for the binding. This means that if any part of the condition is changed out-of-band, the provider will
	// consider it to be an entirely different resource and will treat it as such.
	Description pulumi.StringPtrInput `pulumi:"description"`
	// Textual representation of an expression in Common Expression Language syntax.
	Expression pulumi.StringInput `pulumi:"expression"`
	// A title for the expression, i.e. a short string describing its purpose.
	Title pulumi.StringInput `pulumi:"title"`
}

func (KeyRingIAMBindingConditionArgs) ElementType

func (KeyRingIAMBindingConditionArgs) ToKeyRingIAMBindingConditionOutput

func (i KeyRingIAMBindingConditionArgs) ToKeyRingIAMBindingConditionOutput() KeyRingIAMBindingConditionOutput

func (KeyRingIAMBindingConditionArgs) ToKeyRingIAMBindingConditionOutputWithContext

func (i KeyRingIAMBindingConditionArgs) ToKeyRingIAMBindingConditionOutputWithContext(ctx context.Context) KeyRingIAMBindingConditionOutput

func (KeyRingIAMBindingConditionArgs) ToKeyRingIAMBindingConditionPtrOutput

func (i KeyRingIAMBindingConditionArgs) ToKeyRingIAMBindingConditionPtrOutput() KeyRingIAMBindingConditionPtrOutput

func (KeyRingIAMBindingConditionArgs) ToKeyRingIAMBindingConditionPtrOutputWithContext

func (i KeyRingIAMBindingConditionArgs) ToKeyRingIAMBindingConditionPtrOutputWithContext(ctx context.Context) KeyRingIAMBindingConditionPtrOutput

type KeyRingIAMBindingConditionInput

type KeyRingIAMBindingConditionInput interface {
	pulumi.Input

	ToKeyRingIAMBindingConditionOutput() KeyRingIAMBindingConditionOutput
	ToKeyRingIAMBindingConditionOutputWithContext(context.Context) KeyRingIAMBindingConditionOutput
}

KeyRingIAMBindingConditionInput is an input type that accepts KeyRingIAMBindingConditionArgs and KeyRingIAMBindingConditionOutput values. You can construct a concrete instance of `KeyRingIAMBindingConditionInput` via:

KeyRingIAMBindingConditionArgs{...}

type KeyRingIAMBindingConditionOutput

type KeyRingIAMBindingConditionOutput struct{ *pulumi.OutputState }

func (KeyRingIAMBindingConditionOutput) Description

An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.

> **Warning:** The provider considers the `role` and condition contents (`title`+`description`+`expression`) as the identifier for the binding. This means that if any part of the condition is changed out-of-band, the provider will consider it to be an entirely different resource and will treat it as such.

func (KeyRingIAMBindingConditionOutput) ElementType

func (KeyRingIAMBindingConditionOutput) Expression

Textual representation of an expression in Common Expression Language syntax.

func (KeyRingIAMBindingConditionOutput) Title

A title for the expression, i.e. a short string describing its purpose.

func (KeyRingIAMBindingConditionOutput) ToKeyRingIAMBindingConditionOutput

func (o KeyRingIAMBindingConditionOutput) ToKeyRingIAMBindingConditionOutput() KeyRingIAMBindingConditionOutput

func (KeyRingIAMBindingConditionOutput) ToKeyRingIAMBindingConditionOutputWithContext

func (o KeyRingIAMBindingConditionOutput) ToKeyRingIAMBindingConditionOutputWithContext(ctx context.Context) KeyRingIAMBindingConditionOutput

func (KeyRingIAMBindingConditionOutput) ToKeyRingIAMBindingConditionPtrOutput

func (o KeyRingIAMBindingConditionOutput) ToKeyRingIAMBindingConditionPtrOutput() KeyRingIAMBindingConditionPtrOutput

func (KeyRingIAMBindingConditionOutput) ToKeyRingIAMBindingConditionPtrOutputWithContext

func (o KeyRingIAMBindingConditionOutput) ToKeyRingIAMBindingConditionPtrOutputWithContext(ctx context.Context) KeyRingIAMBindingConditionPtrOutput

type KeyRingIAMBindingConditionPtrInput

type KeyRingIAMBindingConditionPtrInput interface {
	pulumi.Input

	ToKeyRingIAMBindingConditionPtrOutput() KeyRingIAMBindingConditionPtrOutput
	ToKeyRingIAMBindingConditionPtrOutputWithContext(context.Context) KeyRingIAMBindingConditionPtrOutput
}

KeyRingIAMBindingConditionPtrInput is an input type that accepts KeyRingIAMBindingConditionArgs, KeyRingIAMBindingConditionPtr and KeyRingIAMBindingConditionPtrOutput values. You can construct a concrete instance of `KeyRingIAMBindingConditionPtrInput` via:

        KeyRingIAMBindingConditionArgs{...}

or:

        nil

type KeyRingIAMBindingConditionPtrOutput

type KeyRingIAMBindingConditionPtrOutput struct{ *pulumi.OutputState }

func (KeyRingIAMBindingConditionPtrOutput) Description

An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.

> **Warning:** The provider considers the `role` and condition contents (`title`+`description`+`expression`) as the identifier for the binding. This means that if any part of the condition is changed out-of-band, the provider will consider it to be an entirely different resource and will treat it as such.

func (KeyRingIAMBindingConditionPtrOutput) Elem

func (KeyRingIAMBindingConditionPtrOutput) ElementType

func (KeyRingIAMBindingConditionPtrOutput) Expression

Textual representation of an expression in Common Expression Language syntax.

func (KeyRingIAMBindingConditionPtrOutput) Title

A title for the expression, i.e. a short string describing its purpose.

func (KeyRingIAMBindingConditionPtrOutput) ToKeyRingIAMBindingConditionPtrOutput

func (o KeyRingIAMBindingConditionPtrOutput) ToKeyRingIAMBindingConditionPtrOutput() KeyRingIAMBindingConditionPtrOutput

func (KeyRingIAMBindingConditionPtrOutput) ToKeyRingIAMBindingConditionPtrOutputWithContext

func (o KeyRingIAMBindingConditionPtrOutput) ToKeyRingIAMBindingConditionPtrOutputWithContext(ctx context.Context) KeyRingIAMBindingConditionPtrOutput

type KeyRingIAMBindingInput

type KeyRingIAMBindingInput interface {
	pulumi.Input

	ToKeyRingIAMBindingOutput() KeyRingIAMBindingOutput
	ToKeyRingIAMBindingOutputWithContext(ctx context.Context) KeyRingIAMBindingOutput
}

type KeyRingIAMBindingMap

type KeyRingIAMBindingMap map[string]KeyRingIAMBindingInput

func (KeyRingIAMBindingMap) ElementType

func (KeyRingIAMBindingMap) ElementType() reflect.Type

func (KeyRingIAMBindingMap) ToKeyRingIAMBindingMapOutput

func (i KeyRingIAMBindingMap) ToKeyRingIAMBindingMapOutput() KeyRingIAMBindingMapOutput

func (KeyRingIAMBindingMap) ToKeyRingIAMBindingMapOutputWithContext

func (i KeyRingIAMBindingMap) ToKeyRingIAMBindingMapOutputWithContext(ctx context.Context) KeyRingIAMBindingMapOutput

type KeyRingIAMBindingMapInput

type KeyRingIAMBindingMapInput interface {
	pulumi.Input

	ToKeyRingIAMBindingMapOutput() KeyRingIAMBindingMapOutput
	ToKeyRingIAMBindingMapOutputWithContext(context.Context) KeyRingIAMBindingMapOutput
}

KeyRingIAMBindingMapInput is an input type that accepts KeyRingIAMBindingMap and KeyRingIAMBindingMapOutput values. You can construct a concrete instance of `KeyRingIAMBindingMapInput` via:

KeyRingIAMBindingMap{ "key": KeyRingIAMBindingArgs{...} }

type KeyRingIAMBindingMapOutput

type KeyRingIAMBindingMapOutput struct{ *pulumi.OutputState }

func (KeyRingIAMBindingMapOutput) ElementType

func (KeyRingIAMBindingMapOutput) ElementType() reflect.Type

func (KeyRingIAMBindingMapOutput) MapIndex

func (KeyRingIAMBindingMapOutput) ToKeyRingIAMBindingMapOutput

func (o KeyRingIAMBindingMapOutput) ToKeyRingIAMBindingMapOutput() KeyRingIAMBindingMapOutput

func (KeyRingIAMBindingMapOutput) ToKeyRingIAMBindingMapOutputWithContext

func (o KeyRingIAMBindingMapOutput) ToKeyRingIAMBindingMapOutputWithContext(ctx context.Context) KeyRingIAMBindingMapOutput

type KeyRingIAMBindingOutput

type KeyRingIAMBindingOutput struct{ *pulumi.OutputState }

func (KeyRingIAMBindingOutput) Condition

An [IAM Condition](https://cloud.google.com/iam/docs/conditions-overview) for a given binding. Structure is documented below.

func (KeyRingIAMBindingOutput) ElementType

func (KeyRingIAMBindingOutput) ElementType() reflect.Type

func (KeyRingIAMBindingOutput) Etag

(Computed) The etag of the key ring's IAM policy.

func (KeyRingIAMBindingOutput) KeyRingId

The key ring ID, in the form `{project_id}/{location_name}/{key_ring_name}` or `{location_name}/{key_ring_name}`. In the second form, the provider's project setting will be used as a fallback.

func (KeyRingIAMBindingOutput) Members

Identities that will be granted the privilege in `role`. Each entry can have one of the following values: * **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account. * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.

func (KeyRingIAMBindingOutput) Role

The role that should be applied. Only one `kms.KeyRingIAMBinding` can be used per role. Note that custom roles must be of the format `[projects|organizations]/{parent-name}/roles/{role-name}`.

func (KeyRingIAMBindingOutput) ToKeyRingIAMBindingOutput

func (o KeyRingIAMBindingOutput) ToKeyRingIAMBindingOutput() KeyRingIAMBindingOutput

func (KeyRingIAMBindingOutput) ToKeyRingIAMBindingOutputWithContext

func (o KeyRingIAMBindingOutput) ToKeyRingIAMBindingOutputWithContext(ctx context.Context) KeyRingIAMBindingOutput

type KeyRingIAMBindingState

type KeyRingIAMBindingState struct {
	// An [IAM Condition](https://cloud.google.com/iam/docs/conditions-overview) for a given binding.
	// Structure is documented below.
	Condition KeyRingIAMBindingConditionPtrInput
	// (Computed) The etag of the key ring's IAM policy.
	Etag pulumi.StringPtrInput
	// The key ring ID, in the form
	// `{project_id}/{location_name}/{key_ring_name}` or
	// `{location_name}/{key_ring_name}`. In the second form, the provider's
	// project setting will be used as a fallback.
	KeyRingId pulumi.StringPtrInput
	// Identities that will be granted the privilege in `role`.
	// Each entry can have one of the following values:
	// * **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.
	// * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
	// * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.
	// * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
	// * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
	// * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.
	Members pulumi.StringArrayInput
	// The role that should be applied. Only one
	// `kms.KeyRingIAMBinding` can be used per role. Note that custom roles must be of the format
	// `[projects|organizations]/{parent-name}/roles/{role-name}`.
	Role pulumi.StringPtrInput
}

func (KeyRingIAMBindingState) ElementType

func (KeyRingIAMBindingState) ElementType() reflect.Type

type KeyRingIAMMember

type KeyRingIAMMember struct {
	pulumi.CustomResourceState

	// An [IAM Condition](https://cloud.google.com/iam/docs/conditions-overview) for a given binding.
	// Structure is documented below.
	Condition KeyRingIAMMemberConditionPtrOutput `pulumi:"condition"`
	// (Computed) The etag of the key ring's IAM policy.
	Etag pulumi.StringOutput `pulumi:"etag"`
	// The key ring ID, in the form
	// `{project_id}/{location_name}/{key_ring_name}` or
	// `{location_name}/{key_ring_name}`. In the second form, the provider's
	// project setting will be used as a fallback.
	KeyRingId pulumi.StringOutput `pulumi:"keyRingId"`
	// Identities that will be granted the privilege in `role`.
	// Each entry can have one of the following values:
	// * **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.
	// * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
	// * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.
	// * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
	// * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
	// * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.
	Member pulumi.StringOutput `pulumi:"member"`
	// The role that should be applied. Only one
	// `kms.KeyRingIAMBinding` can be used per role. Note that custom roles must be of the format
	// `[projects|organizations]/{parent-name}/roles/{role-name}`.
	Role pulumi.StringOutput `pulumi:"role"`
}

Three different resources help you manage your IAM policy for KMS key ring. Each of these resources serves a different use case:

* `kms.KeyRingIAMPolicy`: Authoritative. Sets the IAM policy for the key ring and replaces any existing policy already attached. * `kms.KeyRingIAMBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the key ring are preserved. * `kms.KeyRingIAMMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the key ring are preserved.

> **Note:** `kms.KeyRingIAMPolicy` **cannot** be used in conjunction with `kms.KeyRingIAMBinding` and `kms.KeyRingIAMMember` or they will fight over what your policy should be.

> **Note:** `kms.KeyRingIAMBinding` resources **can be** used in conjunction with `kms.KeyRingIAMMember` resources **only if** they do not grant privilege to the same role.

## google\_kms\_key\_ring\_iam\_policy

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		keyring, err := kms.NewKeyRing(ctx, "keyring", &kms.KeyRingArgs{
			Name:     pulumi.String("keyring-example"),
			Location: pulumi.String("global"),
		})
		if err != nil {
			return err
		}
		admin, err := organizations.LookupIAMPolicy(ctx, &organizations.LookupIAMPolicyArgs{
			Bindings: []organizations.GetIAMPolicyBinding{
				{
					Role: "roles/editor",
					Members: []string{
						"user:jane@example.com",
					},
				},
			},
		}, nil)
		if err != nil {
			return err
		}
		_, err = kms.NewKeyRingIAMPolicy(ctx, "key_ring", &kms.KeyRingIAMPolicyArgs{
			KeyRingId:  keyring.ID(),
			PolicyData: pulumi.String(admin.PolicyData),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

With IAM Conditions:

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		keyring, err := kms.NewKeyRing(ctx, "keyring", &kms.KeyRingArgs{
			Name:     pulumi.String("keyring-example"),
			Location: pulumi.String("global"),
		})
		if err != nil {
			return err
		}
		admin, err := organizations.LookupIAMPolicy(ctx, &organizations.LookupIAMPolicyArgs{
			Bindings: []organizations.GetIAMPolicyBinding{
				{
					Role: "roles/editor",
					Members: []string{
						"user:jane@example.com",
					},
					Condition: {
						Title:       "expires_after_2019_12_31",
						Description: pulumi.StringRef("Expiring at midnight of 2019-12-31"),
						Expression:  "request.time < timestamp(\"2020-01-01T00:00:00Z\")",
					},
				},
			},
		}, nil)
		if err != nil {
			return err
		}
		_, err = kms.NewKeyRingIAMPolicy(ctx, "key_ring", &kms.KeyRingIAMPolicyArgs{
			KeyRingId:  keyring.ID(),
			PolicyData: pulumi.String(admin.PolicyData),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## google\_kms\_key\_ring\_iam\_binding

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.NewKeyRingIAMBinding(ctx, "key_ring", &kms.KeyRingIAMBindingArgs{
			KeyRingId: pulumi.String("your-key-ring-id"),
			Role:      pulumi.String("roles/cloudkms.admin"),
			Members: pulumi.StringArray{
				pulumi.String("user:jane@example.com"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

With IAM Conditions:

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.NewKeyRingIAMBinding(ctx, "key_ring", &kms.KeyRingIAMBindingArgs{
			KeyRingId: pulumi.String("your-key-ring-id"),
			Role:      pulumi.String("roles/cloudkms.admin"),
			Members: pulumi.StringArray{
				pulumi.String("user:jane@example.com"),
			},
			Condition: &kms.KeyRingIAMBindingConditionArgs{
				Title:       pulumi.String("expires_after_2019_12_31"),
				Description: pulumi.String("Expiring at midnight of 2019-12-31"),
				Expression:  pulumi.String("request.time < timestamp(\"2020-01-01T00:00:00Z\")"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## google\_kms\_key\_ring\_iam\_member

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.NewKeyRingIAMMember(ctx, "key_ring", &kms.KeyRingIAMMemberArgs{
			KeyRingId: pulumi.String("your-key-ring-id"),
			Role:      pulumi.String("roles/cloudkms.admin"),
			Member:    pulumi.String("user:jane@example.com"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

With IAM Conditions:

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.NewKeyRingIAMMember(ctx, "key_ring", &kms.KeyRingIAMMemberArgs{
			KeyRingId: pulumi.String("your-key-ring-id"),
			Role:      pulumi.String("roles/cloudkms.admin"),
			Member:    pulumi.String("user:jane@example.com"),
			Condition: &kms.KeyRingIAMMemberConditionArgs{
				Title:       pulumi.String("expires_after_2019_12_31"),
				Description: pulumi.String("Expiring at midnight of 2019-12-31"),
				Expression:  pulumi.String("request.time < timestamp(\"2020-01-01T00:00:00Z\")"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## google\_kms\_key\_ring\_iam\_policy

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		keyring, err := kms.NewKeyRing(ctx, "keyring", &kms.KeyRingArgs{
			Name:     pulumi.String("keyring-example"),
			Location: pulumi.String("global"),
		})
		if err != nil {
			return err
		}
		admin, err := organizations.LookupIAMPolicy(ctx, &organizations.LookupIAMPolicyArgs{
			Bindings: []organizations.GetIAMPolicyBinding{
				{
					Role: "roles/editor",
					Members: []string{
						"user:jane@example.com",
					},
				},
			},
		}, nil)
		if err != nil {
			return err
		}
		_, err = kms.NewKeyRingIAMPolicy(ctx, "key_ring", &kms.KeyRingIAMPolicyArgs{
			KeyRingId:  keyring.ID(),
			PolicyData: pulumi.String(admin.PolicyData),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

With IAM Conditions:

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		keyring, err := kms.NewKeyRing(ctx, "keyring", &kms.KeyRingArgs{
			Name:     pulumi.String("keyring-example"),
			Location: pulumi.String("global"),
		})
		if err != nil {
			return err
		}
		admin, err := organizations.LookupIAMPolicy(ctx, &organizations.LookupIAMPolicyArgs{
			Bindings: []organizations.GetIAMPolicyBinding{
				{
					Role: "roles/editor",
					Members: []string{
						"user:jane@example.com",
					},
					Condition: {
						Title:       "expires_after_2019_12_31",
						Description: pulumi.StringRef("Expiring at midnight of 2019-12-31"),
						Expression:  "request.time < timestamp(\"2020-01-01T00:00:00Z\")",
					},
				},
			},
		}, nil)
		if err != nil {
			return err
		}
		_, err = kms.NewKeyRingIAMPolicy(ctx, "key_ring", &kms.KeyRingIAMPolicyArgs{
			KeyRingId:  keyring.ID(),
			PolicyData: pulumi.String(admin.PolicyData),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## google\_kms\_key\_ring\_iam\_binding

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.NewKeyRingIAMBinding(ctx, "key_ring", &kms.KeyRingIAMBindingArgs{
			KeyRingId: pulumi.String("your-key-ring-id"),
			Role:      pulumi.String("roles/cloudkms.admin"),
			Members: pulumi.StringArray{
				pulumi.String("user:jane@example.com"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

With IAM Conditions:

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.NewKeyRingIAMBinding(ctx, "key_ring", &kms.KeyRingIAMBindingArgs{
			KeyRingId: pulumi.String("your-key-ring-id"),
			Role:      pulumi.String("roles/cloudkms.admin"),
			Members: pulumi.StringArray{
				pulumi.String("user:jane@example.com"),
			},
			Condition: &kms.KeyRingIAMBindingConditionArgs{
				Title:       pulumi.String("expires_after_2019_12_31"),
				Description: pulumi.String("Expiring at midnight of 2019-12-31"),
				Expression:  pulumi.String("request.time < timestamp(\"2020-01-01T00:00:00Z\")"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## google\_kms\_key\_ring\_iam\_member

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.NewKeyRingIAMMember(ctx, "key_ring", &kms.KeyRingIAMMemberArgs{
			KeyRingId: pulumi.String("your-key-ring-id"),
			Role:      pulumi.String("roles/cloudkms.admin"),
			Member:    pulumi.String("user:jane@example.com"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

With IAM Conditions:

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.NewKeyRingIAMMember(ctx, "key_ring", &kms.KeyRingIAMMemberArgs{
			KeyRingId: pulumi.String("your-key-ring-id"),
			Role:      pulumi.String("roles/cloudkms.admin"),
			Member:    pulumi.String("user:jane@example.com"),
			Condition: &kms.KeyRingIAMMemberConditionArgs{
				Title:       pulumi.String("expires_after_2019_12_31"),
				Description: pulumi.String("Expiring at midnight of 2019-12-31"),
				Expression:  pulumi.String("request.time < timestamp(\"2020-01-01T00:00:00Z\")"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## Import

### Importing IAM policies

IAM policy imports use the identifier of the Cloud KMS key ring only. For example:

* `{{project_id}}/{{location}}/{{key_ring_name}}`

An `import` block (Terraform v1.5.0 and later) can be used to import IAM policies:

tf

import {

id = "{{project_id}}/{{location}}/{{key_ring_name}}"

to = google_kms_key_ring_iam_policy.default

}

The `pulumi import` command can also be used:

```sh $ pulumi import gcp:kms/keyRingIAMMember:KeyRingIAMMember default {{project_id}}/{{location}}/{{key_ring_name}} ```

func GetKeyRingIAMMember

func GetKeyRingIAMMember(ctx *pulumi.Context,
	name string, id pulumi.IDInput, state *KeyRingIAMMemberState, opts ...pulumi.ResourceOption) (*KeyRingIAMMember, error)

GetKeyRingIAMMember gets an existing KeyRingIAMMember resource's state with the given name, ID, and optional state properties that are used to uniquely qualify the lookup (nil if not required).

func NewKeyRingIAMMember

func NewKeyRingIAMMember(ctx *pulumi.Context,
	name string, args *KeyRingIAMMemberArgs, opts ...pulumi.ResourceOption) (*KeyRingIAMMember, error)

NewKeyRingIAMMember registers a new resource with the given unique name, arguments, and options.

func (*KeyRingIAMMember) ElementType

func (*KeyRingIAMMember) ElementType() reflect.Type

func (*KeyRingIAMMember) ToKeyRingIAMMemberOutput

func (i *KeyRingIAMMember) ToKeyRingIAMMemberOutput() KeyRingIAMMemberOutput

func (*KeyRingIAMMember) ToKeyRingIAMMemberOutputWithContext

func (i *KeyRingIAMMember) ToKeyRingIAMMemberOutputWithContext(ctx context.Context) KeyRingIAMMemberOutput

type KeyRingIAMMemberArgs

type KeyRingIAMMemberArgs struct {
	// An [IAM Condition](https://cloud.google.com/iam/docs/conditions-overview) for a given binding.
	// Structure is documented below.
	Condition KeyRingIAMMemberConditionPtrInput
	// The key ring ID, in the form
	// `{project_id}/{location_name}/{key_ring_name}` or
	// `{location_name}/{key_ring_name}`. In the second form, the provider's
	// project setting will be used as a fallback.
	KeyRingId pulumi.StringInput
	// Identities that will be granted the privilege in `role`.
	// Each entry can have one of the following values:
	// * **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.
	// * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
	// * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.
	// * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
	// * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
	// * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.
	Member pulumi.StringInput
	// The role that should be applied. Only one
	// `kms.KeyRingIAMBinding` can be used per role. Note that custom roles must be of the format
	// `[projects|organizations]/{parent-name}/roles/{role-name}`.
	Role pulumi.StringInput
}

The set of arguments for constructing a KeyRingIAMMember resource.

func (KeyRingIAMMemberArgs) ElementType

func (KeyRingIAMMemberArgs) ElementType() reflect.Type

type KeyRingIAMMemberArray

type KeyRingIAMMemberArray []KeyRingIAMMemberInput

func (KeyRingIAMMemberArray) ElementType

func (KeyRingIAMMemberArray) ElementType() reflect.Type

func (KeyRingIAMMemberArray) ToKeyRingIAMMemberArrayOutput

func (i KeyRingIAMMemberArray) ToKeyRingIAMMemberArrayOutput() KeyRingIAMMemberArrayOutput

func (KeyRingIAMMemberArray) ToKeyRingIAMMemberArrayOutputWithContext

func (i KeyRingIAMMemberArray) ToKeyRingIAMMemberArrayOutputWithContext(ctx context.Context) KeyRingIAMMemberArrayOutput

type KeyRingIAMMemberArrayInput

type KeyRingIAMMemberArrayInput interface {
	pulumi.Input

	ToKeyRingIAMMemberArrayOutput() KeyRingIAMMemberArrayOutput
	ToKeyRingIAMMemberArrayOutputWithContext(context.Context) KeyRingIAMMemberArrayOutput
}

KeyRingIAMMemberArrayInput is an input type that accepts KeyRingIAMMemberArray and KeyRingIAMMemberArrayOutput values. You can construct a concrete instance of `KeyRingIAMMemberArrayInput` via:

KeyRingIAMMemberArray{ KeyRingIAMMemberArgs{...} }

type KeyRingIAMMemberArrayOutput

type KeyRingIAMMemberArrayOutput struct{ *pulumi.OutputState }

func (KeyRingIAMMemberArrayOutput) ElementType

func (KeyRingIAMMemberArrayOutput) Index

func (KeyRingIAMMemberArrayOutput) ToKeyRingIAMMemberArrayOutput

func (o KeyRingIAMMemberArrayOutput) ToKeyRingIAMMemberArrayOutput() KeyRingIAMMemberArrayOutput

func (KeyRingIAMMemberArrayOutput) ToKeyRingIAMMemberArrayOutputWithContext

func (o KeyRingIAMMemberArrayOutput) ToKeyRingIAMMemberArrayOutputWithContext(ctx context.Context) KeyRingIAMMemberArrayOutput

type KeyRingIAMMemberCondition

type KeyRingIAMMemberCondition struct {
	// An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
	//
	// > **Warning:** The provider considers the `role` and condition contents (`title`+`description`+`expression`) as the
	// identifier for the binding. This means that if any part of the condition is changed out-of-band, the provider will
	// consider it to be an entirely different resource and will treat it as such.
	Description *string `pulumi:"description"`
	// Textual representation of an expression in Common Expression Language syntax.
	Expression string `pulumi:"expression"`
	// A title for the expression, i.e. a short string describing its purpose.
	Title string `pulumi:"title"`
}

type KeyRingIAMMemberConditionArgs

type KeyRingIAMMemberConditionArgs struct {
	// An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
	//
	// > **Warning:** The provider considers the `role` and condition contents (`title`+`description`+`expression`) as the
	// identifier for the binding. This means that if any part of the condition is changed out-of-band, the provider will
	// consider it to be an entirely different resource and will treat it as such.
	Description pulumi.StringPtrInput `pulumi:"description"`
	// Textual representation of an expression in Common Expression Language syntax.
	Expression pulumi.StringInput `pulumi:"expression"`
	// A title for the expression, i.e. a short string describing its purpose.
	Title pulumi.StringInput `pulumi:"title"`
}

func (KeyRingIAMMemberConditionArgs) ElementType

func (KeyRingIAMMemberConditionArgs) ToKeyRingIAMMemberConditionOutput

func (i KeyRingIAMMemberConditionArgs) ToKeyRingIAMMemberConditionOutput() KeyRingIAMMemberConditionOutput

func (KeyRingIAMMemberConditionArgs) ToKeyRingIAMMemberConditionOutputWithContext

func (i KeyRingIAMMemberConditionArgs) ToKeyRingIAMMemberConditionOutputWithContext(ctx context.Context) KeyRingIAMMemberConditionOutput

func (KeyRingIAMMemberConditionArgs) ToKeyRingIAMMemberConditionPtrOutput

func (i KeyRingIAMMemberConditionArgs) ToKeyRingIAMMemberConditionPtrOutput() KeyRingIAMMemberConditionPtrOutput

func (KeyRingIAMMemberConditionArgs) ToKeyRingIAMMemberConditionPtrOutputWithContext

func (i KeyRingIAMMemberConditionArgs) ToKeyRingIAMMemberConditionPtrOutputWithContext(ctx context.Context) KeyRingIAMMemberConditionPtrOutput

type KeyRingIAMMemberConditionInput

type KeyRingIAMMemberConditionInput interface {
	pulumi.Input

	ToKeyRingIAMMemberConditionOutput() KeyRingIAMMemberConditionOutput
	ToKeyRingIAMMemberConditionOutputWithContext(context.Context) KeyRingIAMMemberConditionOutput
}

KeyRingIAMMemberConditionInput is an input type that accepts KeyRingIAMMemberConditionArgs and KeyRingIAMMemberConditionOutput values. You can construct a concrete instance of `KeyRingIAMMemberConditionInput` via:

KeyRingIAMMemberConditionArgs{...}

type KeyRingIAMMemberConditionOutput

type KeyRingIAMMemberConditionOutput struct{ *pulumi.OutputState }

func (KeyRingIAMMemberConditionOutput) Description

An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.

> **Warning:** The provider considers the `role` and condition contents (`title`+`description`+`expression`) as the identifier for the binding. This means that if any part of the condition is changed out-of-band, the provider will consider it to be an entirely different resource and will treat it as such.

func (KeyRingIAMMemberConditionOutput) ElementType

func (KeyRingIAMMemberConditionOutput) Expression

Textual representation of an expression in Common Expression Language syntax.

func (KeyRingIAMMemberConditionOutput) Title

A title for the expression, i.e. a short string describing its purpose.

func (KeyRingIAMMemberConditionOutput) ToKeyRingIAMMemberConditionOutput

func (o KeyRingIAMMemberConditionOutput) ToKeyRingIAMMemberConditionOutput() KeyRingIAMMemberConditionOutput

func (KeyRingIAMMemberConditionOutput) ToKeyRingIAMMemberConditionOutputWithContext

func (o KeyRingIAMMemberConditionOutput) ToKeyRingIAMMemberConditionOutputWithContext(ctx context.Context) KeyRingIAMMemberConditionOutput

func (KeyRingIAMMemberConditionOutput) ToKeyRingIAMMemberConditionPtrOutput

func (o KeyRingIAMMemberConditionOutput) ToKeyRingIAMMemberConditionPtrOutput() KeyRingIAMMemberConditionPtrOutput

func (KeyRingIAMMemberConditionOutput) ToKeyRingIAMMemberConditionPtrOutputWithContext

func (o KeyRingIAMMemberConditionOutput) ToKeyRingIAMMemberConditionPtrOutputWithContext(ctx context.Context) KeyRingIAMMemberConditionPtrOutput

type KeyRingIAMMemberConditionPtrInput

type KeyRingIAMMemberConditionPtrInput interface {
	pulumi.Input

	ToKeyRingIAMMemberConditionPtrOutput() KeyRingIAMMemberConditionPtrOutput
	ToKeyRingIAMMemberConditionPtrOutputWithContext(context.Context) KeyRingIAMMemberConditionPtrOutput
}

KeyRingIAMMemberConditionPtrInput is an input type that accepts KeyRingIAMMemberConditionArgs, KeyRingIAMMemberConditionPtr and KeyRingIAMMemberConditionPtrOutput values. You can construct a concrete instance of `KeyRingIAMMemberConditionPtrInput` via:

        KeyRingIAMMemberConditionArgs{...}

or:

        nil

type KeyRingIAMMemberConditionPtrOutput

type KeyRingIAMMemberConditionPtrOutput struct{ *pulumi.OutputState }

func (KeyRingIAMMemberConditionPtrOutput) Description

An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.

> **Warning:** The provider considers the `role` and condition contents (`title`+`description`+`expression`) as the identifier for the binding. This means that if any part of the condition is changed out-of-band, the provider will consider it to be an entirely different resource and will treat it as such.

func (KeyRingIAMMemberConditionPtrOutput) Elem

func (KeyRingIAMMemberConditionPtrOutput) ElementType

func (KeyRingIAMMemberConditionPtrOutput) Expression

Textual representation of an expression in Common Expression Language syntax.

func (KeyRingIAMMemberConditionPtrOutput) Title

A title for the expression, i.e. a short string describing its purpose.

func (KeyRingIAMMemberConditionPtrOutput) ToKeyRingIAMMemberConditionPtrOutput

func (o KeyRingIAMMemberConditionPtrOutput) ToKeyRingIAMMemberConditionPtrOutput() KeyRingIAMMemberConditionPtrOutput

func (KeyRingIAMMemberConditionPtrOutput) ToKeyRingIAMMemberConditionPtrOutputWithContext

func (o KeyRingIAMMemberConditionPtrOutput) ToKeyRingIAMMemberConditionPtrOutputWithContext(ctx context.Context) KeyRingIAMMemberConditionPtrOutput

type KeyRingIAMMemberInput

type KeyRingIAMMemberInput interface {
	pulumi.Input

	ToKeyRingIAMMemberOutput() KeyRingIAMMemberOutput
	ToKeyRingIAMMemberOutputWithContext(ctx context.Context) KeyRingIAMMemberOutput
}

type KeyRingIAMMemberMap

type KeyRingIAMMemberMap map[string]KeyRingIAMMemberInput

func (KeyRingIAMMemberMap) ElementType

func (KeyRingIAMMemberMap) ElementType() reflect.Type

func (KeyRingIAMMemberMap) ToKeyRingIAMMemberMapOutput

func (i KeyRingIAMMemberMap) ToKeyRingIAMMemberMapOutput() KeyRingIAMMemberMapOutput

func (KeyRingIAMMemberMap) ToKeyRingIAMMemberMapOutputWithContext

func (i KeyRingIAMMemberMap) ToKeyRingIAMMemberMapOutputWithContext(ctx context.Context) KeyRingIAMMemberMapOutput

type KeyRingIAMMemberMapInput

type KeyRingIAMMemberMapInput interface {
	pulumi.Input

	ToKeyRingIAMMemberMapOutput() KeyRingIAMMemberMapOutput
	ToKeyRingIAMMemberMapOutputWithContext(context.Context) KeyRingIAMMemberMapOutput
}

KeyRingIAMMemberMapInput is an input type that accepts KeyRingIAMMemberMap and KeyRingIAMMemberMapOutput values. You can construct a concrete instance of `KeyRingIAMMemberMapInput` via:

KeyRingIAMMemberMap{ "key": KeyRingIAMMemberArgs{...} }

type KeyRingIAMMemberMapOutput

type KeyRingIAMMemberMapOutput struct{ *pulumi.OutputState }

func (KeyRingIAMMemberMapOutput) ElementType

func (KeyRingIAMMemberMapOutput) ElementType() reflect.Type

func (KeyRingIAMMemberMapOutput) MapIndex

func (KeyRingIAMMemberMapOutput) ToKeyRingIAMMemberMapOutput

func (o KeyRingIAMMemberMapOutput) ToKeyRingIAMMemberMapOutput() KeyRingIAMMemberMapOutput

func (KeyRingIAMMemberMapOutput) ToKeyRingIAMMemberMapOutputWithContext

func (o KeyRingIAMMemberMapOutput) ToKeyRingIAMMemberMapOutputWithContext(ctx context.Context) KeyRingIAMMemberMapOutput

type KeyRingIAMMemberOutput

type KeyRingIAMMemberOutput struct{ *pulumi.OutputState }

func (KeyRingIAMMemberOutput) Condition

An [IAM Condition](https://cloud.google.com/iam/docs/conditions-overview) for a given binding. Structure is documented below.

func (KeyRingIAMMemberOutput) ElementType

func (KeyRingIAMMemberOutput) ElementType() reflect.Type

func (KeyRingIAMMemberOutput) Etag

(Computed) The etag of the key ring's IAM policy.

func (KeyRingIAMMemberOutput) KeyRingId

The key ring ID, in the form `{project_id}/{location_name}/{key_ring_name}` or `{location_name}/{key_ring_name}`. In the second form, the provider's project setting will be used as a fallback.

func (KeyRingIAMMemberOutput) Member

Identities that will be granted the privilege in `role`. Each entry can have one of the following values: * **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account. * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.

func (KeyRingIAMMemberOutput) Role

The role that should be applied. Only one `kms.KeyRingIAMBinding` can be used per role. Note that custom roles must be of the format `[projects|organizations]/{parent-name}/roles/{role-name}`.

func (KeyRingIAMMemberOutput) ToKeyRingIAMMemberOutput

func (o KeyRingIAMMemberOutput) ToKeyRingIAMMemberOutput() KeyRingIAMMemberOutput

func (KeyRingIAMMemberOutput) ToKeyRingIAMMemberOutputWithContext

func (o KeyRingIAMMemberOutput) ToKeyRingIAMMemberOutputWithContext(ctx context.Context) KeyRingIAMMemberOutput

type KeyRingIAMMemberState

type KeyRingIAMMemberState struct {
	// An [IAM Condition](https://cloud.google.com/iam/docs/conditions-overview) for a given binding.
	// Structure is documented below.
	Condition KeyRingIAMMemberConditionPtrInput
	// (Computed) The etag of the key ring's IAM policy.
	Etag pulumi.StringPtrInput
	// The key ring ID, in the form
	// `{project_id}/{location_name}/{key_ring_name}` or
	// `{location_name}/{key_ring_name}`. In the second form, the provider's
	// project setting will be used as a fallback.
	KeyRingId pulumi.StringPtrInput
	// Identities that will be granted the privilege in `role`.
	// Each entry can have one of the following values:
	// * **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.
	// * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
	// * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.
	// * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
	// * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
	// * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.
	Member pulumi.StringPtrInput
	// The role that should be applied. Only one
	// `kms.KeyRingIAMBinding` can be used per role. Note that custom roles must be of the format
	// `[projects|organizations]/{parent-name}/roles/{role-name}`.
	Role pulumi.StringPtrInput
}

func (KeyRingIAMMemberState) ElementType

func (KeyRingIAMMemberState) ElementType() reflect.Type

type KeyRingIAMPolicy

type KeyRingIAMPolicy struct {
	pulumi.CustomResourceState

	// (Computed) The etag of the key ring's IAM policy.
	Etag pulumi.StringOutput `pulumi:"etag"`
	// The key ring ID, in the form
	// `{project_id}/{location_name}/{key_ring_name}` or
	// `{location_name}/{key_ring_name}`. In the second form, the provider's
	// project setting will be used as a fallback.
	KeyRingId pulumi.StringOutput `pulumi:"keyRingId"`
	// The policy data generated by
	// a `organizations.getIAMPolicy` data source.
	PolicyData pulumi.StringOutput `pulumi:"policyData"`
}

Three different resources help you manage your IAM policy for KMS key ring. Each of these resources serves a different use case:

* `kms.KeyRingIAMPolicy`: Authoritative. Sets the IAM policy for the key ring and replaces any existing policy already attached. * `kms.KeyRingIAMBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the key ring are preserved. * `kms.KeyRingIAMMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the key ring are preserved.

> **Note:** `kms.KeyRingIAMPolicy` **cannot** be used in conjunction with `kms.KeyRingIAMBinding` and `kms.KeyRingIAMMember` or they will fight over what your policy should be.

> **Note:** `kms.KeyRingIAMBinding` resources **can be** used in conjunction with `kms.KeyRingIAMMember` resources **only if** they do not grant privilege to the same role.

## google\_kms\_key\_ring\_iam\_policy

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		keyring, err := kms.NewKeyRing(ctx, "keyring", &kms.KeyRingArgs{
			Name:     pulumi.String("keyring-example"),
			Location: pulumi.String("global"),
		})
		if err != nil {
			return err
		}
		admin, err := organizations.LookupIAMPolicy(ctx, &organizations.LookupIAMPolicyArgs{
			Bindings: []organizations.GetIAMPolicyBinding{
				{
					Role: "roles/editor",
					Members: []string{
						"user:jane@example.com",
					},
				},
			},
		}, nil)
		if err != nil {
			return err
		}
		_, err = kms.NewKeyRingIAMPolicy(ctx, "key_ring", &kms.KeyRingIAMPolicyArgs{
			KeyRingId:  keyring.ID(),
			PolicyData: pulumi.String(admin.PolicyData),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

With IAM Conditions:

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		keyring, err := kms.NewKeyRing(ctx, "keyring", &kms.KeyRingArgs{
			Name:     pulumi.String("keyring-example"),
			Location: pulumi.String("global"),
		})
		if err != nil {
			return err
		}
		admin, err := organizations.LookupIAMPolicy(ctx, &organizations.LookupIAMPolicyArgs{
			Bindings: []organizations.GetIAMPolicyBinding{
				{
					Role: "roles/editor",
					Members: []string{
						"user:jane@example.com",
					},
					Condition: {
						Title:       "expires_after_2019_12_31",
						Description: pulumi.StringRef("Expiring at midnight of 2019-12-31"),
						Expression:  "request.time < timestamp(\"2020-01-01T00:00:00Z\")",
					},
				},
			},
		}, nil)
		if err != nil {
			return err
		}
		_, err = kms.NewKeyRingIAMPolicy(ctx, "key_ring", &kms.KeyRingIAMPolicyArgs{
			KeyRingId:  keyring.ID(),
			PolicyData: pulumi.String(admin.PolicyData),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## google\_kms\_key\_ring\_iam\_binding

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.NewKeyRingIAMBinding(ctx, "key_ring", &kms.KeyRingIAMBindingArgs{
			KeyRingId: pulumi.String("your-key-ring-id"),
			Role:      pulumi.String("roles/cloudkms.admin"),
			Members: pulumi.StringArray{
				pulumi.String("user:jane@example.com"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

With IAM Conditions:

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.NewKeyRingIAMBinding(ctx, "key_ring", &kms.KeyRingIAMBindingArgs{
			KeyRingId: pulumi.String("your-key-ring-id"),
			Role:      pulumi.String("roles/cloudkms.admin"),
			Members: pulumi.StringArray{
				pulumi.String("user:jane@example.com"),
			},
			Condition: &kms.KeyRingIAMBindingConditionArgs{
				Title:       pulumi.String("expires_after_2019_12_31"),
				Description: pulumi.String("Expiring at midnight of 2019-12-31"),
				Expression:  pulumi.String("request.time < timestamp(\"2020-01-01T00:00:00Z\")"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## google\_kms\_key\_ring\_iam\_member

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.NewKeyRingIAMMember(ctx, "key_ring", &kms.KeyRingIAMMemberArgs{
			KeyRingId: pulumi.String("your-key-ring-id"),
			Role:      pulumi.String("roles/cloudkms.admin"),
			Member:    pulumi.String("user:jane@example.com"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

With IAM Conditions:

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.NewKeyRingIAMMember(ctx, "key_ring", &kms.KeyRingIAMMemberArgs{
			KeyRingId: pulumi.String("your-key-ring-id"),
			Role:      pulumi.String("roles/cloudkms.admin"),
			Member:    pulumi.String("user:jane@example.com"),
			Condition: &kms.KeyRingIAMMemberConditionArgs{
				Title:       pulumi.String("expires_after_2019_12_31"),
				Description: pulumi.String("Expiring at midnight of 2019-12-31"),
				Expression:  pulumi.String("request.time < timestamp(\"2020-01-01T00:00:00Z\")"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## google\_kms\_key\_ring\_iam\_policy

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		keyring, err := kms.NewKeyRing(ctx, "keyring", &kms.KeyRingArgs{
			Name:     pulumi.String("keyring-example"),
			Location: pulumi.String("global"),
		})
		if err != nil {
			return err
		}
		admin, err := organizations.LookupIAMPolicy(ctx, &organizations.LookupIAMPolicyArgs{
			Bindings: []organizations.GetIAMPolicyBinding{
				{
					Role: "roles/editor",
					Members: []string{
						"user:jane@example.com",
					},
				},
			},
		}, nil)
		if err != nil {
			return err
		}
		_, err = kms.NewKeyRingIAMPolicy(ctx, "key_ring", &kms.KeyRingIAMPolicyArgs{
			KeyRingId:  keyring.ID(),
			PolicyData: pulumi.String(admin.PolicyData),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

With IAM Conditions:

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		keyring, err := kms.NewKeyRing(ctx, "keyring", &kms.KeyRingArgs{
			Name:     pulumi.String("keyring-example"),
			Location: pulumi.String("global"),
		})
		if err != nil {
			return err
		}
		admin, err := organizations.LookupIAMPolicy(ctx, &organizations.LookupIAMPolicyArgs{
			Bindings: []organizations.GetIAMPolicyBinding{
				{
					Role: "roles/editor",
					Members: []string{
						"user:jane@example.com",
					},
					Condition: {
						Title:       "expires_after_2019_12_31",
						Description: pulumi.StringRef("Expiring at midnight of 2019-12-31"),
						Expression:  "request.time < timestamp(\"2020-01-01T00:00:00Z\")",
					},
				},
			},
		}, nil)
		if err != nil {
			return err
		}
		_, err = kms.NewKeyRingIAMPolicy(ctx, "key_ring", &kms.KeyRingIAMPolicyArgs{
			KeyRingId:  keyring.ID(),
			PolicyData: pulumi.String(admin.PolicyData),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## google\_kms\_key\_ring\_iam\_binding

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.NewKeyRingIAMBinding(ctx, "key_ring", &kms.KeyRingIAMBindingArgs{
			KeyRingId: pulumi.String("your-key-ring-id"),
			Role:      pulumi.String("roles/cloudkms.admin"),
			Members: pulumi.StringArray{
				pulumi.String("user:jane@example.com"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

With IAM Conditions:

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.NewKeyRingIAMBinding(ctx, "key_ring", &kms.KeyRingIAMBindingArgs{
			KeyRingId: pulumi.String("your-key-ring-id"),
			Role:      pulumi.String("roles/cloudkms.admin"),
			Members: pulumi.StringArray{
				pulumi.String("user:jane@example.com"),
			},
			Condition: &kms.KeyRingIAMBindingConditionArgs{
				Title:       pulumi.String("expires_after_2019_12_31"),
				Description: pulumi.String("Expiring at midnight of 2019-12-31"),
				Expression:  pulumi.String("request.time < timestamp(\"2020-01-01T00:00:00Z\")"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## google\_kms\_key\_ring\_iam\_member

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.NewKeyRingIAMMember(ctx, "key_ring", &kms.KeyRingIAMMemberArgs{
			KeyRingId: pulumi.String("your-key-ring-id"),
			Role:      pulumi.String("roles/cloudkms.admin"),
			Member:    pulumi.String("user:jane@example.com"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

With IAM Conditions:

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := kms.NewKeyRingIAMMember(ctx, "key_ring", &kms.KeyRingIAMMemberArgs{
			KeyRingId: pulumi.String("your-key-ring-id"),
			Role:      pulumi.String("roles/cloudkms.admin"),
			Member:    pulumi.String("user:jane@example.com"),
			Condition: &kms.KeyRingIAMMemberConditionArgs{
				Title:       pulumi.String("expires_after_2019_12_31"),
				Description: pulumi.String("Expiring at midnight of 2019-12-31"),
				Expression:  pulumi.String("request.time < timestamp(\"2020-01-01T00:00:00Z\")"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## Import

### Importing IAM policies

IAM policy imports use the identifier of the Cloud KMS key ring only. For example:

* `{{project_id}}/{{location}}/{{key_ring_name}}`

An `import` block (Terraform v1.5.0 and later) can be used to import IAM policies:

tf

import {

id = "{{project_id}}/{{location}}/{{key_ring_name}}"

to = google_kms_key_ring_iam_policy.default

}

The `pulumi import` command can also be used:

```sh $ pulumi import gcp:kms/keyRingIAMPolicy:KeyRingIAMPolicy default {{project_id}}/{{location}}/{{key_ring_name}} ```

func GetKeyRingIAMPolicy

func GetKeyRingIAMPolicy(ctx *pulumi.Context,
	name string, id pulumi.IDInput, state *KeyRingIAMPolicyState, opts ...pulumi.ResourceOption) (*KeyRingIAMPolicy, error)

GetKeyRingIAMPolicy gets an existing KeyRingIAMPolicy resource's state with the given name, ID, and optional state properties that are used to uniquely qualify the lookup (nil if not required).

func NewKeyRingIAMPolicy

func NewKeyRingIAMPolicy(ctx *pulumi.Context,
	name string, args *KeyRingIAMPolicyArgs, opts ...pulumi.ResourceOption) (*KeyRingIAMPolicy, error)

NewKeyRingIAMPolicy registers a new resource with the given unique name, arguments, and options.

func (*KeyRingIAMPolicy) ElementType

func (*KeyRingIAMPolicy) ElementType() reflect.Type

func (*KeyRingIAMPolicy) ToKeyRingIAMPolicyOutput

func (i *KeyRingIAMPolicy) ToKeyRingIAMPolicyOutput() KeyRingIAMPolicyOutput

func (*KeyRingIAMPolicy) ToKeyRingIAMPolicyOutputWithContext

func (i *KeyRingIAMPolicy) ToKeyRingIAMPolicyOutputWithContext(ctx context.Context) KeyRingIAMPolicyOutput

type KeyRingIAMPolicyArgs

type KeyRingIAMPolicyArgs struct {
	// The key ring ID, in the form
	// `{project_id}/{location_name}/{key_ring_name}` or
	// `{location_name}/{key_ring_name}`. In the second form, the provider's
	// project setting will be used as a fallback.
	KeyRingId pulumi.StringInput
	// The policy data generated by
	// a `organizations.getIAMPolicy` data source.
	PolicyData pulumi.StringInput
}

The set of arguments for constructing a KeyRingIAMPolicy resource.

func (KeyRingIAMPolicyArgs) ElementType

func (KeyRingIAMPolicyArgs) ElementType() reflect.Type

type KeyRingIAMPolicyArray

type KeyRingIAMPolicyArray []KeyRingIAMPolicyInput

func (KeyRingIAMPolicyArray) ElementType

func (KeyRingIAMPolicyArray) ElementType() reflect.Type

func (KeyRingIAMPolicyArray) ToKeyRingIAMPolicyArrayOutput

func (i KeyRingIAMPolicyArray) ToKeyRingIAMPolicyArrayOutput() KeyRingIAMPolicyArrayOutput

func (KeyRingIAMPolicyArray) ToKeyRingIAMPolicyArrayOutputWithContext

func (i KeyRingIAMPolicyArray) ToKeyRingIAMPolicyArrayOutputWithContext(ctx context.Context) KeyRingIAMPolicyArrayOutput

type KeyRingIAMPolicyArrayInput

type KeyRingIAMPolicyArrayInput interface {
	pulumi.Input

	ToKeyRingIAMPolicyArrayOutput() KeyRingIAMPolicyArrayOutput
	ToKeyRingIAMPolicyArrayOutputWithContext(context.Context) KeyRingIAMPolicyArrayOutput
}

KeyRingIAMPolicyArrayInput is an input type that accepts KeyRingIAMPolicyArray and KeyRingIAMPolicyArrayOutput values. You can construct a concrete instance of `KeyRingIAMPolicyArrayInput` via:

KeyRingIAMPolicyArray{ KeyRingIAMPolicyArgs{...} }

type KeyRingIAMPolicyArrayOutput

type KeyRingIAMPolicyArrayOutput struct{ *pulumi.OutputState }

func (KeyRingIAMPolicyArrayOutput) ElementType

func (KeyRingIAMPolicyArrayOutput) Index

func (KeyRingIAMPolicyArrayOutput) ToKeyRingIAMPolicyArrayOutput

func (o KeyRingIAMPolicyArrayOutput) ToKeyRingIAMPolicyArrayOutput() KeyRingIAMPolicyArrayOutput

func (KeyRingIAMPolicyArrayOutput) ToKeyRingIAMPolicyArrayOutputWithContext

func (o KeyRingIAMPolicyArrayOutput) ToKeyRingIAMPolicyArrayOutputWithContext(ctx context.Context) KeyRingIAMPolicyArrayOutput

type KeyRingIAMPolicyInput

type KeyRingIAMPolicyInput interface {
	pulumi.Input

	ToKeyRingIAMPolicyOutput() KeyRingIAMPolicyOutput
	ToKeyRingIAMPolicyOutputWithContext(ctx context.Context) KeyRingIAMPolicyOutput
}

type KeyRingIAMPolicyMap

type KeyRingIAMPolicyMap map[string]KeyRingIAMPolicyInput

func (KeyRingIAMPolicyMap) ElementType

func (KeyRingIAMPolicyMap) ElementType() reflect.Type

func (KeyRingIAMPolicyMap) ToKeyRingIAMPolicyMapOutput

func (i KeyRingIAMPolicyMap) ToKeyRingIAMPolicyMapOutput() KeyRingIAMPolicyMapOutput

func (KeyRingIAMPolicyMap) ToKeyRingIAMPolicyMapOutputWithContext

func (i KeyRingIAMPolicyMap) ToKeyRingIAMPolicyMapOutputWithContext(ctx context.Context) KeyRingIAMPolicyMapOutput

type KeyRingIAMPolicyMapInput

type KeyRingIAMPolicyMapInput interface {
	pulumi.Input

	ToKeyRingIAMPolicyMapOutput() KeyRingIAMPolicyMapOutput
	ToKeyRingIAMPolicyMapOutputWithContext(context.Context) KeyRingIAMPolicyMapOutput
}

KeyRingIAMPolicyMapInput is an input type that accepts KeyRingIAMPolicyMap and KeyRingIAMPolicyMapOutput values. You can construct a concrete instance of `KeyRingIAMPolicyMapInput` via:

KeyRingIAMPolicyMap{ "key": KeyRingIAMPolicyArgs{...} }

type KeyRingIAMPolicyMapOutput

type KeyRingIAMPolicyMapOutput struct{ *pulumi.OutputState }

func (KeyRingIAMPolicyMapOutput) ElementType

func (KeyRingIAMPolicyMapOutput) ElementType() reflect.Type

func (KeyRingIAMPolicyMapOutput) MapIndex

func (KeyRingIAMPolicyMapOutput) ToKeyRingIAMPolicyMapOutput

func (o KeyRingIAMPolicyMapOutput) ToKeyRingIAMPolicyMapOutput() KeyRingIAMPolicyMapOutput

func (KeyRingIAMPolicyMapOutput) ToKeyRingIAMPolicyMapOutputWithContext

func (o KeyRingIAMPolicyMapOutput) ToKeyRingIAMPolicyMapOutputWithContext(ctx context.Context) KeyRingIAMPolicyMapOutput

type KeyRingIAMPolicyOutput

type KeyRingIAMPolicyOutput struct{ *pulumi.OutputState }

func (KeyRingIAMPolicyOutput) ElementType

func (KeyRingIAMPolicyOutput) ElementType() reflect.Type

func (KeyRingIAMPolicyOutput) Etag

(Computed) The etag of the key ring's IAM policy.

func (KeyRingIAMPolicyOutput) KeyRingId

The key ring ID, in the form `{project_id}/{location_name}/{key_ring_name}` or `{location_name}/{key_ring_name}`. In the second form, the provider's project setting will be used as a fallback.

func (KeyRingIAMPolicyOutput) PolicyData

The policy data generated by a `organizations.getIAMPolicy` data source.

func (KeyRingIAMPolicyOutput) ToKeyRingIAMPolicyOutput

func (o KeyRingIAMPolicyOutput) ToKeyRingIAMPolicyOutput() KeyRingIAMPolicyOutput

func (KeyRingIAMPolicyOutput) ToKeyRingIAMPolicyOutputWithContext

func (o KeyRingIAMPolicyOutput) ToKeyRingIAMPolicyOutputWithContext(ctx context.Context) KeyRingIAMPolicyOutput

type KeyRingIAMPolicyState

type KeyRingIAMPolicyState struct {
	// (Computed) The etag of the key ring's IAM policy.
	Etag pulumi.StringPtrInput
	// The key ring ID, in the form
	// `{project_id}/{location_name}/{key_ring_name}` or
	// `{location_name}/{key_ring_name}`. In the second form, the provider's
	// project setting will be used as a fallback.
	KeyRingId pulumi.StringPtrInput
	// The policy data generated by
	// a `organizations.getIAMPolicy` data source.
	PolicyData pulumi.StringPtrInput
}

func (KeyRingIAMPolicyState) ElementType

func (KeyRingIAMPolicyState) ElementType() reflect.Type

type KeyRingImportJob

type KeyRingImportJob struct {
	pulumi.CustomResourceState

	// Statement that was generated and signed by the key creator (for example, an HSM) at key creation time.
	// Use this statement to verify attributes of the key as stored on the HSM, independently of Google.
	// Only present if the chosen ImportMethod is one with a protection level of HSM.
	// Structure is documented below.
	Attestations KeyRingImportJobAttestationArrayOutput `pulumi:"attestations"`
	// The time at which this resource is scheduled for expiration and can no longer be used.
	// This is in RFC3339 text format.
	ExpireTime pulumi.StringOutput `pulumi:"expireTime"`
	// It must be unique within a KeyRing and match the regular expression [a-zA-Z0-9_-]{1,63}
	//
	// ***
	ImportJobId pulumi.StringOutput `pulumi:"importJobId"`
	// The wrapping method to be used for incoming key material.
	// Possible values are: `RSA_OAEP_3072_SHA1_AES_256`, `RSA_OAEP_4096_SHA1_AES_256`.
	ImportMethod pulumi.StringOutput `pulumi:"importMethod"`
	// The KeyRing that this import job belongs to.
	// Format: `'projects/{{project}}/locations/{{location}}/keyRings/{{keyRing}}'`.
	KeyRing pulumi.StringOutput `pulumi:"keyRing"`
	// The resource name for this ImportJob in the format projects/*/locations/*/keyRings/*/importJobs/*.
	Name pulumi.StringOutput `pulumi:"name"`
	// The protection level of the ImportJob. This must match the protectionLevel of the
	// versionTemplate on the CryptoKey you attempt to import into.
	// Possible values are: `SOFTWARE`, `HSM`, `EXTERNAL`.
	ProtectionLevel pulumi.StringOutput `pulumi:"protectionLevel"`
	// The public key with which to wrap key material prior to import. Only returned if state is `ACTIVE`.
	// Structure is documented below.
	PublicKeys KeyRingImportJobPublicKeyArrayOutput `pulumi:"publicKeys"`
	// The current state of the ImportJob, indicating if it can be used.
	State pulumi.StringOutput `pulumi:"state"`
}

A `KeyRingImportJob` can be used to create `CryptoKeys` and `CryptoKeyVersions` using pre-existing key material, generated outside of Cloud KMS. A `KeyRingImportJob` expires 3 days after it is created. Once expired, Cloud KMS will no longer be able to import or unwrap any key material that was wrapped with the `KeyRingImportJob`'s public key.

> **Note:** KeyRingImportJobs cannot be deleted from Google Cloud Platform. Destroying a provider-managed KeyRingImportJob will remove it from state but *will not delete the resource from the project.*

To get more information about KeyRingImportJob, see:

* [API documentation](https://cloud.google.com/kms/docs/reference/rest/v1/projects.locations.keyRings.importJobs) * How-to Guides

## Example Usage

## Import

KeyRingImportJob can be imported using any of these accepted formats:

* `{{name}}`

When using the `pulumi import` command, KeyRingImportJob can be imported using one of the formats above. For example:

```sh $ pulumi import gcp:kms/keyRingImportJob:KeyRingImportJob default {{name}} ```

func GetKeyRingImportJob

func GetKeyRingImportJob(ctx *pulumi.Context,
	name string, id pulumi.IDInput, state *KeyRingImportJobState, opts ...pulumi.ResourceOption) (*KeyRingImportJob, error)

GetKeyRingImportJob gets an existing KeyRingImportJob resource's state with the given name, ID, and optional state properties that are used to uniquely qualify the lookup (nil if not required).

func NewKeyRingImportJob

func NewKeyRingImportJob(ctx *pulumi.Context,
	name string, args *KeyRingImportJobArgs, opts ...pulumi.ResourceOption) (*KeyRingImportJob, error)

NewKeyRingImportJob registers a new resource with the given unique name, arguments, and options.

func (*KeyRingImportJob) ElementType

func (*KeyRingImportJob) ElementType() reflect.Type

func (*KeyRingImportJob) ToKeyRingImportJobOutput

func (i *KeyRingImportJob) ToKeyRingImportJobOutput() KeyRingImportJobOutput

func (*KeyRingImportJob) ToKeyRingImportJobOutputWithContext

func (i *KeyRingImportJob) ToKeyRingImportJobOutputWithContext(ctx context.Context) KeyRingImportJobOutput

type KeyRingImportJobArgs

type KeyRingImportJobArgs struct {
	// It must be unique within a KeyRing and match the regular expression [a-zA-Z0-9_-]{1,63}
	//
	// ***
	ImportJobId pulumi.StringInput
	// The wrapping method to be used for incoming key material.
	// Possible values are: `RSA_OAEP_3072_SHA1_AES_256`, `RSA_OAEP_4096_SHA1_AES_256`.
	ImportMethod pulumi.StringInput
	// The KeyRing that this import job belongs to.
	// Format: `'projects/{{project}}/locations/{{location}}/keyRings/{{keyRing}}'`.
	KeyRing pulumi.StringInput
	// The protection level of the ImportJob. This must match the protectionLevel of the
	// versionTemplate on the CryptoKey you attempt to import into.
	// Possible values are: `SOFTWARE`, `HSM`, `EXTERNAL`.
	ProtectionLevel pulumi.StringInput
}

The set of arguments for constructing a KeyRingImportJob resource.

func (KeyRingImportJobArgs) ElementType

func (KeyRingImportJobArgs) ElementType() reflect.Type

type KeyRingImportJobArray

type KeyRingImportJobArray []KeyRingImportJobInput

func (KeyRingImportJobArray) ElementType

func (KeyRingImportJobArray) ElementType() reflect.Type

func (KeyRingImportJobArray) ToKeyRingImportJobArrayOutput

func (i KeyRingImportJobArray) ToKeyRingImportJobArrayOutput() KeyRingImportJobArrayOutput

func (KeyRingImportJobArray) ToKeyRingImportJobArrayOutputWithContext

func (i KeyRingImportJobArray) ToKeyRingImportJobArrayOutputWithContext(ctx context.Context) KeyRingImportJobArrayOutput

type KeyRingImportJobArrayInput

type KeyRingImportJobArrayInput interface {
	pulumi.Input

	ToKeyRingImportJobArrayOutput() KeyRingImportJobArrayOutput
	ToKeyRingImportJobArrayOutputWithContext(context.Context) KeyRingImportJobArrayOutput
}

KeyRingImportJobArrayInput is an input type that accepts KeyRingImportJobArray and KeyRingImportJobArrayOutput values. You can construct a concrete instance of `KeyRingImportJobArrayInput` via:

KeyRingImportJobArray{ KeyRingImportJobArgs{...} }

type KeyRingImportJobArrayOutput

type KeyRingImportJobArrayOutput struct{ *pulumi.OutputState }

func (KeyRingImportJobArrayOutput) ElementType

func (KeyRingImportJobArrayOutput) Index

func (KeyRingImportJobArrayOutput) ToKeyRingImportJobArrayOutput

func (o KeyRingImportJobArrayOutput) ToKeyRingImportJobArrayOutput() KeyRingImportJobArrayOutput

func (KeyRingImportJobArrayOutput) ToKeyRingImportJobArrayOutputWithContext

func (o KeyRingImportJobArrayOutput) ToKeyRingImportJobArrayOutputWithContext(ctx context.Context) KeyRingImportJobArrayOutput

type KeyRingImportJobAttestation

type KeyRingImportJobAttestation struct {
	// (Output)
	// The attestation data provided by the HSM when the key operation was performed.
	// A base64-encoded string.
	Content *string `pulumi:"content"`
	// (Output)
	// The format of the attestation data.
	Format *string `pulumi:"format"`
}

type KeyRingImportJobAttestationArgs

type KeyRingImportJobAttestationArgs struct {
	// (Output)
	// The attestation data provided by the HSM when the key operation was performed.
	// A base64-encoded string.
	Content pulumi.StringPtrInput `pulumi:"content"`
	// (Output)
	// The format of the attestation data.
	Format pulumi.StringPtrInput `pulumi:"format"`
}

func (KeyRingImportJobAttestationArgs) ElementType

func (KeyRingImportJobAttestationArgs) ToKeyRingImportJobAttestationOutput

func (i KeyRingImportJobAttestationArgs) ToKeyRingImportJobAttestationOutput() KeyRingImportJobAttestationOutput

func (KeyRingImportJobAttestationArgs) ToKeyRingImportJobAttestationOutputWithContext

func (i KeyRingImportJobAttestationArgs) ToKeyRingImportJobAttestationOutputWithContext(ctx context.Context) KeyRingImportJobAttestationOutput

type KeyRingImportJobAttestationArray

type KeyRingImportJobAttestationArray []KeyRingImportJobAttestationInput

func (KeyRingImportJobAttestationArray) ElementType

func (KeyRingImportJobAttestationArray) ToKeyRingImportJobAttestationArrayOutput

func (i KeyRingImportJobAttestationArray) ToKeyRingImportJobAttestationArrayOutput() KeyRingImportJobAttestationArrayOutput

func (KeyRingImportJobAttestationArray) ToKeyRingImportJobAttestationArrayOutputWithContext

func (i KeyRingImportJobAttestationArray) ToKeyRingImportJobAttestationArrayOutputWithContext(ctx context.Context) KeyRingImportJobAttestationArrayOutput

type KeyRingImportJobAttestationArrayInput

type KeyRingImportJobAttestationArrayInput interface {
	pulumi.Input

	ToKeyRingImportJobAttestationArrayOutput() KeyRingImportJobAttestationArrayOutput
	ToKeyRingImportJobAttestationArrayOutputWithContext(context.Context) KeyRingImportJobAttestationArrayOutput
}

KeyRingImportJobAttestationArrayInput is an input type that accepts KeyRingImportJobAttestationArray and KeyRingImportJobAttestationArrayOutput values. You can construct a concrete instance of `KeyRingImportJobAttestationArrayInput` via:

KeyRingImportJobAttestationArray{ KeyRingImportJobAttestationArgs{...} }

type KeyRingImportJobAttestationArrayOutput

type KeyRingImportJobAttestationArrayOutput struct{ *pulumi.OutputState }

func (KeyRingImportJobAttestationArrayOutput) ElementType

func (KeyRingImportJobAttestationArrayOutput) Index

func (KeyRingImportJobAttestationArrayOutput) ToKeyRingImportJobAttestationArrayOutput

func (o KeyRingImportJobAttestationArrayOutput) ToKeyRingImportJobAttestationArrayOutput() KeyRingImportJobAttestationArrayOutput

func (KeyRingImportJobAttestationArrayOutput) ToKeyRingImportJobAttestationArrayOutputWithContext

func (o KeyRingImportJobAttestationArrayOutput) ToKeyRingImportJobAttestationArrayOutputWithContext(ctx context.Context) KeyRingImportJobAttestationArrayOutput

type KeyRingImportJobAttestationInput

type KeyRingImportJobAttestationInput interface {
	pulumi.Input

	ToKeyRingImportJobAttestationOutput() KeyRingImportJobAttestationOutput
	ToKeyRingImportJobAttestationOutputWithContext(context.Context) KeyRingImportJobAttestationOutput
}

KeyRingImportJobAttestationInput is an input type that accepts KeyRingImportJobAttestationArgs and KeyRingImportJobAttestationOutput values. You can construct a concrete instance of `KeyRingImportJobAttestationInput` via:

KeyRingImportJobAttestationArgs{...}

type KeyRingImportJobAttestationOutput

type KeyRingImportJobAttestationOutput struct{ *pulumi.OutputState }

func (KeyRingImportJobAttestationOutput) Content

(Output) The attestation data provided by the HSM when the key operation was performed. A base64-encoded string.

func (KeyRingImportJobAttestationOutput) ElementType

func (KeyRingImportJobAttestationOutput) Format

(Output) The format of the attestation data.

func (KeyRingImportJobAttestationOutput) ToKeyRingImportJobAttestationOutput

func (o KeyRingImportJobAttestationOutput) ToKeyRingImportJobAttestationOutput() KeyRingImportJobAttestationOutput

func (KeyRingImportJobAttestationOutput) ToKeyRingImportJobAttestationOutputWithContext

func (o KeyRingImportJobAttestationOutput) ToKeyRingImportJobAttestationOutputWithContext(ctx context.Context) KeyRingImportJobAttestationOutput

type KeyRingImportJobInput

type KeyRingImportJobInput interface {
	pulumi.Input

	ToKeyRingImportJobOutput() KeyRingImportJobOutput
	ToKeyRingImportJobOutputWithContext(ctx context.Context) KeyRingImportJobOutput
}

type KeyRingImportJobMap

type KeyRingImportJobMap map[string]KeyRingImportJobInput

func (KeyRingImportJobMap) ElementType

func (KeyRingImportJobMap) ElementType() reflect.Type

func (KeyRingImportJobMap) ToKeyRingImportJobMapOutput

func (i KeyRingImportJobMap) ToKeyRingImportJobMapOutput() KeyRingImportJobMapOutput

func (KeyRingImportJobMap) ToKeyRingImportJobMapOutputWithContext

func (i KeyRingImportJobMap) ToKeyRingImportJobMapOutputWithContext(ctx context.Context) KeyRingImportJobMapOutput

type KeyRingImportJobMapInput

type KeyRingImportJobMapInput interface {
	pulumi.Input

	ToKeyRingImportJobMapOutput() KeyRingImportJobMapOutput
	ToKeyRingImportJobMapOutputWithContext(context.Context) KeyRingImportJobMapOutput
}

KeyRingImportJobMapInput is an input type that accepts KeyRingImportJobMap and KeyRingImportJobMapOutput values. You can construct a concrete instance of `KeyRingImportJobMapInput` via:

KeyRingImportJobMap{ "key": KeyRingImportJobArgs{...} }

type KeyRingImportJobMapOutput

type KeyRingImportJobMapOutput struct{ *pulumi.OutputState }

func (KeyRingImportJobMapOutput) ElementType

func (KeyRingImportJobMapOutput) ElementType() reflect.Type

func (KeyRingImportJobMapOutput) MapIndex

func (KeyRingImportJobMapOutput) ToKeyRingImportJobMapOutput

func (o KeyRingImportJobMapOutput) ToKeyRingImportJobMapOutput() KeyRingImportJobMapOutput

func (KeyRingImportJobMapOutput) ToKeyRingImportJobMapOutputWithContext

func (o KeyRingImportJobMapOutput) ToKeyRingImportJobMapOutputWithContext(ctx context.Context) KeyRingImportJobMapOutput

type KeyRingImportJobOutput

type KeyRingImportJobOutput struct{ *pulumi.OutputState }

func (KeyRingImportJobOutput) Attestations

Statement that was generated and signed by the key creator (for example, an HSM) at key creation time. Use this statement to verify attributes of the key as stored on the HSM, independently of Google. Only present if the chosen ImportMethod is one with a protection level of HSM. Structure is documented below.

func (KeyRingImportJobOutput) ElementType

func (KeyRingImportJobOutput) ElementType() reflect.Type

func (KeyRingImportJobOutput) ExpireTime

The time at which this resource is scheduled for expiration and can no longer be used. This is in RFC3339 text format.

func (KeyRingImportJobOutput) ImportJobId

func (o KeyRingImportJobOutput) ImportJobId() pulumi.StringOutput

It must be unique within a KeyRing and match the regular expression [a-zA-Z0-9_-]{1,63}

***

func (KeyRingImportJobOutput) ImportMethod

func (o KeyRingImportJobOutput) ImportMethod() pulumi.StringOutput

The wrapping method to be used for incoming key material. Possible values are: `RSA_OAEP_3072_SHA1_AES_256`, `RSA_OAEP_4096_SHA1_AES_256`.

func (KeyRingImportJobOutput) KeyRing

The KeyRing that this import job belongs to. Format: `'projects/{{project}}/locations/{{location}}/keyRings/{{keyRing}}'`.

func (KeyRingImportJobOutput) Name

The resource name for this ImportJob in the format projects/*/locations/*/keyRings/*/importJobs/*.

func (KeyRingImportJobOutput) ProtectionLevel

func (o KeyRingImportJobOutput) ProtectionLevel() pulumi.StringOutput

The protection level of the ImportJob. This must match the protectionLevel of the versionTemplate on the CryptoKey you attempt to import into. Possible values are: `SOFTWARE`, `HSM`, `EXTERNAL`.

func (KeyRingImportJobOutput) PublicKeys

The public key with which to wrap key material prior to import. Only returned if state is `ACTIVE`. Structure is documented below.

func (KeyRingImportJobOutput) State

The current state of the ImportJob, indicating if it can be used.

func (KeyRingImportJobOutput) ToKeyRingImportJobOutput

func (o KeyRingImportJobOutput) ToKeyRingImportJobOutput() KeyRingImportJobOutput

func (KeyRingImportJobOutput) ToKeyRingImportJobOutputWithContext

func (o KeyRingImportJobOutput) ToKeyRingImportJobOutputWithContext(ctx context.Context) KeyRingImportJobOutput

type KeyRingImportJobPublicKey

type KeyRingImportJobPublicKey struct {
	// (Output)
	// The public key, encoded in PEM format. For more information, see the RFC 7468 sections
	// for General Considerations and Textual Encoding of Subject Public Key Info.
	Pem *string `pulumi:"pem"`
}

type KeyRingImportJobPublicKeyArgs

type KeyRingImportJobPublicKeyArgs struct {
	// (Output)
	// The public key, encoded in PEM format. For more information, see the RFC 7468 sections
	// for General Considerations and Textual Encoding of Subject Public Key Info.
	Pem pulumi.StringPtrInput `pulumi:"pem"`
}

func (KeyRingImportJobPublicKeyArgs) ElementType

func (KeyRingImportJobPublicKeyArgs) ToKeyRingImportJobPublicKeyOutput

func (i KeyRingImportJobPublicKeyArgs) ToKeyRingImportJobPublicKeyOutput() KeyRingImportJobPublicKeyOutput

func (KeyRingImportJobPublicKeyArgs) ToKeyRingImportJobPublicKeyOutputWithContext

func (i KeyRingImportJobPublicKeyArgs) ToKeyRingImportJobPublicKeyOutputWithContext(ctx context.Context) KeyRingImportJobPublicKeyOutput

type KeyRingImportJobPublicKeyArray

type KeyRingImportJobPublicKeyArray []KeyRingImportJobPublicKeyInput

func (KeyRingImportJobPublicKeyArray) ElementType

func (KeyRingImportJobPublicKeyArray) ToKeyRingImportJobPublicKeyArrayOutput

func (i KeyRingImportJobPublicKeyArray) ToKeyRingImportJobPublicKeyArrayOutput() KeyRingImportJobPublicKeyArrayOutput

func (KeyRingImportJobPublicKeyArray) ToKeyRingImportJobPublicKeyArrayOutputWithContext

func (i KeyRingImportJobPublicKeyArray) ToKeyRingImportJobPublicKeyArrayOutputWithContext(ctx context.Context) KeyRingImportJobPublicKeyArrayOutput

type KeyRingImportJobPublicKeyArrayInput

type KeyRingImportJobPublicKeyArrayInput interface {
	pulumi.Input

	ToKeyRingImportJobPublicKeyArrayOutput() KeyRingImportJobPublicKeyArrayOutput
	ToKeyRingImportJobPublicKeyArrayOutputWithContext(context.Context) KeyRingImportJobPublicKeyArrayOutput
}

KeyRingImportJobPublicKeyArrayInput is an input type that accepts KeyRingImportJobPublicKeyArray and KeyRingImportJobPublicKeyArrayOutput values. You can construct a concrete instance of `KeyRingImportJobPublicKeyArrayInput` via:

KeyRingImportJobPublicKeyArray{ KeyRingImportJobPublicKeyArgs{...} }

type KeyRingImportJobPublicKeyArrayOutput

type KeyRingImportJobPublicKeyArrayOutput struct{ *pulumi.OutputState }

func (KeyRingImportJobPublicKeyArrayOutput) ElementType

func (KeyRingImportJobPublicKeyArrayOutput) Index

func (KeyRingImportJobPublicKeyArrayOutput) ToKeyRingImportJobPublicKeyArrayOutput

func (o KeyRingImportJobPublicKeyArrayOutput) ToKeyRingImportJobPublicKeyArrayOutput() KeyRingImportJobPublicKeyArrayOutput

func (KeyRingImportJobPublicKeyArrayOutput) ToKeyRingImportJobPublicKeyArrayOutputWithContext

func (o KeyRingImportJobPublicKeyArrayOutput) ToKeyRingImportJobPublicKeyArrayOutputWithContext(ctx context.Context) KeyRingImportJobPublicKeyArrayOutput

type KeyRingImportJobPublicKeyInput

type KeyRingImportJobPublicKeyInput interface {
	pulumi.Input

	ToKeyRingImportJobPublicKeyOutput() KeyRingImportJobPublicKeyOutput
	ToKeyRingImportJobPublicKeyOutputWithContext(context.Context) KeyRingImportJobPublicKeyOutput
}

KeyRingImportJobPublicKeyInput is an input type that accepts KeyRingImportJobPublicKeyArgs and KeyRingImportJobPublicKeyOutput values. You can construct a concrete instance of `KeyRingImportJobPublicKeyInput` via:

KeyRingImportJobPublicKeyArgs{...}

type KeyRingImportJobPublicKeyOutput

type KeyRingImportJobPublicKeyOutput struct{ *pulumi.OutputState }

func (KeyRingImportJobPublicKeyOutput) ElementType

func (KeyRingImportJobPublicKeyOutput) Pem

(Output) The public key, encoded in PEM format. For more information, see the RFC 7468 sections for General Considerations and Textual Encoding of Subject Public Key Info.

func (KeyRingImportJobPublicKeyOutput) ToKeyRingImportJobPublicKeyOutput

func (o KeyRingImportJobPublicKeyOutput) ToKeyRingImportJobPublicKeyOutput() KeyRingImportJobPublicKeyOutput

func (KeyRingImportJobPublicKeyOutput) ToKeyRingImportJobPublicKeyOutputWithContext

func (o KeyRingImportJobPublicKeyOutput) ToKeyRingImportJobPublicKeyOutputWithContext(ctx context.Context) KeyRingImportJobPublicKeyOutput

type KeyRingImportJobState

type KeyRingImportJobState struct {
	// Statement that was generated and signed by the key creator (for example, an HSM) at key creation time.
	// Use this statement to verify attributes of the key as stored on the HSM, independently of Google.
	// Only present if the chosen ImportMethod is one with a protection level of HSM.
	// Structure is documented below.
	Attestations KeyRingImportJobAttestationArrayInput
	// The time at which this resource is scheduled for expiration and can no longer be used.
	// This is in RFC3339 text format.
	ExpireTime pulumi.StringPtrInput
	// It must be unique within a KeyRing and match the regular expression [a-zA-Z0-9_-]{1,63}
	//
	// ***
	ImportJobId pulumi.StringPtrInput
	// The wrapping method to be used for incoming key material.
	// Possible values are: `RSA_OAEP_3072_SHA1_AES_256`, `RSA_OAEP_4096_SHA1_AES_256`.
	ImportMethod pulumi.StringPtrInput
	// The KeyRing that this import job belongs to.
	// Format: `'projects/{{project}}/locations/{{location}}/keyRings/{{keyRing}}'`.
	KeyRing pulumi.StringPtrInput
	// The resource name for this ImportJob in the format projects/*/locations/*/keyRings/*/importJobs/*.
	Name pulumi.StringPtrInput
	// The protection level of the ImportJob. This must match the protectionLevel of the
	// versionTemplate on the CryptoKey you attempt to import into.
	// Possible values are: `SOFTWARE`, `HSM`, `EXTERNAL`.
	ProtectionLevel pulumi.StringPtrInput
	// The public key with which to wrap key material prior to import. Only returned if state is `ACTIVE`.
	// Structure is documented below.
	PublicKeys KeyRingImportJobPublicKeyArrayInput
	// The current state of the ImportJob, indicating if it can be used.
	State pulumi.StringPtrInput
}

func (KeyRingImportJobState) ElementType

func (KeyRingImportJobState) ElementType() reflect.Type

type KeyRingInput

type KeyRingInput interface {
	pulumi.Input

	ToKeyRingOutput() KeyRingOutput
	ToKeyRingOutputWithContext(ctx context.Context) KeyRingOutput
}

type KeyRingMap

type KeyRingMap map[string]KeyRingInput

func (KeyRingMap) ElementType

func (KeyRingMap) ElementType() reflect.Type

func (KeyRingMap) ToKeyRingMapOutput

func (i KeyRingMap) ToKeyRingMapOutput() KeyRingMapOutput

func (KeyRingMap) ToKeyRingMapOutputWithContext

func (i KeyRingMap) ToKeyRingMapOutputWithContext(ctx context.Context) KeyRingMapOutput

type KeyRingMapInput

type KeyRingMapInput interface {
	pulumi.Input

	ToKeyRingMapOutput() KeyRingMapOutput
	ToKeyRingMapOutputWithContext(context.Context) KeyRingMapOutput
}

KeyRingMapInput is an input type that accepts KeyRingMap and KeyRingMapOutput values. You can construct a concrete instance of `KeyRingMapInput` via:

KeyRingMap{ "key": KeyRingArgs{...} }

type KeyRingMapOutput

type KeyRingMapOutput struct{ *pulumi.OutputState }

func (KeyRingMapOutput) ElementType

func (KeyRingMapOutput) ElementType() reflect.Type

func (KeyRingMapOutput) MapIndex

func (KeyRingMapOutput) ToKeyRingMapOutput

func (o KeyRingMapOutput) ToKeyRingMapOutput() KeyRingMapOutput

func (KeyRingMapOutput) ToKeyRingMapOutputWithContext

func (o KeyRingMapOutput) ToKeyRingMapOutputWithContext(ctx context.Context) KeyRingMapOutput

type KeyRingOutput

type KeyRingOutput struct{ *pulumi.OutputState }

func (KeyRingOutput) ElementType

func (KeyRingOutput) ElementType() reflect.Type

func (KeyRingOutput) Location

func (o KeyRingOutput) Location() pulumi.StringOutput

The location for the KeyRing. A full list of valid locations can be found by running `gcloud kms locations list`.

***

func (KeyRingOutput) Name

The resource name for the KeyRing.

func (KeyRingOutput) Project

func (o KeyRingOutput) Project() pulumi.StringOutput

The ID of the project in which the resource belongs. If it is not provided, the provider project is used.

func (KeyRingOutput) ToKeyRingOutput

func (o KeyRingOutput) ToKeyRingOutput() KeyRingOutput

func (KeyRingOutput) ToKeyRingOutputWithContext

func (o KeyRingOutput) ToKeyRingOutputWithContext(ctx context.Context) KeyRingOutput

type KeyRingState

type KeyRingState struct {
	// The location for the KeyRing.
	// A full list of valid locations can be found by running `gcloud kms locations list`.
	//
	// ***
	Location pulumi.StringPtrInput
	// The resource name for the KeyRing.
	Name pulumi.StringPtrInput
	// The ID of the project in which the resource belongs.
	// If it is not provided, the provider project is used.
	Project pulumi.StringPtrInput
}

func (KeyRingState) ElementType

func (KeyRingState) ElementType() reflect.Type

type SecretCiphertext

type SecretCiphertext struct {
	pulumi.CustomResourceState

	// The additional authenticated data used for integrity checks during encryption and decryption.
	// **Note**: This property is sensitive and will not be displayed in the plan.
	AdditionalAuthenticatedData pulumi.StringPtrOutput `pulumi:"additionalAuthenticatedData"`
	// Contains the result of encrypting the provided plaintext, encoded in base64.
	Ciphertext pulumi.StringOutput `pulumi:"ciphertext"`
	// The full name of the CryptoKey that will be used to encrypt the provided plaintext.
	// Format: `'projects/{{project}}/locations/{{location}}/keyRings/{{keyRing}}/cryptoKeys/{{cryptoKey}}'`
	//
	// ***
	CryptoKey pulumi.StringOutput `pulumi:"cryptoKey"`
	// The plaintext to be encrypted.
	// **Note**: This property is sensitive and will not be displayed in the plan.
	Plaintext pulumi.StringOutput `pulumi:"plaintext"`
}

Encrypts secret data with Google Cloud KMS and provides access to the ciphertext.

> **NOTE:** Using this resource will allow you to conceal secret data within your resource definitions, but it does not take care of protecting that data in the logging output, plan output, or state output. Please take care to secure your secret data outside of resource definitions.

To get more information about SecretCiphertext, see:

* [API documentation](https://cloud.google.com/kms/docs/reference/rest/v1/projects.locations.keyRings.cryptoKeys/encrypt) * How-to Guides

## Example Usage

### Kms Secret Ciphertext Basic

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute"
"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		keyring, err := kms.NewKeyRing(ctx, "keyring", &kms.KeyRingArgs{
			Name:     pulumi.String("keyring-example"),
			Location: pulumi.String("global"),
		})
		if err != nil {
			return err
		}
		cryptokey, err := kms.NewCryptoKey(ctx, "cryptokey", &kms.CryptoKeyArgs{
			Name:           pulumi.String("crypto-key-example"),
			KeyRing:        keyring.ID(),
			RotationPeriod: pulumi.String("7776000s"),
		})
		if err != nil {
			return err
		}
		myPassword, err := kms.NewSecretCiphertext(ctx, "my_password", &kms.SecretCiphertextArgs{
			CryptoKey: cryptokey.ID(),
			Plaintext: pulumi.String("my-secret-password"),
		})
		if err != nil {
			return err
		}
		_, err = compute.NewInstance(ctx, "instance", &compute.InstanceArgs{
			NetworkInterfaces: compute.InstanceNetworkInterfaceArray{
				&compute.InstanceNetworkInterfaceArgs{
					AccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{
						nil,
					},
					Network: pulumi.String("default"),
				},
			},
			Name:        pulumi.String("my-instance"),
			MachineType: pulumi.String("e2-medium"),
			Zone:        pulumi.String("us-central1-a"),
			BootDisk: &compute.InstanceBootDiskArgs{
				InitializeParams: &compute.InstanceBootDiskInitializeParamsArgs{
					Image: pulumi.String("debian-cloud/debian-11"),
				},
			},
			Metadata: pulumi.StringMap{
				"password": myPassword.Ciphertext,
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## Import

This resource does not support import.

func GetSecretCiphertext

func GetSecretCiphertext(ctx *pulumi.Context,
	name string, id pulumi.IDInput, state *SecretCiphertextState, opts ...pulumi.ResourceOption) (*SecretCiphertext, error)

GetSecretCiphertext gets an existing SecretCiphertext resource's state with the given name, ID, and optional state properties that are used to uniquely qualify the lookup (nil if not required).

func NewSecretCiphertext

func NewSecretCiphertext(ctx *pulumi.Context,
	name string, args *SecretCiphertextArgs, opts ...pulumi.ResourceOption) (*SecretCiphertext, error)

NewSecretCiphertext registers a new resource with the given unique name, arguments, and options.

func (*SecretCiphertext) ElementType

func (*SecretCiphertext) ElementType() reflect.Type

func (*SecretCiphertext) ToSecretCiphertextOutput

func (i *SecretCiphertext) ToSecretCiphertextOutput() SecretCiphertextOutput

func (*SecretCiphertext) ToSecretCiphertextOutputWithContext

func (i *SecretCiphertext) ToSecretCiphertextOutputWithContext(ctx context.Context) SecretCiphertextOutput

type SecretCiphertextArgs

type SecretCiphertextArgs struct {
	// The additional authenticated data used for integrity checks during encryption and decryption.
	// **Note**: This property is sensitive and will not be displayed in the plan.
	AdditionalAuthenticatedData pulumi.StringPtrInput
	// The full name of the CryptoKey that will be used to encrypt the provided plaintext.
	// Format: `'projects/{{project}}/locations/{{location}}/keyRings/{{keyRing}}/cryptoKeys/{{cryptoKey}}'`
	//
	// ***
	CryptoKey pulumi.StringInput
	// The plaintext to be encrypted.
	// **Note**: This property is sensitive and will not be displayed in the plan.
	Plaintext pulumi.StringInput
}

The set of arguments for constructing a SecretCiphertext resource.

func (SecretCiphertextArgs) ElementType

func (SecretCiphertextArgs) ElementType() reflect.Type

type SecretCiphertextArray

type SecretCiphertextArray []SecretCiphertextInput

func (SecretCiphertextArray) ElementType

func (SecretCiphertextArray) ElementType() reflect.Type

func (SecretCiphertextArray) ToSecretCiphertextArrayOutput

func (i SecretCiphertextArray) ToSecretCiphertextArrayOutput() SecretCiphertextArrayOutput

func (SecretCiphertextArray) ToSecretCiphertextArrayOutputWithContext

func (i SecretCiphertextArray) ToSecretCiphertextArrayOutputWithContext(ctx context.Context) SecretCiphertextArrayOutput

type SecretCiphertextArrayInput

type SecretCiphertextArrayInput interface {
	pulumi.Input

	ToSecretCiphertextArrayOutput() SecretCiphertextArrayOutput
	ToSecretCiphertextArrayOutputWithContext(context.Context) SecretCiphertextArrayOutput
}

SecretCiphertextArrayInput is an input type that accepts SecretCiphertextArray and SecretCiphertextArrayOutput values. You can construct a concrete instance of `SecretCiphertextArrayInput` via:

SecretCiphertextArray{ SecretCiphertextArgs{...} }

type SecretCiphertextArrayOutput

type SecretCiphertextArrayOutput struct{ *pulumi.OutputState }

func (SecretCiphertextArrayOutput) ElementType

func (SecretCiphertextArrayOutput) Index

func (SecretCiphertextArrayOutput) ToSecretCiphertextArrayOutput

func (o SecretCiphertextArrayOutput) ToSecretCiphertextArrayOutput() SecretCiphertextArrayOutput

func (SecretCiphertextArrayOutput) ToSecretCiphertextArrayOutputWithContext

func (o SecretCiphertextArrayOutput) ToSecretCiphertextArrayOutputWithContext(ctx context.Context) SecretCiphertextArrayOutput

type SecretCiphertextInput

type SecretCiphertextInput interface {
	pulumi.Input

	ToSecretCiphertextOutput() SecretCiphertextOutput
	ToSecretCiphertextOutputWithContext(ctx context.Context) SecretCiphertextOutput
}

type SecretCiphertextMap

type SecretCiphertextMap map[string]SecretCiphertextInput

func (SecretCiphertextMap) ElementType

func (SecretCiphertextMap) ElementType() reflect.Type

func (SecretCiphertextMap) ToSecretCiphertextMapOutput

func (i SecretCiphertextMap) ToSecretCiphertextMapOutput() SecretCiphertextMapOutput

func (SecretCiphertextMap) ToSecretCiphertextMapOutputWithContext

func (i SecretCiphertextMap) ToSecretCiphertextMapOutputWithContext(ctx context.Context) SecretCiphertextMapOutput

type SecretCiphertextMapInput

type SecretCiphertextMapInput interface {
	pulumi.Input

	ToSecretCiphertextMapOutput() SecretCiphertextMapOutput
	ToSecretCiphertextMapOutputWithContext(context.Context) SecretCiphertextMapOutput
}

SecretCiphertextMapInput is an input type that accepts SecretCiphertextMap and SecretCiphertextMapOutput values. You can construct a concrete instance of `SecretCiphertextMapInput` via:

SecretCiphertextMap{ "key": SecretCiphertextArgs{...} }

type SecretCiphertextMapOutput

type SecretCiphertextMapOutput struct{ *pulumi.OutputState }

func (SecretCiphertextMapOutput) ElementType

func (SecretCiphertextMapOutput) ElementType() reflect.Type

func (SecretCiphertextMapOutput) MapIndex

func (SecretCiphertextMapOutput) ToSecretCiphertextMapOutput

func (o SecretCiphertextMapOutput) ToSecretCiphertextMapOutput() SecretCiphertextMapOutput

func (SecretCiphertextMapOutput) ToSecretCiphertextMapOutputWithContext

func (o SecretCiphertextMapOutput) ToSecretCiphertextMapOutputWithContext(ctx context.Context) SecretCiphertextMapOutput

type SecretCiphertextOutput

type SecretCiphertextOutput struct{ *pulumi.OutputState }

func (SecretCiphertextOutput) AdditionalAuthenticatedData

func (o SecretCiphertextOutput) AdditionalAuthenticatedData() pulumi.StringPtrOutput

The additional authenticated data used for integrity checks during encryption and decryption. **Note**: This property is sensitive and will not be displayed in the plan.

func (SecretCiphertextOutput) Ciphertext

Contains the result of encrypting the provided plaintext, encoded in base64.

func (SecretCiphertextOutput) CryptoKey

The full name of the CryptoKey that will be used to encrypt the provided plaintext. Format: `'projects/{{project}}/locations/{{location}}/keyRings/{{keyRing}}/cryptoKeys/{{cryptoKey}}'`

***

func (SecretCiphertextOutput) ElementType

func (SecretCiphertextOutput) ElementType() reflect.Type

func (SecretCiphertextOutput) Plaintext

The plaintext to be encrypted. **Note**: This property is sensitive and will not be displayed in the plan.

func (SecretCiphertextOutput) ToSecretCiphertextOutput

func (o SecretCiphertextOutput) ToSecretCiphertextOutput() SecretCiphertextOutput

func (SecretCiphertextOutput) ToSecretCiphertextOutputWithContext

func (o SecretCiphertextOutput) ToSecretCiphertextOutputWithContext(ctx context.Context) SecretCiphertextOutput

type SecretCiphertextState

type SecretCiphertextState struct {
	// The additional authenticated data used for integrity checks during encryption and decryption.
	// **Note**: This property is sensitive and will not be displayed in the plan.
	AdditionalAuthenticatedData pulumi.StringPtrInput
	// Contains the result of encrypting the provided plaintext, encoded in base64.
	Ciphertext pulumi.StringPtrInput
	// The full name of the CryptoKey that will be used to encrypt the provided plaintext.
	// Format: `'projects/{{project}}/locations/{{location}}/keyRings/{{keyRing}}/cryptoKeys/{{cryptoKey}}'`
	//
	// ***
	CryptoKey pulumi.StringPtrInput
	// The plaintext to be encrypted.
	// **Note**: This property is sensitive and will not be displayed in the plan.
	Plaintext pulumi.StringPtrInput
}

func (SecretCiphertextState) ElementType

func (SecretCiphertextState) ElementType() reflect.Type

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL