@ -38,16 +38,20 @@ option (google.api.resource_definition) = {
pattern : "projects/{project}/iap_tunnel/locations/{location}"
} ;
/ / The Cloud Identity - Aware Proxy API.
/ / APIs for Identity - Aware Proxy Admin configurations.
service IdentityAwareProxyAdminService {
option ( google.api.default_host ) = "iap.googleapis.com" ;
option ( google.api.oauth_scopes ) = "https://www.googleapis.com/auth/cloud-platform" ;
option ( google.api.oauth_scopes ) =
"https://www.googleapis.com/auth/cloud-platform" ;
/ / Sets the access control policy for an Identity - Aware Proxy protected
/ / resource. Replaces any existing policy.
/ / More information about managing access via IAP can be found at :
/ / https : / / cloud.google.com / iap / docs / managing - access # managing_access_via_the_api
rpc SetIamPolicy ( google.iam.v1.SetIamPolicyRequest ) returns ( google.iam.v1.Policy ) {
rpc SetIamPolicy ( google.iam.v1.SetIamPolicyRequest )
returns ( google.iam.v1.Policy ) {
option ( google.api.http ) = {
post : "/v1/{resource=**}:setIamPolicy"
body : "*"
@ -58,7 +62,8 @@ service IdentityAwareProxyAdminService {
/ / resource.
/ / More information about managing access via IAP can be found at :
/ / https : / / cloud.google.com / iap / docs / managing - access # managing_access_via_the_api
rpc GetIamPolicy ( google.iam.v1.GetIamPolicyRequest ) returns ( google.iam.v1.Policy ) {
rpc GetIamPolicy ( google.iam.v1.GetIamPolicyRequest )
returns ( google.iam.v1.Policy ) {
option ( google.api.http ) = {
post : "/v1/{resource=**}:getIamPolicy"
body : "*"
@ -69,7 +74,8 @@ service IdentityAwareProxyAdminService {
/ / resource.
/ / More information about managing access via IAP can be found at :
/ / https : / / cloud.google.com / iap / docs / managing - access # managing_access_via_the_api
rpc TestIamPermissions ( google.iam.v1.TestIamPermissionsRequest ) returns ( google.iam.v1.TestIamPermissionsResponse ) {
rpc TestIamPermissions ( google.iam.v1.TestIamPermissionsRequest )
returns ( google.iam.v1.TestIamPermissionsResponse ) {
option ( google.api.http ) = {
post : "/v1/{resource=**}:testIamPermissions"
body : "*"
@ -95,7 +101,8 @@ service IdentityAwareProxyAdminService {
/ / Lists the existing TunnelDestGroups. To group across all locations , use a
/ / ` - ` as the location ID. For example :
/ / ` / v1 / projects / 123 / iap_tunnel / locations / - / destGroups `
rpc ListTunnelDestGroups ( ListTunnelDestGroupsRequest ) returns ( ListTunnelDestGroupsResponse ) {
rpc ListTunnelDestGroups ( ListTunnelDestGroupsRequest )
returns ( ListTunnelDestGroupsResponse ) {
option ( google.api.http ) = {
get : "/v1/{parent=projects/*/iap_tunnel/locations/*}/destGroups"
} ;
@ -103,12 +110,14 @@ service IdentityAwareProxyAdminService {
}
/ / Creates a new TunnelDestGroup.
rpc CreateTunnelDestGroup ( CreateTunnelDestGroupRequest ) returns ( TunnelDestGroup ) {
rpc CreateTunnelDestGroup ( CreateTunnelDestGroupRequest )
returns ( TunnelDestGroup ) {
option ( google.api.http ) = {
post : "/v1/{parent=projects/*/iap_tunnel/locations/*}/destGroups"
body : "tunnel_dest_group"
} ;
option ( google.api.method_signature ) = "parent,tunnel_dest_group,tunnel_dest_group_id" ;
option ( google.api.method_signature ) =
"parent,tunnel_dest_group,tunnel_dest_group_id" ;
}
/ / Retrieves an existing TunnelDestGroup.
@ -120,7 +129,8 @@ service IdentityAwareProxyAdminService {
}
/ / Deletes a TunnelDestGroup.
rpc DeleteTunnelDestGroup ( DeleteTunnelDestGroupRequest ) returns ( google.protobuf.Empty ) {
rpc DeleteTunnelDestGroup ( DeleteTunnelDestGroupRequest )
returns ( google.protobuf.Empty ) {
option ( google.api.http ) = {
delete : "/v1/{name=projects/*/iap_tunnel/locations/*/destGroups/*}"
} ;
@ -128,7 +138,8 @@ service IdentityAwareProxyAdminService {
}
/ / Updates a TunnelDestGroup.
rpc UpdateTunnelDestGroup ( UpdateTunnelDestGroupRequest ) returns ( TunnelDestGroup ) {
rpc UpdateTunnelDestGroup ( UpdateTunnelDestGroupRequest )
returns ( TunnelDestGroup ) {
option ( google.api.http ) = {
patch : "/v1/{tunnel_dest_group.name=projects/*/iap_tunnel/locations/*/destGroups/*}"
body : "tunnel_dest_group"
@ -188,13 +199,14 @@ message CreateTunnelDestGroupRequest {
] ;
/ / Required. The TunnelDestGroup to create.
TunnelDestGroup tunnel_dest_group = 2 [ ( google.api.field_behavior ) = REQUIRED ] ;
TunnelDestGroup tunnel_dest_group = 2
[ ( google.api.field_behavior ) = REQUIRED ] ;
/ / Required. The ID to use for the TunnelDestGroup , which becomes the final component of
/ / the resource name.
/ / Required. The ID to use for the TunnelDestGroup , which becomes the final
/ / component of the resource name.
/ /
/ / This value must be 4 - 63 characters , and valid characters
/ / are ` [ a - z ] [ 0 - 9 ] - ` .
/ / are ` [ a - z ] - ` .
string tunnel_dest_group_id = 3 [ ( google.api.field_behavior ) = REQUIRED ] ;
}
@ -227,7 +239,8 @@ message DeleteTunnelDestGroupRequest {
/ / The request to UpdateTunnelDestGroup.
message UpdateTunnelDestGroupRequest {
/ / Required. The new values for the TunnelDestGroup.
TunnelDestGroup tunnel_dest_group = 1 [ ( google.api.field_behavior ) = REQUIRED ] ;
TunnelDestGroup tunnel_dest_group = 1
[ ( google.api.field_behavior ) = REQUIRED ] ;
/ / A field mask that specifies which IAP settings to update.
/ / If omitted , then all of the settings are updated. See
@ -242,100 +255,21 @@ message TunnelDestGroup {
pattern : "projects/{project}/iap_tunnel/locations/{location}/destGroups/{dest_group}"
} ;
/ / Required. Immutable. Identifier for the TunnelDestGroup. Must be unique within the
/ / project.
/ / Required. Immutable. Identifier for the TunnelDestGroup. Must be unique
/ / within the project and contain only lower case letters ( a - z ) and dashes
/ / ( - ) .
string name = 1 [
( google.api.field_behavior ) = REQUIRED ,
( google.api.field_behavior ) = IMMUTABLE
] ;
/ / null List of CIDRs that this group applies to .
/ / Unordered list. List of CIDRs that this group applies to .
repeated string cidrs = 2 [ ( google.api.field_behavior ) = UNORDERED_LIST ] ;
/ / null List of FQDNs that this group applies to .
/ / Unordered list. List of FQDNs that this group applies to .
repeated string fqdns = 3 [ ( google.api.field_behavior ) = UNORDERED_LIST ] ;
}
/ / API to programmatically create , list and retrieve Identity Aware Proxy ( IAP )
/ / OAuth brands ; and create , retrieve , delete and reset - secret of IAP OAuth
/ / clients.
service IdentityAwareProxyOAuthService {
option ( google.api.default_host ) = "iap.googleapis.com" ;
option ( google.api.oauth_scopes ) = "https://www.googleapis.com/auth/cloud-platform" ;
/ / Lists the existing brands for the project.
rpc ListBrands ( ListBrandsRequest ) returns ( ListBrandsResponse ) {
option ( google.api.http ) = {
get : "/v1/{parent=projects/*}/brands"
} ;
}
/ / Constructs a new OAuth brand for the project if one does not exist.
/ / The created brand is "internal only" , meaning that OAuth clients created
/ / under it only accept requests from users who belong to the same Google
/ / Workspace organization as the project. The brand is created in an
/ / un - reviewed status. NOTE : The "internal only" status can be manually
/ / changed in the Google Cloud Console. Requires that a brand does not already
/ / exist for the project , and that the specified support email is owned by the
/ / caller.
rpc CreateBrand ( CreateBrandRequest ) returns ( Brand ) {
option ( google.api.http ) = {
post : "/v1/{parent=projects/*}/brands"
body : "brand"
} ;
}
/ / Retrieves the OAuth brand of the project.
rpc GetBrand ( GetBrandRequest ) returns ( Brand ) {
option ( google.api.http ) = {
get : "/v1/{name=projects/*/brands/*}"
} ;
}
/ / Creates an Identity Aware Proxy ( IAP ) OAuth client. The client is owned
/ / by IAP. Requires that the brand for the project exists and that it is
/ / set for internal - only use.
rpc CreateIdentityAwareProxyClient ( CreateIdentityAwareProxyClientRequest ) returns ( IdentityAwareProxyClient ) {
option ( google.api.http ) = {
post : "/v1/{parent=projects/*/brands/*}/identityAwareProxyClients"
body : "identity_aware_proxy_client"
} ;
}
/ / Lists the existing clients for the brand.
rpc ListIdentityAwareProxyClients ( ListIdentityAwareProxyClientsRequest ) returns ( ListIdentityAwareProxyClientsResponse ) {
option ( google.api.http ) = {
get : "/v1/{parent=projects/*/brands/*}/identityAwareProxyClients"
} ;
}
/ / Retrieves an Identity Aware Proxy ( IAP ) OAuth client.
/ / Requires that the client is owned by IAP.
rpc GetIdentityAwareProxyClient ( GetIdentityAwareProxyClientRequest ) returns ( IdentityAwareProxyClient ) {
option ( google.api.http ) = {
get : "/v1/{name=projects/*/brands/*/identityAwareProxyClients/*}"
} ;
}
/ / Resets an Identity Aware Proxy ( IAP ) OAuth client secret. Useful if the
/ / secret was compromised. Requires that the client is owned by IAP.
rpc ResetIdentityAwareProxyClientSecret ( ResetIdentityAwareProxyClientSecretRequest ) returns ( IdentityAwareProxyClient ) {
option ( google.api.http ) = {
post : "/v1/{name=projects/*/brands/*/identityAwareProxyClients/*}:resetSecret"
body : "*"
} ;
}
/ / Deletes an Identity Aware Proxy ( IAP ) OAuth client. Useful for removing
/ / obsolete clients , managing the number of clients in a given project , and
/ / cleaning up after tests. Requires that the client is owned by IAP.
rpc DeleteIdentityAwareProxyClient ( DeleteIdentityAwareProxyClientRequest ) returns ( google.protobuf.Empty ) {
option ( google.api.http ) = {
delete : "/v1/{name=projects/*/brands/*/identityAwareProxyClients/*}"
} ;
}
}
/ / The request sent to GetIapSettings.
message GetIapSettingsRequest {
/ / Required. The resource name for which to retrieve the settings.
@ -382,6 +316,9 @@ message AccessSettings {
/ / Settings to configure reauthentication policies in IAP.
ReauthSettings reauth_settings = 6 ;
/ / Settings to configure and enable allowed domains.
AllowedDomainsSettings allowed_domains_settings = 7 ;
}
/ / Allows customers to configure tenant_id for GCIP instance per - app.
@ -426,15 +363,11 @@ message ReauthSettings {
/ / Reauthentication disabled.
METHOD_UNSPECIFIED = 0 ;
/ / Mimics the behavior as if the user had logged out and tried to log in
/ / again. Users with 2 SV ( 2 - step verification ) enabled see their 2 SV
/ / challenges if they did not opt to have their second factor responses
/ / saved. Apps Core ( GSuites ) admins can configure settings to disable 2 SV
/ / cookies and require 2 SV for all Apps Core users in their domains.
/ / Prompts the user to log in again.
LOGIN = 1 ;
/ / User must type their password .
PASSWORD = 2 ;
/ / Deprecated , no longer accepted by IAP APIs.
PASSWORD = 2 [ deprecated = true ] ;
/ / User must use their secure key 2 nd factor device.
SECURE_KEY = 3 ;
@ -453,7 +386,7 @@ message ReauthSettings {
DEFAULT = 2 ;
}
/ / Reauth method required by the policy .
/ / Reauth method requested .
Method method = 1 ;
/ / Reauth session lifetime , how long before a user has to reauthenticate
@ -465,9 +398,19 @@ message ReauthSettings {
PolicyType policy_type = 3 ;
}
/ / Configuration for IAP allowed domains. Lets you to restrict access to an app
/ / and allow access to only the domains that you list.
message AllowedDomainsSettings {
/ / Configuration for customers to opt in for the feature.
optional bool enable = 1 ;
/ / List of trusted domains.
repeated string domains = 2 ;
}
/ / Wrapper over application specific settings for IAP.
message ApplicationSettings {
/ / Settings to configure IAP ' s behavior for a CSM mesh.
/ / Settings to configure IAP ' s behavior for a service mesh .
CsmSettings csm_settings = 1 ;
/ / Customization for Access Denied page.
@ -476,12 +419,15 @@ message ApplicationSettings {
/ / The Domain value to set for cookies generated by IAP. This value is not
/ / validated by the API , but will be ignored at runtime if invalid.
google.protobuf.StringValue cookie_domain = 3 ;
/ / Settings to configure attribute propagation.
AttributePropagationSettings attribute_propagation_settings = 4 ;
}
/ / Configuration for RCTokens generated for CSM workloads protected by IAP.
/ / RCTokens are IAP generated JWTs that can be verified at the application. The
/ / RCToken is primarily used for ISTIO deployments , and can be scoped to a
/ / single mesh by configuring the audience field accordingly
/ / Configuration for RCToken generated for service mesh workloads protected by
/ / IAP. RCToken are IAP generated JWTs that can be verified at the application.
/ / The RCToken is primarily used for service mesh deployments , and can be scoped
/ / to a single mesh by configuring the audience field accordingly.
message CsmSettings {
/ / Audience claim set in the generated RCToken. This value is not validated by
/ / IAP.
@ -499,6 +445,154 @@ message AccessDeniedPageSettings {
/ / Whether to generate a troubleshooting URL on access denied events to this
/ / application.
google.protobuf.BoolValue generate_troubleshooting_uri = 2 ;
/ / Whether to generate remediation token on access denied events to this
/ / application.
optional google.protobuf.BoolValue remediation_token_generation_enabled = 3 ;
}
/ / Configuration for propagating attributes to applications protected
/ / by IAP.
message AttributePropagationSettings {
/ / Supported output credentials for attribute propagation. Each output
/ / credential maps to a "field" in the response. For example , selecting JWT
/ / will propagate all attributes in the IAP JWT , header in the headers , etc.
enum OutputCredentials {
/ / No output credential. This is an unsupported default .
OUTPUT_CREDENTIALS_UNSPECIFIED = 0 ;
/ / Propagate attributes in the headers with "x-goog-iap-attr-" prefix.
HEADER = 1 ;
/ / Propagate attributes in the JWT of the form : ` "additional_claims" : {
/ / "my_attribute" : [ "value1" , "value2" ] } `
JWT = 2 ;
/ / Propagate attributes in the RCToken of the form : ` "additional_claims" : {
/ / "my_attribute" : [ "value1" , "value2" ] } `
RCTOKEN = 3 ;
}
/ / Raw string CEL expression. Must return a list of attributes. Maximum of 45
/ / attributes can be selected. Expressions can select different attribute
/ / types from ` attributes ` : ` attributes.saml_attributes ` ,
/ / ` attributes.iap_attributes ` . Limited functions are supported :
/ / - ` filter : < list > . filter ( < iter_var > , < predicate > ) ` - > returns a subset of
/ / ` < list > ` where ` < predicate > ` is true for every item.
/ / - ` in : < var > in < list > ` - > returns true if ` < list > ` contains ` < var > `
/ / - ` selectByName : < list > . selectByName ( < string > ) ` - > returns the attribute
/ / in
/ / ` < list > ` with the given ` < string > ` name , otherwise returns empty.
/ / - ` emitAs : < attribute > . emitAs ( < string > ) ` - > sets the ` < attribute > ` name
/ / field to the given ` < string > ` for propagation in selected output
/ / credentials.
/ / - ` strict : < attribute > . strict ( ) ` - > ignore the ` x - goog - iap - attr - ` prefix
/ / for the provided ` < attribute > ` when propagating via the ` HEADER ` output
/ / credential , i.e. request headers.
/ / - ` append : < target_list > . append ( < attribute > ) ` OR
/ / ` < target_list > . append ( < list > ) ` - > append the provided ` < attribute > ` or
/ / ` < list > ` onto the end of ` < target_list > ` .
/ /
/ / Example expression : ` attributes.saml_attributes.filter ( x , x.name in
/ / [ 'test' ] ) . append ( attributes.iap_attributes.selectByName ( 'exact' ) . emitAs ( 'custom' ) . strict ( ) ) `
optional string expression = 1 ;
/ / Which output credentials attributes selected by the CEL expression should
/ / be propagated in. All attributes will be fully duplicated in each selected
/ / output credential.
repeated OutputCredentials output_credentials = 2 ;
/ / Whether the provided attribute propagation settings should be evaluated on
/ / user requests. If set to true , attributes returned from the expression will
/ / be propagated in the set output credentials.
optional bool enable = 3 ;
}
/ / API to programmatically create , list and retrieve Identity Aware Proxy ( IAP )
/ / OAuth brands ; and create , retrieve , delete and reset - secret of IAP OAuth
/ / clients.
service IdentityAwareProxyOAuthService {
option ( google.api.default_host ) = "iap.googleapis.com" ;
option ( google.api.oauth_scopes ) =
"https://www.googleapis.com/auth/cloud-platform" ;
/ / Lists the existing brands for the project.
rpc ListBrands ( ListBrandsRequest ) returns ( ListBrandsResponse ) {
option ( google.api.http ) = {
get : "/v1/{parent=projects/*}/brands"
} ;
}
/ / Constructs a new OAuth brand for the project if one does not exist.
/ / The created brand is "internal only" , meaning that OAuth clients created
/ / under it only accept requests from users who belong to the same Google
/ / Workspace organization as the project. The brand is created in an
/ / un - reviewed status. NOTE : The "internal only" status can be manually
/ / changed in the Google Cloud Console. Requires that a brand does not already
/ / exist for the project , and that the specified support email is owned by the
/ / caller.
rpc CreateBrand ( CreateBrandRequest ) returns ( Brand ) {
option ( google.api.http ) = {
post : "/v1/{parent=projects/*}/brands"
body : "brand"
} ;
}
/ / Retrieves the OAuth brand of the project.
rpc GetBrand ( GetBrandRequest ) returns ( Brand ) {
option ( google.api.http ) = {
get : "/v1/{name=projects/*/brands/*}"
} ;
}
/ / Creates an Identity Aware Proxy ( IAP ) OAuth client. The client is owned
/ / by IAP. Requires that the brand for the project exists and that it is
/ / set for internal - only use.
rpc CreateIdentityAwareProxyClient ( CreateIdentityAwareProxyClientRequest )
returns ( IdentityAwareProxyClient ) {
option ( google.api.http ) = {
post : "/v1/{parent=projects/*/brands/*}/identityAwareProxyClients"
body : "identity_aware_proxy_client"
} ;
}
/ / Lists the existing clients for the brand.
rpc ListIdentityAwareProxyClients ( ListIdentityAwareProxyClientsRequest )
returns ( ListIdentityAwareProxyClientsResponse ) {
option ( google.api.http ) = {
get : "/v1/{parent=projects/*/brands/*}/identityAwareProxyClients"
} ;
}
/ / Retrieves an Identity Aware Proxy ( IAP ) OAuth client.
/ / Requires that the client is owned by IAP.
rpc GetIdentityAwareProxyClient ( GetIdentityAwareProxyClientRequest )
returns ( IdentityAwareProxyClient ) {
option ( google.api.http ) = {
get : "/v1/{name=projects/*/brands/*/identityAwareProxyClients/*}"
} ;
}
/ / Resets an Identity Aware Proxy ( IAP ) OAuth client secret. Useful if the
/ / secret was compromised. Requires that the client is owned by IAP.
rpc ResetIdentityAwareProxyClientSecret (
ResetIdentityAwareProxyClientSecretRequest )
returns ( IdentityAwareProxyClient ) {
option ( google.api.http ) = {
post : "/v1/{name=projects/*/brands/*/identityAwareProxyClients/*}:resetSecret"
body : "*"
} ;
}
/ / Deletes an Identity Aware Proxy ( IAP ) OAuth client. Useful for removing
/ / obsolete clients , managing the number of clients in a given project , and
/ / cleaning up after tests. Requires that the client is owned by IAP.
rpc DeleteIdentityAwareProxyClient ( DeleteIdentityAwareProxyClientRequest )
returns ( google.protobuf.Empty ) {
option ( google.api.http ) = {
delete : "/v1/{name=projects/*/brands/*/identityAwareProxyClients/*}"
} ;
}
}
/ / The request sent to ListBrands.
@ -571,7 +665,8 @@ message CreateIdentityAwareProxyClientRequest {
string parent = 1 [ ( google.api.field_behavior ) = REQUIRED ] ;
/ / Required. Identity Aware Proxy Client to be created.
IdentityAwareProxyClient identity_aware_proxy_client = 2 [ ( google.api.field_behavior ) = REQUIRED ] ;
IdentityAwareProxyClient identity_aware_proxy_client = 2
[ ( google.api.field_behavior ) = REQUIRED ] ;
}
/ / The request sent to GetIdentityAwareProxyClient.