Feat: etcd filer store keys should have customizable prefix (#4484)

An etcd cluster is not necessarily only dedicated to seaweedfs.
This security enhancement adds a customizable key_prefix option to the etcd filer store.
This will allow an etcd cluster administrator to limit the seaweedfs etcd user to only read/write a subset of keys under the
key_prefix, instead of all keys on the etcd cluster.
This commit is contained in:
Mesar Hameed
2023-05-19 07:08:56 +01:00
committed by GitHub
parent 17e91d2917
commit a90b777ff4
3 changed files with 11 additions and 8 deletions

View File

@@ -8,7 +8,7 @@ import (
func (store *EtcdStore) KvPut(ctx context.Context, key []byte, value []byte) (err error) {
_, err = store.client.Put(ctx, string(key), string(value))
_, err = store.client.Put(ctx, store.etcdKeyPrefix + string(key), string(value))
if err != nil {
return fmt.Errorf("kv put: %v", err)
@@ -19,7 +19,7 @@ func (store *EtcdStore) KvPut(ctx context.Context, key []byte, value []byte) (er
func (store *EtcdStore) KvGet(ctx context.Context, key []byte) (value []byte, err error) {
resp, err := store.client.Get(ctx, string(key))
resp, err := store.client.Get(ctx, store.etcdKeyPrefix + string(key))
if err != nil {
return nil, fmt.Errorf("kv get: %v", err)
@@ -34,7 +34,7 @@ func (store *EtcdStore) KvGet(ctx context.Context, key []byte) (value []byte, er
func (store *EtcdStore) KvDelete(ctx context.Context, key []byte) (err error) {
_, err = store.client.Delete(ctx, string(key))
_, err = store.client.Delete(ctx, store.etcdKeyPrefix + string(key))
if err != nil {
return fmt.Errorf("kv delete: %v", err)