GitXplorerGitXplorer
h

bqiam

public
11 stars
5 forks
4 issues

Commits

List of commits on branch master.
Verified
82ed9c9146fffe7aa7c123ef6404c17bbb97dc58

update releaser (#65)

hhirosassa committed 7 months ago
Verified
af6490403ecbc687ec7fa97989857f9cf6700041

update CI (#63)

hhirosassa committed 7 months ago
Verified
70c13e8552486e6d36840cdead55ef4bc1f8d264

feat: handle Google Group for project wide auth (#62)

kkitagry committed 7 months ago
Verified
26ae12e798c7d81ec1079519628cf4c415dae389

Bump golang.org/x/net from 0.17.0 to 0.23.0 (#61)

ddependabot[bot] committed 9 months ago
Verified
43989893528ab6ea8ff5c109b33fcce17162be09

Bump google.golang.org/protobuf from 1.30.0 to 1.33.0 (#60)

ddependabot[bot] committed 10 months ago
Verified
c29c3530b3eea11d47e3204c1c536985fedabc50

Bump golang.org/x/net from 0.7.0 to 0.17.0 (#58)

ddependabot[bot] committed a year ago

README

The README file for this repository.

bqiam

Actions Status: golangci-lint Apache-2.0

What is this?

This tool provides easier permission management for BigQuery.

Currently supports;

  • list the user's permissions for each BigQuery Datasets
  • permit users to each BigQuery Datasets access role (READER/WRITER/OWNER) and roles/bigquery.jobUser (to run query)
  • permit users to Project-wide access role (roles/viewer or rolse/editor)
  • revoke users' datasets and/or project-wide permissions

Requirement

You must have a roles/owner on your GCP project.

Install

$ go install github.com/hirosassa/bqiam@latest

Usage

Prepare configuration file as following format (currently support only the file name is .bqiam.toml on your $HOME):

// .bqiam.toml
BigqueryProjects = ["project-id-A", "project-id-B", ...]
CacheFile = "path/to/cache-file.toml"

Next, fetch bigquery dataset metadata and store it to cache file (take about 30-60 sec.).

$ bqiam cache
dataset meta data are cached to path/to/cache-file.toml

List datasets the user is able to access.

$ bqiam dataset abc@sample.com
sample-prj sample-ds1 OWNER
sample-prj sample-ds2 READER
...

Grant the user(s) a role to access the dataset(s). This command also adds roles/bigquery.jobUser automatically.

$ bqiam permit dataset READER -p bq-project-id -u user1@email.com -u user2@email.com -d dataset1 -d dataset2
Permit user1@email.com to dataset1 access as READER
Permit user2@email.com to dataset1 access as READER
...

Grant the user(s) a project-wide role.

$ bqiam permit project READER -p bq-project-id -u user1@email.com -u user2@email.com
Permit user1@email.com to bq-project-id access as READER
Permit user2@email.com to bq-project-id access as READER
...

Revoke the user(s)' access permissions.

$ bqiam revoke dataset READER -p bq-project-id -u user1@email.com -d dataset1
Revoked user1@email.com's permission of dataset1 access as READER

$ bqiam project READER -p bq-project-id -u user1@email.com -u user2@email.com
Revoked user1@email.com's permission of bq-project-id access as READER
Revoked user2@email.com's permission of bq-project-id access as READER

Completion

Completion is available for bash or zsh. Download projects, datasets, users list data via GCP API.

Set up completion configurations

bash

bqiam completion bash > /path/to/bash-completion/completions/bqiam

zsh

bqiam completion zsh > /path/to/zsh-completions/_bqiam

Prefetch / Updating completion data

Completion candidate data is downloaded to ~/.bqiam-completion-file.toml by following command.

bqiam completion