@pulumi/gcp
Version:
A Pulumi package for creating and managing Google Cloud Platform resources.
334 lines • 15.4 kB
TypeScript
import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
* Allows configuring a single access level condition to be appended to an access level's conditions.
* This resource is intended to be used in cases where it is not possible to compile a full list
* of conditions to include in a `gcp.accesscontextmanager.AccessLevel` resource,
* to enable them to be added separately.
*
* > **Note:** If this resource is used alongside a `gcp.accesscontextmanager.AccessLevel` resource,
* the access level resource must have a `lifecycle` block with `ignoreChanges = [basic[0].conditions]` so
* they don't fight over which service accounts should be included.
*
* To get more information about AccessLevelCondition, see:
*
* * [API documentation](https://cloud.google.com/access-context-manager/docs/reference/rest/v1/accessPolicies.accessLevels)
* * How-to Guides
* * [Access Policy Quickstart](https://cloud.google.com/access-context-manager/docs/quickstart)
*
* > **Warning:** If you are using User ADCs (Application Default Credentials) with this resource,
* you must specify a `billingProject` and set `userProjectOverride` to true
* in the provider configuration. Otherwise the ACM API will return a 403 error.
* Your account must have the `serviceusage.services.use` permission on the
* `billingProject` you defined.
*
* ## Example Usage
*
* ### Access Context Manager Access Level Condition Basic
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as gcp from "@pulumi/gcp";
*
* const access_policy = new gcp.accesscontextmanager.AccessPolicy("access-policy", {
* parent: "organizations/123456789",
* title: "my policy",
* });
* const access_level_service_account = new gcp.accesscontextmanager.AccessLevel("access-level-service-account", {
* parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,
* name: pulumi.interpolate`accessPolicies/${access_policy.name}/accessLevels/chromeos_no_lock`,
* title: "chromeos_no_lock",
* basic: {
* conditions: [{
* devicePolicy: {
* requireScreenLock: true,
* osConstraints: [{
* osType: "DESKTOP_CHROME_OS",
* }],
* },
* regions: [
* "CH",
* "IT",
* "US",
* ],
* }],
* },
* });
* const created_later = new gcp.serviceaccount.Account("created-later", {accountId: "my-account-id"});
* const access_level_conditions = new gcp.accesscontextmanager.AccessLevelCondition("access-level-conditions", {
* accessLevel: access_level_service_account.name,
* ipSubnetworks: ["192.0.4.0/24"],
* members: [
* "user:test@google.com",
* "user:test2@google.com",
* pulumi.interpolate`serviceAccount:${created_later.email}`,
* ],
* negate: false,
* devicePolicy: {
* requireScreenLock: false,
* requireAdminApproval: false,
* requireCorpOwned: true,
* osConstraints: [{
* osType: "DESKTOP_CHROME_OS",
* }],
* },
* regions: [
* "IT",
* "US",
* ],
* });
* ```
*
* ## Import
*
* This resource does not support import.
*/
export declare class AccessLevelCondition extends pulumi.CustomResource {
/**
* Get an existing AccessLevelCondition resource's state with the given name, ID, and optional extra
* properties used to qualify the lookup.
*
* @param name The _unique_ name of the resulting resource.
* @param id The _unique_ provider ID of the resource to lookup.
* @param state Any extra arguments used during the lookup.
* @param opts Optional settings to control the behavior of the CustomResource.
*/
static get(name: string, id: pulumi.Input<pulumi.ID>, state?: AccessLevelConditionState, opts?: pulumi.CustomResourceOptions): AccessLevelCondition;
/**
* Returns true if the given object is an instance of AccessLevelCondition. This is designed to work even
* when multiple copies of the Pulumi SDK have been loaded into the same process.
*/
static isInstance(obj: any): obj is AccessLevelCondition;
/**
* The name of the Access Level to add this condition to.
*/
readonly accessLevel: pulumi.Output<string>;
/**
* The name of the Access Policy this resource belongs to.
*/
readonly accessPolicyId: pulumi.Output<string>;
/**
* Whether Terraform will be prevented from destroying the resource. Defaults to DELETE.
* When a 'terraform destroy' or 'pulumi up' would delete the resource,
* the command will fail if this field is set to "PREVENT" in Terraform state.
* When set to "ABANDON", the command will remove the resource from Terraform
* management without updating or deleting the resource in the API.
* When set to "DELETE", deleting the resource is allowed.
*/
readonly deletionPolicy: pulumi.Output<string>;
/**
* Device specific restrictions, all restrictions must hold for
* the Condition to be true. If not specified, all devices are
* allowed.
* Structure is documented below.
*/
readonly devicePolicy: pulumi.Output<outputs.accesscontextmanager.AccessLevelConditionDevicePolicy | undefined>;
/**
* A list of CIDR block IP subnetwork specification. May be IPv4
* or IPv6.
* Note that for a CIDR IP address block, the specified IP address
* portion must be properly truncated (i.e. all the host bits must
* be zero) or the input is considered malformed. For example,
* "192.0.2.0/24" is accepted but "192.0.2.1/24" is not. Similarly,
* for IPv6, "2001:db8::/32" is accepted whereas "2001:db8::1/32"
* is not. The originating IP of a request must be in one of the
* listed subnets in order for this Condition to be true.
* If empty, all IP addresses are allowed.
*/
readonly ipSubnetworks: pulumi.Output<string[] | undefined>;
/**
* An allowed list of members (users, service accounts).
* Using groups is not supported yet.
* The signed-in user originating the request must be a part of one
* of the provided members. If not specified, a request may come
* from any user (logged in/not logged in, not present in any
* groups, etc.).
* Formats: `user:{emailid}`, `serviceAccount:{emailid}`
*/
readonly members: pulumi.Output<string[] | undefined>;
/**
* Whether to negate the Condition. If true, the Condition becomes
* a NAND over its non-empty fields, each field must be false for
* the Condition overall to be satisfied. Defaults to false.
*/
readonly negate: pulumi.Output<boolean | undefined>;
/**
* The request must originate from one of the provided
* countries/regions.
* Format: A valid ISO 3166-1 alpha-2 code.
*/
readonly regions: pulumi.Output<string[] | undefined>;
/**
* A list of other access levels defined in the same Policy,
* referenced by resource name. Referencing an AccessLevel which
* does not exist is an error. All access levels listed must be
* granted for the Condition to be true.
* Format: accessPolicies/{policy_id}/accessLevels/{short_name}
*/
readonly requiredAccessLevels: pulumi.Output<string[] | undefined>;
/**
* The request must originate from one of the provided VPC networks in Google Cloud. Cannot specify this field together with `ipSubnetworks`.
* Structure is documented below.
*/
readonly vpcNetworkSources: pulumi.Output<outputs.accesscontextmanager.AccessLevelConditionVpcNetworkSource[] | undefined>;
/**
* Create a AccessLevelCondition resource with the given unique name, arguments, and options.
*
* @param name The _unique_ name of the resource.
* @param args The arguments to use to populate this resource's properties.
* @param opts A bag of options that control this resource's behavior.
*/
constructor(name: string, args: AccessLevelConditionArgs, opts?: pulumi.CustomResourceOptions);
}
/**
* Input properties used for looking up and filtering AccessLevelCondition resources.
*/
export interface AccessLevelConditionState {
/**
* The name of the Access Level to add this condition to.
*/
accessLevel?: pulumi.Input<string | undefined>;
/**
* The name of the Access Policy this resource belongs to.
*/
accessPolicyId?: pulumi.Input<string | undefined>;
/**
* Whether Terraform will be prevented from destroying the resource. Defaults to DELETE.
* When a 'terraform destroy' or 'pulumi up' would delete the resource,
* the command will fail if this field is set to "PREVENT" in Terraform state.
* When set to "ABANDON", the command will remove the resource from Terraform
* management without updating or deleting the resource in the API.
* When set to "DELETE", deleting the resource is allowed.
*/
deletionPolicy?: pulumi.Input<string | undefined>;
/**
* Device specific restrictions, all restrictions must hold for
* the Condition to be true. If not specified, all devices are
* allowed.
* Structure is documented below.
*/
devicePolicy?: pulumi.Input<inputs.accesscontextmanager.AccessLevelConditionDevicePolicy | undefined>;
/**
* A list of CIDR block IP subnetwork specification. May be IPv4
* or IPv6.
* Note that for a CIDR IP address block, the specified IP address
* portion must be properly truncated (i.e. all the host bits must
* be zero) or the input is considered malformed. For example,
* "192.0.2.0/24" is accepted but "192.0.2.1/24" is not. Similarly,
* for IPv6, "2001:db8::/32" is accepted whereas "2001:db8::1/32"
* is not. The originating IP of a request must be in one of the
* listed subnets in order for this Condition to be true.
* If empty, all IP addresses are allowed.
*/
ipSubnetworks?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* An allowed list of members (users, service accounts).
* Using groups is not supported yet.
* The signed-in user originating the request must be a part of one
* of the provided members. If not specified, a request may come
* from any user (logged in/not logged in, not present in any
* groups, etc.).
* Formats: `user:{emailid}`, `serviceAccount:{emailid}`
*/
members?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* Whether to negate the Condition. If true, the Condition becomes
* a NAND over its non-empty fields, each field must be false for
* the Condition overall to be satisfied. Defaults to false.
*/
negate?: pulumi.Input<boolean | undefined>;
/**
* The request must originate from one of the provided
* countries/regions.
* Format: A valid ISO 3166-1 alpha-2 code.
*/
regions?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* A list of other access levels defined in the same Policy,
* referenced by resource name. Referencing an AccessLevel which
* does not exist is an error. All access levels listed must be
* granted for the Condition to be true.
* Format: accessPolicies/{policy_id}/accessLevels/{short_name}
*/
requiredAccessLevels?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* The request must originate from one of the provided VPC networks in Google Cloud. Cannot specify this field together with `ipSubnetworks`.
* Structure is documented below.
*/
vpcNetworkSources?: pulumi.Input<pulumi.Input<inputs.accesscontextmanager.AccessLevelConditionVpcNetworkSource>[] | undefined>;
}
/**
* The set of arguments for constructing a AccessLevelCondition resource.
*/
export interface AccessLevelConditionArgs {
/**
* The name of the Access Level to add this condition to.
*/
accessLevel: pulumi.Input<string>;
/**
* Whether Terraform will be prevented from destroying the resource. Defaults to DELETE.
* When a 'terraform destroy' or 'pulumi up' would delete the resource,
* the command will fail if this field is set to "PREVENT" in Terraform state.
* When set to "ABANDON", the command will remove the resource from Terraform
* management without updating or deleting the resource in the API.
* When set to "DELETE", deleting the resource is allowed.
*/
deletionPolicy?: pulumi.Input<string | undefined>;
/**
* Device specific restrictions, all restrictions must hold for
* the Condition to be true. If not specified, all devices are
* allowed.
* Structure is documented below.
*/
devicePolicy?: pulumi.Input<inputs.accesscontextmanager.AccessLevelConditionDevicePolicy | undefined>;
/**
* A list of CIDR block IP subnetwork specification. May be IPv4
* or IPv6.
* Note that for a CIDR IP address block, the specified IP address
* portion must be properly truncated (i.e. all the host bits must
* be zero) or the input is considered malformed. For example,
* "192.0.2.0/24" is accepted but "192.0.2.1/24" is not. Similarly,
* for IPv6, "2001:db8::/32" is accepted whereas "2001:db8::1/32"
* is not. The originating IP of a request must be in one of the
* listed subnets in order for this Condition to be true.
* If empty, all IP addresses are allowed.
*/
ipSubnetworks?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* An allowed list of members (users, service accounts).
* Using groups is not supported yet.
* The signed-in user originating the request must be a part of one
* of the provided members. If not specified, a request may come
* from any user (logged in/not logged in, not present in any
* groups, etc.).
* Formats: `user:{emailid}`, `serviceAccount:{emailid}`
*/
members?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* Whether to negate the Condition. If true, the Condition becomes
* a NAND over its non-empty fields, each field must be false for
* the Condition overall to be satisfied. Defaults to false.
*/
negate?: pulumi.Input<boolean | undefined>;
/**
* The request must originate from one of the provided
* countries/regions.
* Format: A valid ISO 3166-1 alpha-2 code.
*/
regions?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* A list of other access levels defined in the same Policy,
* referenced by resource name. Referencing an AccessLevel which
* does not exist is an error. All access levels listed must be
* granted for the Condition to be true.
* Format: accessPolicies/{policy_id}/accessLevels/{short_name}
*/
requiredAccessLevels?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* The request must originate from one of the provided VPC networks in Google Cloud. Cannot specify this field together with `ipSubnetworks`.
* Structure is documented below.
*/
vpcNetworkSources?: pulumi.Input<pulumi.Input<inputs.accesscontextmanager.AccessLevelConditionVpcNetworkSource>[] | undefined>;
}
//# sourceMappingURL=accessLevelCondition.d.ts.map