Repository navigation
feat(iam): add default permissions on access keys - #368
Merged
Merged
Conversation
Contributor
|
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Assisted-by: Claude Fable 5.1 via Claude Code
designcode
force-pushed
the
feat/iam-access-key-scope
branch
from
October 12, 2026 17:47
5af79fa to
7a4411c
Compare
MantasMiksys
approved these changes
Oct 13, 2026
This was referenced Oct 13, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Closes TIG-11177. Exposes the gateway's
access_key_scopeon access keys — the console's "Enable default permissions" toggle — for both creating and updating keys.@tigrisdata/iamkeeps the API's vocabulary:ACCESS_KEY_SCOPES = ['standard', 'no_default_allow']+AccessKeyScope; the 0/1 wire encoding is confined to two helpers intypes.ts.createAccessKey(name, { scope })sendsaccess_key_scopeonly when asked (gateway default otherwise).setAccessKeyScope(id, scope)—UpdateAccessKeyWithBucketsRolewith just{ id, access_key_scope }, which the gateway documents as leaving the bucket roles unchanged.getAccessKey/listAccessKeysmap it toAccessKey.scope. The gateway omits the field at its zero value (proto3), so an absent field isstandard; an unknown value staysundefinedrather than being mislabelled.@tigrisdata/clispeaks the console's:tigris access-keys create … --default-permissions enable|disable(default enable, so nothing changes unless asked).tigris access-keys set <id> --default-permissions enable|disable(aliass), shaped likebuckets set; roles untouched.getprintsDefault permissions: enabled|disabled,listgains the column. JSON/XML carry the SDK'sscopeeverywhere so scripts see one name.enable→scope: 'standard',disable→'no_default_allow', validated before anything is sent.Test plan
buckets_role, get/list mapping incl. absent and unknown values (34 in package)createflag pass-through, kebab/camel keys, JSONscope, invalid value; newset.test.ts(6 cases); specs-completeness passesset … disable→ raw listing showsaccess_key_scope = 1,set … enable→ field absent;get/listshow "enabled"tsc, Biome, README regenerated; changesets foriamandcli(minor)🤖 Generated with Claude Code
Note
Medium Risk
Changes IAM access-key permission semantics and adds APIs that can narrow or widen what keys can do; behavior is validated and scoped updates intentionally omit bucket roles.
Overview
Adds access key scope — the console’s “Enable default permissions” toggle — across
@tigrisdata/iamand the CLI.IAM SDK: Keys expose
scopeasstandard(implicit ops like create/list buckets) orno_default_allow(only explicit roles/policies).createAccessKeyaccepts optionalscope; newsetAccessKeyScope(id, scope)updates scope without changing bucket roles.getAccessKey/listAccessKeysreturnscope, with absent wire values treated asstandard.CLI:
access-keys creategains--default-permissions enable|disable; newaccess-keys set <id> --default-permissions enable|disable. get and list show default permissions (table: enabled/disabled; JSON/XML:scope). Invalid flags/scopes are rejected before API calls.Reviewed by Cursor Bugbot for commit 7a4411c. Bugbot is set up for automated code reviews on this repo. Configure here.