Files
seaweedfs/weed/pb/s3.proto
T
Chris Lu 43229b05ce Explicit IAM gRPC APIs for S3 Server (#8126)
* Update IAM and S3 protobuf definitions for explicit IAM gRPC APIs

* Refactor s3api: Extract generic ExecuteAction method for IAM operations

* Implement explicit IAM gRPC APIs in S3 server

* iam: remove deprecated GetConfiguration and PutConfiguration RPCs

* iamapi: refactor handlers to use CredentialManager directly

* s3api: refactor embedded IAM to use CredentialManager directly

* server: remove deprecated configuration gRPC handlers

* credential/grpc: refactor configuration calls to return error

* shell: update s3.configure to list users instead of full config

* s3api: fix CreateServiceAccount gRPC handler to map required fields

* s3api: fix UpdateServiceAccount gRPC handler to map fields and safe status

* s3api: enforce UserName in embedded IAM ListAccessKeys

* test: fix test_config.json structure to match proto definition

* Revert "credential/grpc: refactor configuration calls to return error"

This reverts commit cde707dd8b.

* Revert "server: remove deprecated configuration gRPC handlers"

This reverts commit 7307e205a0.

* Revert "s3api: enforce UserName in embedded IAM ListAccessKeys"

This reverts commit adf727ba52.

* Revert "s3api: fix UpdateServiceAccount gRPC handler to map fields and safe status"

This reverts commit 6a4be3314d.

* Revert "s3api: fix CreateServiceAccount gRPC handler to map required fields"

This reverts commit 9bb4425f07.

* Revert "shell: update s3.configure to list users instead of full config"

This reverts commit f3304ead53.

* Revert "s3api: refactor embedded IAM to use CredentialManager directly"

This reverts commit 9012f27af8.

* Revert "iamapi: refactor handlers to use CredentialManager directly"

This reverts commit 3a14821223.

* Revert "iam: remove deprecated GetConfiguration and PutConfiguration RPCs"

This reverts commit e16e08aa00.

* s3api: address IAM code review comments (error handling, logging, gRPC response mapping)

* s3api: add robustness to startup by retrying KEK and IAM config loading from Filer

* s3api: address IAM gRPC code review comments (safety, validation, status logic)

* fix return
2026-01-26 13:38:15 -08:00

77 lines
2.9 KiB
Protocol Buffer

syntax = "proto3";
package messaging_pb;
option go_package = "github.com/seaweedfs/seaweedfs/weed/pb/s3_pb";
option java_package = "seaweedfs.client";
option java_outer_classname = "S3Proto";
//////////////////////////////////////////////////
import "iam.proto";
service SeaweedS3 {
// Explicit IAM APIs mirroring SeaweedIdentityAccessManagement
rpc ListUsers (iam_pb.ListUsersRequest) returns (iam_pb.ListUsersResponse) {}
rpc CreateUser (iam_pb.CreateUserRequest) returns (iam_pb.CreateUserResponse) {}
rpc GetUser (iam_pb.GetUserRequest) returns (iam_pb.GetUserResponse) {}
rpc UpdateUser (iam_pb.UpdateUserRequest) returns (iam_pb.UpdateUserResponse) {}
rpc DeleteUser (iam_pb.DeleteUserRequest) returns (iam_pb.DeleteUserResponse) {}
rpc ListAccessKeys (iam_pb.ListAccessKeysRequest) returns (iam_pb.ListAccessKeysResponse) {}
rpc CreateAccessKey (iam_pb.CreateAccessKeyRequest) returns (iam_pb.CreateAccessKeyResponse) {}
rpc DeleteAccessKey (iam_pb.DeleteAccessKeyRequest) returns (iam_pb.DeleteAccessKeyResponse) {}
rpc PutUserPolicy (iam_pb.PutUserPolicyRequest) returns (iam_pb.PutUserPolicyResponse) {}
rpc GetUserPolicy (iam_pb.GetUserPolicyRequest) returns (iam_pb.GetUserPolicyResponse) {}
rpc DeleteUserPolicy (iam_pb.DeleteUserPolicyRequest) returns (iam_pb.DeleteUserPolicyResponse) {}
rpc ListServiceAccounts (iam_pb.ListServiceAccountsRequest) returns (iam_pb.ListServiceAccountsResponse) {}
rpc CreateServiceAccount (iam_pb.CreateServiceAccountRequest) returns (iam_pb.CreateServiceAccountResponse) {}
rpc UpdateServiceAccount (iam_pb.UpdateServiceAccountRequest) returns (iam_pb.UpdateServiceAccountResponse) {}
rpc DeleteServiceAccount (iam_pb.DeleteServiceAccountRequest) returns (iam_pb.DeleteServiceAccountResponse) {}
rpc GetServiceAccount (iam_pb.GetServiceAccountRequest) returns (iam_pb.GetServiceAccountResponse) {}
}
//////////////////////////////////////////////////
message S3CircuitBreakerConfig {
S3CircuitBreakerOptions global=1;
map<string, S3CircuitBreakerOptions> buckets= 2;
}
message S3CircuitBreakerOptions {
bool enabled=1;
map<string, int64> actions = 2;
}
//////////////////////////////////////////////////
// Bucket Metadata
message CORSRule {
repeated string allowed_headers = 1;
repeated string allowed_methods = 2;
repeated string allowed_origins = 3;
repeated string expose_headers = 4;
int32 max_age_seconds = 5;
string id = 6;
}
message CORSConfiguration {
repeated CORSRule cors_rules = 1;
}
message BucketMetadata {
map<string, string> tags = 1;
CORSConfiguration cors = 2;
EncryptionConfiguration encryption = 3;
}
message EncryptionConfiguration {
string sse_algorithm = 1; // "AES256" or "aws:kms"
string kms_key_id = 2; // KMS key ID (optional for aws:kms)
bool bucket_key_enabled = 3; // S3 Bucket Keys optimization
}