@pulumi/gcp
Version:
A Pulumi package for creating and managing Google Cloud Platform resources.
1,060 lines • 4.44 MB
TypeScript
import * as outputs from "../types/output";
export declare namespace accesscontextmanager {
interface AccessLevelBasic {
/**
* How the conditions list should be combined to determine if a request
* is granted this AccessLevel. If AND is used, each Condition in
* conditions must be satisfied for the AccessLevel to be applied. If
* OR is used, at least one Condition in conditions must be satisfied
* for the AccessLevel to be applied.
* Default value is `AND`.
* Possible values are: `AND`, `OR`.
*/
combiningFunction?: string;
/**
* A set of requirements for the AccessLevel to be granted.
* Structure is documented below.
*/
conditions: outputs.accesscontextmanager.AccessLevelBasicCondition[];
}
interface AccessLevelBasicCondition {
/**
* 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?: outputs.accesscontextmanager.AccessLevelBasicConditionDevicePolicy;
/**
* 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?: string[];
/**
* 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?: string[];
/**
* 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?: boolean;
/**
* The request must originate from one of the provided
* countries/regions.
* Format: A valid ISO 3166-1 alpha-2 code.
*/
regions?: string[];
/**
* 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?: string[];
/**
* 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?: outputs.accesscontextmanager.AccessLevelBasicConditionVpcNetworkSource[];
}
interface AccessLevelBasicConditionDevicePolicy {
/**
* A list of allowed device management levels.
* An empty list allows all management levels.
* Each value may be one of: `MANAGEMENT_UNSPECIFIED`, `NONE`, `BASIC`, `COMPLETE`.
*/
allowedDeviceManagementLevels?: string[];
/**
* A list of allowed encryptions statuses.
* An empty list allows all statuses.
* Each value may be one of: `ENCRYPTION_UNSPECIFIED`, `ENCRYPTION_UNSUPPORTED`, `UNENCRYPTED`, `ENCRYPTED`.
*/
allowedEncryptionStatuses?: string[];
/**
* A list of allowed OS versions.
* An empty list allows all types and all versions.
* Structure is documented below.
*/
osConstraints?: outputs.accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraint[];
/**
* Whether the device needs to be approved by the customer admin.
*/
requireAdminApproval?: boolean;
/**
* Whether the device needs to be corp owned.
*/
requireCorpOwned?: boolean;
/**
* Whether or not screenlock is required for the DevicePolicy
* to be true. Defaults to false.
*/
requireScreenLock?: boolean;
}
interface AccessLevelBasicConditionDevicePolicyOsConstraint {
/**
* The minimum allowed OS version. If not set, any version
* of this OS satisfies the constraint.
* Format: "major.minor.patch" such as "10.5.301", "9.2.1".
*/
minimumVersion?: string;
/**
* The operating system type of the device.
* Possible values are: `OS_UNSPECIFIED`, `DESKTOP_MAC`, `DESKTOP_WINDOWS`, `DESKTOP_LINUX`, `DESKTOP_CHROME_OS`, `ANDROID`, `IOS`.
*/
osType: string;
/**
* If you specify DESKTOP_CHROME_OS for osType, you can optionally include requireVerifiedChromeOs to require Chrome Verified Access.
*/
requireVerifiedChromeOs?: boolean;
}
interface AccessLevelBasicConditionVpcNetworkSource {
/**
* Sub networks within a VPC network.
* Structure is documented below.
*/
vpcSubnetwork?: outputs.accesscontextmanager.AccessLevelBasicConditionVpcNetworkSourceVpcSubnetwork;
}
interface AccessLevelBasicConditionVpcNetworkSourceVpcSubnetwork {
/**
* Required. Network name to be allowed by this Access Level. Networks of foreign organizations requires `compute.network.get` permission to be granted to caller.
*/
network: string;
/**
* A list of CIDR block IP subnetwork specification. Must be IPv4.
*/
vpcIpSubnetworks?: string[];
}
interface AccessLevelConditionDevicePolicy {
/**
* A list of allowed device management levels.
* An empty list allows all management levels.
* Each value may be one of: `MANAGEMENT_UNSPECIFIED`, `NONE`, `BASIC`, `COMPLETE`.
*/
allowedDeviceManagementLevels?: string[];
/**
* A list of allowed encryptions statuses.
* An empty list allows all statuses.
* Each value may be one of: `ENCRYPTION_UNSPECIFIED`, `ENCRYPTION_UNSUPPORTED`, `UNENCRYPTED`, `ENCRYPTED`.
*/
allowedEncryptionStatuses?: string[];
/**
* A list of allowed OS versions.
* An empty list allows all types and all versions.
* Structure is documented below.
*/
osConstraints?: outputs.accesscontextmanager.AccessLevelConditionDevicePolicyOsConstraint[];
/**
* Whether the device needs to be approved by the customer admin.
*/
requireAdminApproval?: boolean;
/**
* Whether the device needs to be corp owned.
*/
requireCorpOwned?: boolean;
/**
* Whether or not screenlock is required for the DevicePolicy
* to be true. Defaults to false.
*/
requireScreenLock?: boolean;
}
interface AccessLevelConditionDevicePolicyOsConstraint {
/**
* The minimum allowed OS version. If not set, any version
* of this OS satisfies the constraint.
* Format: "major.minor.patch" such as "10.5.301", "9.2.1".
*/
minimumVersion?: string;
/**
* The operating system type of the device.
* Possible values are: `OS_UNSPECIFIED`, `DESKTOP_MAC`, `DESKTOP_WINDOWS`, `DESKTOP_LINUX`, `DESKTOP_CHROME_OS`, `ANDROID`, `IOS`.
*/
osType: string;
}
interface AccessLevelConditionVpcNetworkSource {
/**
* Sub networks within a VPC network.
* Structure is documented below.
*/
vpcSubnetwork?: outputs.accesscontextmanager.AccessLevelConditionVpcNetworkSourceVpcSubnetwork;
}
interface AccessLevelConditionVpcNetworkSourceVpcSubnetwork {
/**
* Required. Network name to be allowed by this Access Level. Networks of foreign organizations requires `compute.network.get` permission to be granted to caller.
*/
network: string;
/**
* CIDR block IP subnetwork specification. Must be IPv4.
*/
vpcIpSubnetworks?: string[];
}
interface AccessLevelCustom {
/**
* Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language.
* This page details the objects and attributes that are used to the build the CEL expressions for
* custom access levels - https://cloud.google.com/access-context-manager/docs/custom-access-level-spec.
* Structure is documented below.
*/
expr: outputs.accesscontextmanager.AccessLevelCustomExpr;
}
interface AccessLevelCustomExpr {
/**
* Description of the expression
*/
description?: string;
/**
* Textual representation of an expression in Common Expression Language syntax.
*/
expression: string;
/**
* String indicating the location of the expression for error reporting, e.g. a file name and a position in the file
*/
location?: string;
/**
* Title for the expression, i.e. a short string describing its purpose.
*/
title?: string;
}
interface AccessLevelsAccessLevel {
/**
* A set of predefined conditions for the access level and a combining function.
* Structure is documented below.
*/
basic?: outputs.accesscontextmanager.AccessLevelsAccessLevelBasic;
/**
* Custom access level conditions are set using the Cloud Common Expression Language to represent the necessary conditions for the level to apply to a request.
* See CEL spec at: https://github.com/google/cel-spec.
* Structure is documented below.
*/
custom?: outputs.accesscontextmanager.AccessLevelsAccessLevelCustom;
/**
* Description of the AccessLevel and its use. Does not affect behavior.
*/
description?: string;
/**
* Resource name for the Access Level. The shortName component must begin
* with a letter and only include alphanumeric and '_'.
* Format: accessPolicies/{policy_id}/accessLevels/{short_name}
*/
name: string;
/**
* Human readable title. Must be unique within the Policy.
*/
title: string;
}
interface AccessLevelsAccessLevelBasic {
/**
* How the conditions list should be combined to determine if a request
* is granted this AccessLevel. If AND is used, each Condition in
* conditions must be satisfied for the AccessLevel to be applied. If
* OR is used, at least one Condition in conditions must be satisfied
* for the AccessLevel to be applied.
* Default value is `AND`.
* Possible values are: `AND`, `OR`.
*/
combiningFunction?: string;
/**
* A set of requirements for the AccessLevel to be granted.
* Structure is documented below.
*/
conditions: outputs.accesscontextmanager.AccessLevelsAccessLevelBasicCondition[];
}
interface AccessLevelsAccessLevelBasicCondition {
/**
* 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?: outputs.accesscontextmanager.AccessLevelsAccessLevelBasicConditionDevicePolicy;
/**
* 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?: string[];
/**
* 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?: string[];
/**
* 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?: boolean;
/**
* The request must originate from one of the provided
* countries/regions.
* Format: A valid ISO 3166-1 alpha-2 code.
*/
regions?: string[];
/**
* 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?: string[];
/**
* 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?: outputs.accesscontextmanager.AccessLevelsAccessLevelBasicConditionVpcNetworkSource[];
}
interface AccessLevelsAccessLevelBasicConditionDevicePolicy {
/**
* A list of allowed device management levels.
* An empty list allows all management levels.
* Each value may be one of: `MANAGEMENT_UNSPECIFIED`, `NONE`, `BASIC`, `COMPLETE`.
*/
allowedDeviceManagementLevels?: string[];
/**
* A list of allowed encryptions statuses.
* An empty list allows all statuses.
* Each value may be one of: `ENCRYPTION_UNSPECIFIED`, `ENCRYPTION_UNSUPPORTED`, `UNENCRYPTED`, `ENCRYPTED`.
*/
allowedEncryptionStatuses?: string[];
/**
* A list of allowed OS versions.
* An empty list allows all types and all versions.
* Structure is documented below.
*/
osConstraints?: outputs.accesscontextmanager.AccessLevelsAccessLevelBasicConditionDevicePolicyOsConstraint[];
/**
* Whether the device needs to be approved by the customer admin.
*/
requireAdminApproval?: boolean;
/**
* Whether the device needs to be corp owned.
*/
requireCorpOwned?: boolean;
/**
* Whether or not screenlock is required for the DevicePolicy
* to be true. Defaults to false.
*/
requireScreenLock?: boolean;
}
interface AccessLevelsAccessLevelBasicConditionDevicePolicyOsConstraint {
/**
* The minimum allowed OS version. If not set, any version
* of this OS satisfies the constraint.
* Format: "major.minor.patch" such as "10.5.301", "9.2.1".
*/
minimumVersion?: string;
/**
* The operating system type of the device.
* Possible values are: `OS_UNSPECIFIED`, `DESKTOP_MAC`, `DESKTOP_WINDOWS`, `DESKTOP_LINUX`, `DESKTOP_CHROME_OS`, `ANDROID`, `IOS`.
*/
osType: string;
}
interface AccessLevelsAccessLevelBasicConditionVpcNetworkSource {
/**
* Sub networks within a VPC network.
* Structure is documented below.
*/
vpcSubnetwork?: outputs.accesscontextmanager.AccessLevelsAccessLevelBasicConditionVpcNetworkSourceVpcSubnetwork;
}
interface AccessLevelsAccessLevelBasicConditionVpcNetworkSourceVpcSubnetwork {
/**
* Required. Network name to be allowed by this Access Level. Networks of foreign organizations requires `compute.network.get` permission to be granted to caller.
*/
network: string;
/**
* CIDR block IP subnetwork specification. Must be IPv4.
*/
vpcIpSubnetworks?: string[];
}
interface AccessLevelsAccessLevelCustom {
/**
* Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language.
* This page details the objects and attributes that are used to the build the CEL expressions for
* custom access levels - https://cloud.google.com/access-context-manager/docs/custom-access-level-spec.
* Structure is documented below.
*/
expr: outputs.accesscontextmanager.AccessLevelsAccessLevelCustomExpr;
}
interface AccessLevelsAccessLevelCustomExpr {
/**
* Description of the expression
*/
description?: string;
/**
* Textual representation of an expression in Common Expression Language syntax.
*/
expression: string;
/**
* String indicating the location of the expression for error reporting, e.g. a file name and a position in the file
*/
location?: string;
/**
* Title for the expression, i.e. a short string describing its purpose.
*/
title?: string;
}
interface AccessPolicyIamBindingCondition {
description?: string;
expression: string;
title: string;
}
interface AccessPolicyIamMemberCondition {
description?: string;
expression: string;
title: string;
}
interface ServicePerimeterDryRunEgressPolicyEgressFrom {
/**
* Identities can be an individual user, service account, Google group,
* or third-party identity. For third-party identity, only single identities
* are supported and other identity types are not supported.The v1 identities
* that have the prefix user, group and serviceAccount in
* https://cloud.google.com/iam/docs/principal-identifiers#v1 are supported.
*/
identities?: string[];
/**
* Specifies the type of identities that are allowed access to outside the
* perimeter. If left unspecified, then members of `identities` field will
* be allowed access.
* Possible values are: `ANY_IDENTITY`, `ANY_USER_ACCOUNT`, `ANY_SERVICE_ACCOUNT`.
*/
identityType?: string;
/**
* Whether to enforce traffic restrictions based on `sources` field. If the `sources` field is non-empty, then this field must be set to `SOURCE_RESTRICTION_ENABLED`.
* Possible values are: `SOURCE_RESTRICTION_ENABLED`, `SOURCE_RESTRICTION_DISABLED`.
*/
sourceRestriction?: string;
/**
* Sources that this EgressPolicy authorizes access from.
* Structure is documented below.
*/
sources?: outputs.accesscontextmanager.ServicePerimeterDryRunEgressPolicyEgressFromSource[];
}
interface ServicePerimeterDryRunEgressPolicyEgressFromSource {
/**
* An AccessLevel resource name that allows resources outside the ServicePerimeter to be accessed from the inside.
*/
accessLevel?: string;
/**
* A Google Cloud resource that is allowed to egress the perimeter.
* Requests from these resources are allowed to access data outside the perimeter.
* Currently only projects are allowed. Project format: `projects/{project_number}`.
* The resource may be in any Google Cloud organization, not just the
* organization that the perimeter is defined in. `*` is not allowed, the
* case of allowing all Google Cloud resources only is not supported.
*/
resource?: string;
}
interface ServicePerimeterDryRunEgressPolicyEgressTo {
/**
* A list of external resources that are allowed to be accessed. A request
* matches if it contains an external resource in this list (Example:
* s3://bucket/path). Currently '*' is not allowed.
*/
externalResources?: string[];
/**
* A list of `ApiOperations` that this egress rule applies to. A request matches
* if it contains an operation/service in this list.
* Structure is documented below.
*/
operations?: outputs.accesscontextmanager.ServicePerimeterDryRunEgressPolicyEgressToOperation[];
/**
* A list of resources, currently only projects in the form
* `projects/<projectnumber>`, that match this to stanza. A request matches
* if it contains a resource in this list. If * is specified for resources,
* then this `EgressTo` rule will authorize access to all resources outside
* the perimeter.
*/
resources?: string[];
/**
* A list of IAM roles that represent the set of operations that the sources
* specified in the corresponding `EgressFrom`
* are allowed to perform.
*/
roles?: string[];
}
interface ServicePerimeterDryRunEgressPolicyEgressToOperation {
/**
* API methods or permissions to allow. Method or permission must belong
* to the service specified by `serviceName` field. A single MethodSelector
* entry with `*` specified for the `method` field will allow all methods
* AND permissions for the service specified in `serviceName`.
* Structure is documented below.
*/
methodSelectors?: outputs.accesscontextmanager.ServicePerimeterDryRunEgressPolicyEgressToOperationMethodSelector[];
/**
* The name of the API whose methods or permissions the `IngressPolicy` or
* `EgressPolicy` want to allow. A single `ApiOperation` with serviceName
* field set to `*` will allow all methods AND permissions for all services.
*/
serviceName?: string;
}
interface ServicePerimeterDryRunEgressPolicyEgressToOperationMethodSelector {
/**
* Value for `method` should be a valid method name for the corresponding
* `serviceName` in `ApiOperation`. If `*` used as value for method,
* then ALL methods and permissions are allowed.
*/
method?: string;
/**
* Value for permission should be a valid Cloud IAM permission for the
* corresponding `serviceName` in `ApiOperation`.
*/
permission?: string;
}
interface ServicePerimeterDryRunIngressPolicyIngressFrom {
/**
* Identities can be an individual user, service account, Google group,
* or third-party identity. For third-party identity, only single identities
* are supported and other identity types are not supported.The v1 identities
* that have the prefix user, group and serviceAccount in
* https://cloud.google.com/iam/docs/principal-identifiers#v1 are supported.
*/
identities?: string[];
/**
* Specifies the type of identities that are allowed access from outside the
* perimeter. If left unspecified, then members of `identities` field will be
* allowed access.
* Possible values are: `ANY_IDENTITY`, `ANY_USER_ACCOUNT`, `ANY_SERVICE_ACCOUNT`.
*/
identityType?: string;
/**
* Sources that this `IngressPolicy` authorizes access from.
* Structure is documented below.
*/
sources?: outputs.accesscontextmanager.ServicePerimeterDryRunIngressPolicyIngressFromSource[];
}
interface ServicePerimeterDryRunIngressPolicyIngressFromSource {
/**
* An `AccessLevel` resource name that allow resources within the
* `ServicePerimeters` to be accessed from the internet. `AccessLevels` listed
* must be in the same policy as this `ServicePerimeter`. Referencing a nonexistent
* `AccessLevel` will cause an error. If no `AccessLevel` names are listed,
* resources within the perimeter can only be accessed via Google Cloud calls
* with request origins within the perimeter.
* Example `accessPolicies/MY_POLICY/accessLevels/MY_LEVEL.`
* If * is specified, then all IngressSources will be allowed.
*/
accessLevel?: string;
/**
* A Google Cloud resource that is allowed to ingress the perimeter.
* Requests from these resources will be allowed to access perimeter data.
* Currently only projects are allowed. Format `projects/{project_number}`
* The project may be in any Google Cloud organization, not just the
* organization that the perimeter is defined in. `*` is not allowed, the case
* of allowing all Google Cloud resources only is not supported.
*/
resource?: string;
}
interface ServicePerimeterDryRunIngressPolicyIngressTo {
/**
* A list of `ApiOperations` the sources specified in corresponding `IngressFrom`
* are allowed to perform in this `ServicePerimeter`.
* Structure is documented below.
*/
operations?: outputs.accesscontextmanager.ServicePerimeterDryRunIngressPolicyIngressToOperation[];
/**
* A list of resources, currently only projects in the form
* `projects/<projectnumber>`, protected by this `ServicePerimeter`
* that are allowed to be accessed by sources defined in the
* corresponding `IngressFrom`. A request matches if it contains
* a resource in this list. If `*` is specified for resources,
* then this `IngressTo` rule will authorize access to all
* resources inside the perimeter, provided that the request
* also matches the `operations` field.
*/
resources?: string[];
/**
* A list of IAM roles that represent the set of operations that the sources
* specified in the corresponding `IngressFrom`
* are allowed to perform.
*/
roles?: string[];
}
interface ServicePerimeterDryRunIngressPolicyIngressToOperation {
/**
* API methods or permissions to allow. Method or permission must belong to
* the service specified by serviceName field. A single `MethodSelector` entry
* with `*` specified for the method field will allow all methods AND
* permissions for the service specified in `serviceName`.
* Structure is documented below.
*/
methodSelectors?: outputs.accesscontextmanager.ServicePerimeterDryRunIngressPolicyIngressToOperationMethodSelector[];
/**
* The name of the API whose methods or permissions the `IngressPolicy` or
* `EgressPolicy` want to allow. A single `ApiOperation` with `serviceName`
* field set to `*` will allow all methods AND permissions for all services.
*/
serviceName?: string;
}
interface ServicePerimeterDryRunIngressPolicyIngressToOperationMethodSelector {
/**
* Value for method should be a valid method name for the corresponding
* serviceName in `ApiOperation`. If `*` used as value for `method`, then
* ALL methods and permissions are allowed.
*/
method?: string;
/**
* Value for permission should be a valid Cloud IAM permission for the
* corresponding `serviceName` in `ApiOperation`.
*/
permission?: string;
}
interface ServicePerimeterEgressPolicyEgressFrom {
/**
* Identities can be an individual user, service account, Google group,
* or third-party identity. For third-party identity, only single identities
* are supported and other identity types are not supported.The v1 identities
* that have the prefix user, group and serviceAccount in
* https://cloud.google.com/iam/docs/principal-identifiers#v1 are supported.
*/
identities?: string[];
/**
* Specifies the type of identities that are allowed access to outside the
* perimeter. If left unspecified, then members of `identities` field will
* be allowed access.
* Possible values are: `ANY_IDENTITY`, `ANY_USER_ACCOUNT`, `ANY_SERVICE_ACCOUNT`.
*/
identityType?: string;
/**
* Whether to enforce traffic restrictions based on `sources` field. If the `sources` field is non-empty, then this field must be set to `SOURCE_RESTRICTION_ENABLED`.
* Possible values are: `SOURCE_RESTRICTION_UNSPECIFIED`, `SOURCE_RESTRICTION_ENABLED`, `SOURCE_RESTRICTION_DISABLED`.
*/
sourceRestriction?: string;
/**
* Sources that this EgressPolicy authorizes access from.
* Structure is documented below.
*/
sources?: outputs.accesscontextmanager.ServicePerimeterEgressPolicyEgressFromSource[];
}
interface ServicePerimeterEgressPolicyEgressFromSource {
/**
* An AccessLevel resource name that allows resources outside the ServicePerimeter to be accessed from the inside.
*/
accessLevel?: string;
/**
* A Google Cloud resource that is allowed to egress the perimeter.
* Requests from these resources are allowed to access data outside the perimeter.
* Currently only projects are allowed. Project format: `projects/{project_number}`.
* The resource may be in any Google Cloud organization, not just the
* organization that the perimeter is defined in. `*` is not allowed, the
* case of allowing all Google Cloud resources only is not supported.
*/
resource?: string;
}
interface ServicePerimeterEgressPolicyEgressTo {
/**
* A list of external resources that are allowed to be accessed. A request
* matches if it contains an external resource in this list (Example:
* s3://bucket/path). Currently '*' is not allowed.
*/
externalResources?: string[];
/**
* A list of `ApiOperations` that this egress rule applies to. A request matches
* if it contains an operation/service in this list.
* Structure is documented below.
*/
operations?: outputs.accesscontextmanager.ServicePerimeterEgressPolicyEgressToOperation[];
/**
* A list of resources, currently only projects in the form
* `projects/<projectnumber>`, that match this to stanza. A request matches
* if it contains a resource in this list. If * is specified for resources,
* then this `EgressTo` rule will authorize access to all resources outside
* the perimeter.
*/
resources?: string[];
/**
* A list of IAM roles that represent the set of operations that the sources
* specified in the corresponding `EgressFrom`
* are allowed to perform.
*/
roles?: string[];
}
interface ServicePerimeterEgressPolicyEgressToOperation {
/**
* API methods or permissions to allow. Method or permission must belong
* to the service specified by `serviceName` field. A single MethodSelector
* entry with `*` specified for the `method` field will allow all methods
* AND permissions for the service specified in `serviceName`.
* Structure is documented below.
*/
methodSelectors?: outputs.accesscontextmanager.ServicePerimeterEgressPolicyEgressToOperationMethodSelector[];
/**
* The name of the API whose methods or permissions the `IngressPolicy` or
* `EgressPolicy` want to allow. A single `ApiOperation` with serviceName
* field set to `*` will allow all methods AND permissions for all services.
*/
serviceName?: string;
}
interface ServicePerimeterEgressPolicyEgressToOperationMethodSelector {
/**
* Value for `method` should be a valid method name for the corresponding
* `serviceName` in `ApiOperation`. If `*` used as value for method,
* then ALL methods and permissions are allowed.
*/
method?: string;
/**
* Value for permission should be a valid Cloud IAM permission for the
* corresponding `serviceName` in `ApiOperation`.
*/
permission?: string;
}
interface ServicePerimeterIngressPolicyIngressFrom {
/**
* Identities can be an individual user, service account, Google group,
* or third-party identity. For third-party identity, only single identities
* are supported and other identity types are not supported.The v1 identities
* that have the prefix user, group and serviceAccount in
* https://cloud.google.com/iam/docs/principal-identifiers#v1 are supported.
*/
identities?: string[];
/**
* Specifies the type of identities that are allowed access from outside the
* perimeter. If left unspecified, then members of `identities` field will be
* allowed access.
* Possible values are: `ANY_IDENTITY`, `ANY_USER_ACCOUNT`, `ANY_SERVICE_ACCOUNT`.
*/
identityType?: string;
/**
* Sources that this `IngressPolicy` authorizes access from.
* Structure is documented below.
*/
sources?: outputs.accesscontextmanager.ServicePerimeterIngressPolicyIngressFromSource[];
}
interface ServicePerimeterIngressPolicyIngressFromSource {
/**
* An `AccessLevel` resource name that allow resources within the
* `ServicePerimeters` to be accessed from the internet. `AccessLevels` listed
* must be in the same policy as this `ServicePerimeter`. Referencing a nonexistent
* `AccessLevel` will cause an error. If no `AccessLevel` names are listed,
* resources within the perimeter can only be accessed via Google Cloud calls
* with request origins within the perimeter.
* Example `accessPolicies/MY_POLICY/accessLevels/MY_LEVEL.`
* If * is specified, then all IngressSources will be allowed.
*/
accessLevel?: string;
/**
* A Google Cloud resource that is allowed to ingress the perimeter.
* Requests from these resources will be allowed to access perimeter data.
* Currently only projects and VPCs are allowed.
* Project format: `projects/{projectNumber}`
* VPC network format:
* `//compute.googleapis.com/projects/{PROJECT_ID}/global/networks/{NAME}`.
* The project may be in any Google Cloud organization, not just the
* organization that the perimeter is defined in. `*` is not allowed, the case
* of allowing all Google Cloud resources only is not supported.
*/
resource?: string;
}
interface ServicePerimeterIngressPolicyIngressTo {
/**
* A list of `ApiOperations` the sources specified in corresponding `IngressFrom`
* are allowed to perform in this `ServicePerimeter`.
* Structure is documented below.
*/
operations?: outputs.accesscontextmanager.ServicePerimeterIngressPolicyIngressToOperation[];
/**
* A list of resources, currently only projects in the form
* `projects/<projectnumber>`, protected by this `ServicePerimeter`
* that are allowed to be accessed by sources defined in the
* corresponding `IngressFrom`. A request matches if it contains
* a resource in this list. If `*` is specified for resources,
* then this `IngressTo` rule will authorize access to all
* resources inside the perimeter, provided that the request
* also matches the `operations` field.
*/
resources?: string[];
/**
* A list of IAM roles that represent the set of operations that the sources
* specified in the corresponding `IngressFrom`
* are allowed to perform.
*/
roles?: string[];
}
interface ServicePerimeterIngressPolicyIngressToOperation {
/**
* API methods or permissions to allow. Method or permission must belong to
* the service specified by serviceName field. A single `MethodSelector` entry
* with `*` specified for the method field will allow all methods AND
* permissions for the service specified in `serviceName`.
* Structure is documented below.
*/
methodSelectors?: outputs.accesscontextmanager.ServicePerimeterIngressPolicyIngressToOperationMethodSelector[];
/**
* The name of the API whose methods or permissions the `IngressPolicy` or
* `EgressPolicy` want to allow. A single `ApiOperation` with `serviceName`
* field set to `*` will allow all methods AND permissions for all services.
*/
serviceName?: string;
}
interface ServicePerimeterIngressPolicyIngressToOperationMethodSelector {
/**
* Value for method should be a valid method name for the corresponding
* serviceName in `ApiOperation`. If `*` used as value for `method`, then
* ALL methods and permissions are allowed.
*/
method?: string;
/**
* Value for permission should be a valid Cloud IAM permission for the
* corresponding `serviceName` in `ApiOperation`.
*/
permission?: string;
}
interface ServicePerimeterSpec {
/**
* A list of AccessLevel resource names that allow resources within
* the ServicePerimeter to be accessed from the internet.
* AccessLevels listed must be in the same policy as this
* ServicePerimeter. Referencing a nonexistent AccessLevel is a
* syntax error. If no AccessLevel names are listed, resources within
* the perimeter can only be accessed via GCP calls with request
* origins within the perimeter. For Service Perimeter Bridge, must
* be empty.
* Format: accessPolicies/{policy_id}/accessLevels/{access_level_name}
*/
accessLevels?: string[];
/**
* List of EgressPolicies to apply to the perimeter. A perimeter may
* have multiple EgressPolicies, each of which is evaluated separately.
* Access is granted if any EgressPolicy grants it. Must be empty for
* a perimeter bridge.
* Structure is documented below.
*/
egressPolicies?: outputs.accesscontextmanager.ServicePerimeterSpecEgressPolicy[];
/**
* List of `IngressPolicies` to apply to the perimeter. A perimeter may
* have multiple `IngressPolicies`, each of which is evaluated
* separately. Access is granted if any `Ingress Policy` grants it.
* Must be empty for a perimeter bridge.
* Structure is documented below.
*/
ingressPolicies?: outputs.accesscontextmanager.ServicePerimeterSpecIngressPolicy[];
/**
* A list of GCP resources that are inside of the service perimeter.
* Currently only projects are allowed.
* Format: projects/{project_number}
*/
resources?: string[];
/**
* GCP services that are subject to the Service Perimeter
* restrictions. Must contain a list of services. For example, if
* `storage.googleapis.com` is specified, access to the storage
* buckets inside the perimeter must meet the perimeter's access
* restrictions.
*/
restrictedServices?: string[];
/**
* Specifies how APIs are allowed to communicate within the Service
* Perimeter.
* Structure is documented below.
*/
vpcAccessibleServices?: outputs.accesscontextmanager.ServicePerimeterSpecVpcAccessibleServices;
}
interface ServicePerimeterSpecEgressPolicy {
/**
* Defines conditions on the source of a request causing this `EgressPolicy` to apply.
* Structure is documented below.
*/
egressFrom?: outputs.accesscontextmanager.ServicePerimeterSpecEgressPolicyEgressFrom;
/**
* Defines the conditions on the `ApiOperation` and destination resources that
* cause this `EgressPolicy` to apply.
* Structure is documented below.
*/
egressTo?: outputs.accesscontextmanager.ServicePerimeterSpecEgressPolicyEgressTo;
/**
* Human readable title. Must be unique within the perimeter. Does not affect behavior.
*/
title?: string;
}
interface ServicePerimeterSpecEgressPolicyEgressFrom {
/**
* A list of identities that are allowed access through this `EgressPolicy`.
* Should be in the format of email address. The email address should
* represent individual user or service account only.
*/
identities?: string[];
/**
* Specifies the type of identities that are allowed access to outside the
* perimeter. If left unspecified, then members of `identities` field will
* be allowed access.
* Possible values are: `IDENTITY_TYPE_UNSPECIFIED`, `ANY_IDENTITY`, `ANY_USER_ACCOUNT`, `ANY_SERVICE_ACCOUNT`.
*/
identityType?: string;
/**
* Whether to enforce traffic restrictions based on `sources` field. If the `sources` field is non-empty, then this field must be set to `SOURCE_RESTRICTION_ENABLED`.
* Possible values are: `SOURCE_RESTRICTION_UNSPECIFIED`, `SOURCE_RESTRICTION_ENABLED`, `SOURCE_RESTRICTION_DISABLED`.
*/
sourceRestriction?: string;
/**
* Sources that this EgressPolicy authorizes access from.
* Structure is documented below.
*/
sources?: outputs.accesscontextmanager.ServicePerimeterSpecEgressPolicyEgressFromSource[];
}
interface ServicePerimeterSpecEgressPolicyEgressFromSource {
/**
* An AccessLevel resource name that allows resources outside the ServicePerimeter to be accessed from the inside.
*/
accessLevel?: string;
/**
* A Google Cloud resource that is allowed to egress the perimeter.
* Requests from these resources are allowed to access data outside the perimeter.
* Currently only projects are allowed. Project format: `projects/{project_number}`.
* The resource may be in any Google Cloud organization, not just the
* organization that the perimeter is defined in. `*` is not allowed, the
* case of allowing all Google Cloud resources only is not supported.
*/
resource?: string;
}
interface ServicePerimeterSpecEgressPolicyEgressTo {
/**
* A list of external resources that are allowed to be accessed. A request
* matches if it contains an external resource in this list (Example:
* s3://bucket/path). Currently '*' is not allowed.
*/
externalResources?: string[];
/**
* A list of `ApiOperations` that this egress rule applies to. A request matches
* if it contains an operation/service in this list.
* Structure is documented below.
*/
operations?: outputs.accesscontextmanager.ServicePerimeterSpecEgressPolicyEgressToOperation[];
/**
* A list of resources, currently only projects in the form
* `projects/<projectnumber>`, that match this to stanza. A request matches
* if it contains a resource in this list. If * is specified for resources,
* then this `EgressTo` rule will authorize access to all resources outside
* the perimeter.
*/
resources?: string[];
/**
* A list of IAM roles that represent the set of operations that the sources
* specified in the corresponding `EgressFrom`
* are allowed to perform.
*/
roles?: string[];
}
interface ServicePerimeterSpecEgressPolicyEgressToOperation {
/**
* API methods or permissions to allow. Method or permission must belong
* to the service specified by `serviceName` field. A single MethodSelector
* entry with `*` specified for the `method` field will allow all methods
* AND permissions for the service specified in `serviceName`.
* Structure is documented below.
*/
methodSelectors?: outputs.accesscontextmanager.ServicePerimeterSpecEgressPolicyEgressToOperationMethodSelector[];
/**
* The name of the API whose methods or permissions the `IngressPolicy` or
* `EgressPolicy` want to allow. A single `ApiOperation` with serviceName
* field set to `*` will allow all methods AND permissions for all services.
*/
serviceName?: string;
}
interface ServicePerimeterSpecEgressPolicyEgressToOperationMethodSelector {
/**
* Value for `method` should be a valid method name for the corresponding
* `serviceName` in `ApiOperation`. If `*` used as value for method,
* then ALL methods and permissions are allowed.
*/
method?: string;
/**
* Value for permission should be a valid Cloud IAM permission for the
* corresponding `serviceName` in `ApiOperation`.
*/
permission?: string;
}
interface ServicePerimeterSpecIngressPolicy {
/**
* Defines the conditions on the source of a request causing this `IngressPolicy`
* to apply.
* Structure is documented below.
*/
ingressFrom?: outputs.accesscontextmanager.ServicePerimeterSpecIngressPolicyIngressFrom;
/**
* Defines the conditions on the `ApiOperation` and request destination that cause
* this `IngressPolicy` to apply.
* Structure is documented below.
*/
ingressTo?: outputs.accesscontextmanager.ServicePerimeterSpecIngressPolicyIngressTo;
/**
* Human readable title. Must be unique within the perimeter. Does not affect behavior.
*/
title?: string;
}
interface ServicePerimeterSpecIngressPolicyIngressFrom {
/**
* A list of identities that are allowed access through this ingress policy.
* Should be in the format of email address. The email address should represent
* individual user or service account only.
*/
identities?: string[];
/**
* Specifies the type of identities that are allowed access from outside the
* perimeter. If left unspecified, then members of `identities` field will be
* allowed access.
* Possible values are: `IDENTITY_TYPE_UNSPECIFIED`, `ANY_IDENTITY`, `ANY_USER_ACCOUNT`, `ANY_SERVICE_ACCOUNT`.
*/
identityType?: string;
/**
* Sources that this `IngressPolicy` authorizes access from.
* Structure is documented below.
*/
sources?: outputs.accesscontextmanager.ServicePerimeterSpecIngressPolicyIngressFromSource[];
}
interface ServicePerimeterSpecIngressPolicyIngressFromSource {
/**
* An AccessLevel resource name that allows resources outside the ServicePerimeter to be accessed from the inside.
*/
accessLevel?: string;
/**
* A Google Cloud resource that is allowed to egress the perimeter.
* Requests from these resources are allowed to access data outside the perimeter.
* Currently only projects are allowed. Project format: `projects/{project_number}`.
* The resource may be in any Google Cloud organization, not just the
* organization that the perimeter is defined in. `*` is not allowed, the
* case of allowing all Google Cloud resources only is not supported.
*/
resource?: string;
}
interface ServicePerimeterSpecIngressPolicyIngressTo {
/**
* A list of `ApiOperations` the sources specified in corresponding `IngressFrom`
* are allowed to perform in this `ServicePerimeter`.
* Structure is documented below.
*/
operations?: outputs.accesscontextmanager.ServicePerimeterSpecIngressPolicyIngressToOperation[];
/**
* A list of resources, currently only projects in the form
* `projects/<projectnumber>`, protected by this `ServicePerimeter`
* that are allowed to be accessed by sources defined in the
* corresponding `IngressFrom`. A req