| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- // Copyright (c) 2015, Google Inc.
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- syntax = "proto3";
- package google.iam.v1;
- option java_multiple_files = true;
- option java_outer_classname = "PolicyProto";
- option java_package = "com.google.iam.v1";
- // # Overview
- //
- // The `Policy` defines an access control policy language. It is used to
- // define policies that are attached to resources like files, folders, VMs,
- // etc.
- //
- //
- // # Policy structure
- //
- // A `Policy` consists of a list of bindings. A `Binding` binds a set of members
- // to a role, where the members include user accounts, user groups, user
- // domains, and service accounts. A 'role' is a named set of permissions,
- // defined by IAM. The definition of a role is outside the policy.
- //
- // A permission check first determines the roles that include the specified
- // permission, and then determines if the principal specified is a
- // member of a binding to at least one of these roles. The membership check is
- // recursive when a group is bound to a role.
- //
- // Policy examples:
- //
- // ```
- // {
- // "bindings": [
- // {
- // "role": "roles/owner",
- // "members": [
- // "user:mike@example.com",
- // "group:admins@example.com",
- // "domain:google.com",
- // "serviceAccount:frontend@example.iam.gserviceaccounts.com"]
- // },
- // {
- // "role": "roles/viewer",
- // "members": ["user:sean@example.com"]
- // }
- // ]
- // }
- // ```
- message Policy {
- // The policy language version. The version of the policy is
- // represented by the etag. The default version is 0.
- int32 version = 1;
- // It is an error to specify multiple bindings for the same role.
- // It is an error to specify a binding with no members.
- repeated Binding bindings = 4;
- // Can be used to perform a read-modify-write.
- bytes etag = 3;
- }
- // Associates members with roles. See below for allowed
- // formats of members.
- message Binding {
- // The name of the role to which the members should be bound.
- // Examples: "roles/viewer", "roles/editor", "roles/owner".
- // Required
- string role = 1;
- // Format of member entries:
- // 1. allUsers
- // Matches any requesting principal (users, service accounts or anonymous).
- //
- // 2. allAuthenticatedUsers
- // Matches any requesting authenticated principal (users or service
- // accounts).
- //
- // 3. user:{emailid}
- // A google user account using an email address.
- // For example alice@gmail.com, joe@example.com
- //
- // 4. serviceAccount:{emailid}
- // An service account email.
- //
- // 5. group:{emailid}
- // A google group with an email address. For example
- // auth-ti-cloud@google.com
- //
- // 6. domain:{domain}
- // A Google Apps domain name.
- // For example google.com, example.com
- repeated string members = 2;
- }
|