Class: Google::Cloud::Bigquery::Policy
- Inherits:
-
Object
- Object
- Google::Cloud::Bigquery::Policy
- Defined in:
- lib/google/cloud/bigquery/policy.rb
Overview
Policy
Represents a Cloud IAM Policy for BigQuery resources.
A Policy is a collection of bindings. A Binding binds one or more members to a single role. Member strings can describe user accounts, service accounts, Google groups, and domains. A role string represents a named list of permissions; each role can be an IAM predefined role or a user-created custom role.
Defined Under Namespace
Classes: Binding
Instance Attribute Summary collapse
-
#bindings ⇒ Array<Binding>
The bindings in the policy, which may be mutable or frozen depending on the context.
-
#etag ⇒ String
Used to check if the policy has changed since the last request.
Instance Method Summary collapse
-
#grant(role:, members:) ⇒ nil
Convenience method adding or updating a binding in the policy.
-
#revoke(role: nil, members: nil) ⇒ nil
Convenience method for removing a binding or bindings from the policy.
Instance Attribute Details
#bindings ⇒ Array<Binding>
The bindings in the policy, which may be mutable or frozen depending on the context. See Understanding Roles for a list of primitive and curated roles. See BigQuery Table ACL permissions for a list of values and patterns for members.
98 99 100 |
# File 'lib/google/cloud/bigquery/policy.rb', line 98 def bindings @bindings end |
#etag ⇒ String
Used to check if the policy has changed since the last request. When you make a request with
an etag
value, Cloud IAM compares the etag
value in the request with the existing etag
value associated
with the policy. It writes the policy only if the etag
values match.
98 99 100 |
# File 'lib/google/cloud/bigquery/policy.rb', line 98 def etag @etag end |
Instance Method Details
#grant(role:, members:) ⇒ nil
Convenience method adding or updating a binding in the policy. See Understanding Roles for a list of primitive and curated roles. See BigQuery Table ACL permissions for a list of values and patterns for members.
158 159 160 161 162 163 164 165 166 167 |
# File 'lib/google/cloud/bigquery/policy.rb', line 158 def grant role:, members: existing_binding = bindings.find { |b| b.role == role } if existing_binding existing_binding.members.concat Array(members) existing_binding.members.uniq! else bindings << Binding.new(role, members) end nil end |
#revoke(role: nil, members: nil) ⇒ nil
Convenience method for removing a binding or bindings from the policy. See Understanding Roles for a list of primitive and curated roles. See BigQuery Table ACL permissions for a list of values and patterns for members.
241 242 243 244 245 246 247 248 249 250 251 252 |
# File 'lib/google/cloud/bigquery/policy.rb', line 241 def revoke role: nil, members: nil bindings_for_role = role ? bindings.select { |b| b.role == role } : bindings bindings_for_role.each do |b| if members b.members -= Array(members) bindings.delete b if b.members.empty? else bindings.delete b end end nil end |