1*d5c09012SAndroid Build Coastguard Worker// Copyright 2022 Google LLC 2*d5c09012SAndroid Build Coastguard Worker// 3*d5c09012SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*d5c09012SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*d5c09012SAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*d5c09012SAndroid Build Coastguard Worker// 7*d5c09012SAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 8*d5c09012SAndroid Build Coastguard Worker// 9*d5c09012SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*d5c09012SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*d5c09012SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*d5c09012SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*d5c09012SAndroid Build Coastguard Worker// limitations under the License. 14*d5c09012SAndroid Build Coastguard Worker 15*d5c09012SAndroid Build Coastguard Workersyntax = "proto3"; 16*d5c09012SAndroid Build Coastguard Worker 17*d5c09012SAndroid Build Coastguard Workerpackage google.iam.v2beta; 18*d5c09012SAndroid Build Coastguard Worker 19*d5c09012SAndroid Build Coastguard Workerimport "google/type/expr.proto"; 20*d5c09012SAndroid Build Coastguard Worker 21*d5c09012SAndroid Build Coastguard Workeroption csharp_namespace = "Google.Cloud.Iam.V2Beta"; 22*d5c09012SAndroid Build Coastguard Workeroption go_package = "cloud.google.com/go/iam/apiv2beta/iampb;iampb"; 23*d5c09012SAndroid Build Coastguard Workeroption java_multiple_files = true; 24*d5c09012SAndroid Build Coastguard Workeroption java_outer_classname = "DenyRuleProto"; 25*d5c09012SAndroid Build Coastguard Workeroption java_package = "com.google.iam.v2beta"; 26*d5c09012SAndroid Build Coastguard Workeroption php_namespace = "Google\\Cloud\\Iam\\V2beta"; 27*d5c09012SAndroid Build Coastguard Worker 28*d5c09012SAndroid Build Coastguard Worker// A deny rule in an IAM deny policy. 29*d5c09012SAndroid Build Coastguard Workermessage DenyRule { 30*d5c09012SAndroid Build Coastguard Worker // The identities that are prevented from using one or more permissions on 31*d5c09012SAndroid Build Coastguard Worker // Google Cloud resources. This field can contain the following values: 32*d5c09012SAndroid Build Coastguard Worker // 33*d5c09012SAndroid Build Coastguard Worker // * `principalSet://goog/public:all`: A special identifier that represents 34*d5c09012SAndroid Build Coastguard Worker // any principal that is on the internet, even if they do not have a Google 35*d5c09012SAndroid Build Coastguard Worker // Account or are not logged in. 36*d5c09012SAndroid Build Coastguard Worker // 37*d5c09012SAndroid Build Coastguard Worker // * `principal://goog/subject/{email_id}`: A specific Google Account. 38*d5c09012SAndroid Build Coastguard Worker // Includes Gmail, Cloud Identity, and Google Workspace user accounts. For 39*d5c09012SAndroid Build Coastguard Worker // example, `principal://goog/subject/alice@example.com`. 40*d5c09012SAndroid Build Coastguard Worker // 41*d5c09012SAndroid Build Coastguard Worker // * `deleted:principal://goog/subject/{email_id}?uid={uid}`: A specific 42*d5c09012SAndroid Build Coastguard Worker // Google Account that was deleted recently. For example, 43*d5c09012SAndroid Build Coastguard Worker // `deleted:principal://goog/subject/alice@example.com?uid=1234567890`. If 44*d5c09012SAndroid Build Coastguard Worker // the Google Account is recovered, this identifier reverts to the standard 45*d5c09012SAndroid Build Coastguard Worker // identifier for a Google Account. 46*d5c09012SAndroid Build Coastguard Worker // 47*d5c09012SAndroid Build Coastguard Worker // * `principalSet://goog/group/{group_id}`: A Google group. For example, 48*d5c09012SAndroid Build Coastguard Worker // `principalSet://goog/group/admins@example.com`. 49*d5c09012SAndroid Build Coastguard Worker // 50*d5c09012SAndroid Build Coastguard Worker // * `deleted:principalSet://goog/group/{group_id}?uid={uid}`: A Google group 51*d5c09012SAndroid Build Coastguard Worker // that was deleted recently. For example, 52*d5c09012SAndroid Build Coastguard Worker // `deleted:principalSet://goog/group/admins@example.com?uid=1234567890`. If 53*d5c09012SAndroid Build Coastguard Worker // the Google group is restored, this identifier reverts to the standard 54*d5c09012SAndroid Build Coastguard Worker // identifier for a Google group. 55*d5c09012SAndroid Build Coastguard Worker // 56*d5c09012SAndroid Build Coastguard Worker // * `principal://iam.googleapis.com/projects/-/serviceAccounts/{service_account_id}`: 57*d5c09012SAndroid Build Coastguard Worker // A Google Cloud service account. For example, 58*d5c09012SAndroid Build Coastguard Worker // `principal://iam.googleapis.com/projects/-/serviceAccounts/my-service-account@iam.gserviceaccount.com`. 59*d5c09012SAndroid Build Coastguard Worker // 60*d5c09012SAndroid Build Coastguard Worker // * `deleted:principal://iam.googleapis.com/projects/-/serviceAccounts/{service_account_id}?uid={uid}`: 61*d5c09012SAndroid Build Coastguard Worker // A Google Cloud service account that was deleted recently. For example, 62*d5c09012SAndroid Build Coastguard Worker // `deleted:principal://iam.googleapis.com/projects/-/serviceAccounts/my-service-account@iam.gserviceaccount.com?uid=1234567890`. 63*d5c09012SAndroid Build Coastguard Worker // If the service account is undeleted, this identifier reverts to the 64*d5c09012SAndroid Build Coastguard Worker // standard identifier for a service account. 65*d5c09012SAndroid Build Coastguard Worker // 66*d5c09012SAndroid Build Coastguard Worker // * `principalSet://goog/cloudIdentityCustomerId/{customer_id}`: All of the 67*d5c09012SAndroid Build Coastguard Worker // principals associated with the specified Google Workspace or Cloud 68*d5c09012SAndroid Build Coastguard Worker // Identity customer ID. For example, 69*d5c09012SAndroid Build Coastguard Worker // `principalSet://goog/cloudIdentityCustomerId/C01Abc35`. 70*d5c09012SAndroid Build Coastguard Worker repeated string denied_principals = 1; 71*d5c09012SAndroid Build Coastguard Worker 72*d5c09012SAndroid Build Coastguard Worker // The identities that are excluded from the deny rule, even if they are 73*d5c09012SAndroid Build Coastguard Worker // listed in the `denied_principals`. For example, you could add a Google 74*d5c09012SAndroid Build Coastguard Worker // group to the `denied_principals`, then exclude specific users who belong to 75*d5c09012SAndroid Build Coastguard Worker // that group. 76*d5c09012SAndroid Build Coastguard Worker // 77*d5c09012SAndroid Build Coastguard Worker // This field can contain the same values as the `denied_principals` field, 78*d5c09012SAndroid Build Coastguard Worker // excluding `principalSet://goog/public:all`, which represents all users on 79*d5c09012SAndroid Build Coastguard Worker // the internet. 80*d5c09012SAndroid Build Coastguard Worker repeated string exception_principals = 2; 81*d5c09012SAndroid Build Coastguard Worker 82*d5c09012SAndroid Build Coastguard Worker // The permissions that are explicitly denied by this rule. Each permission 83*d5c09012SAndroid Build Coastguard Worker // uses the format `{service_fqdn}/{resource}.{verb}`, where `{service_fqdn}` 84*d5c09012SAndroid Build Coastguard Worker // is the fully qualified domain name for the service. For example, 85*d5c09012SAndroid Build Coastguard Worker // `iam.googleapis.com/roles.list`. 86*d5c09012SAndroid Build Coastguard Worker repeated string denied_permissions = 3; 87*d5c09012SAndroid Build Coastguard Worker 88*d5c09012SAndroid Build Coastguard Worker // Specifies the permissions that this rule excludes from the set of denied 89*d5c09012SAndroid Build Coastguard Worker // permissions given by `denied_permissions`. If a permission appears in 90*d5c09012SAndroid Build Coastguard Worker // `denied_permissions` _and_ in `exception_permissions` then it will _not_ be 91*d5c09012SAndroid Build Coastguard Worker // denied. 92*d5c09012SAndroid Build Coastguard Worker // 93*d5c09012SAndroid Build Coastguard Worker // The excluded permissions can be specified using the same syntax as 94*d5c09012SAndroid Build Coastguard Worker // `denied_permissions`. 95*d5c09012SAndroid Build Coastguard Worker repeated string exception_permissions = 4; 96*d5c09012SAndroid Build Coastguard Worker 97*d5c09012SAndroid Build Coastguard Worker // The condition that determines whether this deny rule applies to a request. 98*d5c09012SAndroid Build Coastguard Worker // If the condition expression evaluates to `true`, then the deny rule is 99*d5c09012SAndroid Build Coastguard Worker // applied; otherwise, the deny rule is not applied. 100*d5c09012SAndroid Build Coastguard Worker // 101*d5c09012SAndroid Build Coastguard Worker // Each deny rule is evaluated independently. If this deny rule does not apply 102*d5c09012SAndroid Build Coastguard Worker // to a request, other deny rules might still apply. 103*d5c09012SAndroid Build Coastguard Worker // 104*d5c09012SAndroid Build Coastguard Worker // The condition can use CEL functions that evaluate 105*d5c09012SAndroid Build Coastguard Worker // [resource 106*d5c09012SAndroid Build Coastguard Worker // tags](https://cloud.google.com/iam/help/conditions/resource-tags). Other 107*d5c09012SAndroid Build Coastguard Worker // functions and operators are not supported. 108*d5c09012SAndroid Build Coastguard Worker google.type.Expr denial_condition = 5; 109*d5c09012SAndroid Build Coastguard Worker} 110