feat(iam): add SetUserStatus and UpdateAccessKey actions (#7750)
feat(iam): add SetUserStatus and UpdateAccessKey actions (#7745) Add ability to enable/disable users and access keys without deleting them. ## Changes ### Protocol Buffer Updates - Add `disabled` field (bool) to Identity message for user status - false (default) = enabled, true = disabled - No backward compatibility hack needed since zero value is correct - Add `status` field (string: Active/Inactive) to Credential message ### New IAM Actions - SetUserStatus: Enable or disable a user (requires admin) - UpdateAccessKey: Change access key status (self-service or admin) ### Behavior - Disabled users: All API requests return AccessDenied - Inactive access keys: Signature validation fails - Status check happens early in auth flow for performance - Backward compatible: existing configs default to enabled (disabled=false) ### Use Cases 1. Temporary suspension: Disable user access during investigation 2. Key rotation: Deactivate old key before deletion 3. Offboarding: Disable rather than delete for audit purposes 4. Emergency response: Quickly disable compromised credentials Fixes #7745
This commit is contained in:
@@ -670,7 +670,7 @@ func TestListBucketsIssue7647(t *testing.T) {
|
||||
t.Run("admin user can see their created buckets", func(t *testing.T) {
|
||||
// Simulate the exact scenario from issue #7647:
|
||||
// User "root" with ["Admin", "Read", "Write", "Tagging", "List"] permissions
|
||||
|
||||
|
||||
// Create identity for root user with Admin action
|
||||
rootIdentity := &Identity{
|
||||
Name: "root",
|
||||
@@ -730,7 +730,7 @@ func TestListBucketsIssue7647(t *testing.T) {
|
||||
t.Run("admin user sees buckets without owner metadata", func(t *testing.T) {
|
||||
// Admin users should see buckets even if they don't have owner metadata
|
||||
// (this can happen with legacy buckets or manual creation)
|
||||
|
||||
|
||||
rootIdentity := &Identity{
|
||||
Name: "root",
|
||||
Actions: []Action{
|
||||
@@ -754,7 +754,7 @@ func TestListBucketsIssue7647(t *testing.T) {
|
||||
|
||||
t.Run("non-admin user cannot see buckets without owner", func(t *testing.T) {
|
||||
// Non-admin users should not see buckets without owner metadata
|
||||
|
||||
|
||||
regularUser := &Identity{
|
||||
Name: "user1",
|
||||
Actions: []Action{
|
||||
|
||||
Reference in New Issue
Block a user