dheeraj12347 opened a new pull request, #14053:
URL: https://github.com/apache/cloudstack/pull/14053

   ## Purpose
   
   This PR proposes a design for introducing per-bucket object storage 
credentials and credential rotation in Apache CloudStack.
   
   This is intentionally a **design-only PR**. No implementation is included at 
this stage. The goal is to discuss and validate the proposed architecture 
before implementation begins.
   
   ## Background
   
   Currently, object storage credentials are provisioned at the CloudStack 
account level. Multiple buckets belonging to the same account can therefore 
share the same object storage credentials.
   
   This creates several limitations:
   
   * A leaked credential can provide access beyond a single bucket.
   * Credentials cannot be safely delegated on a per-bucket basis.
   * Rotating credentials for one bucket is not currently possible without 
affecting other buckets.
   * There is currently no object-storage API for credential rotation or 
revocation.
   
   The proposed design introduces bucket-scoped credentials while maintaining 
backward compatibility for existing buckets.
   
   ## Proposed Design
   
   The proposal follows the per-bucket credential and two-key rotation approach 
discussed on the CloudStack mailing list.
   
   Each bucket should be able to have two independently managed credential 
slots:
   
   ```text
   Bucket
    |
    +-- Credential 1
    |
    +-- Credential 2
   ```
   
   This allows one credential to be replaced or rotated while the other remains 
usable.
   
   The design also considers:
   
   * Credential creation and retrieval
   * Credential rotation
   * Credential revocation
   * Credential lifecycle/state
   * Persistence of the two credential slots
   * API changes
   * Object-store driver changes
   * Migration of existing buckets
   * Backward compatibility
   * Security and authorization
   
   ## Backward Compatibility
   
   Existing buckets should not be forced to change credentials during an 
upgrade.
   
   Where a bucket does not have bucket-specific credentials, the existing 
account-level credential mechanism can continue to be used.
   
   New buckets can use bucket-specific credentials according to the final 
agreed design.
   
   An explicit migration mechanism can be provided for existing buckets.
   
   ## Provider Impact
   
   The design considers the existing object storage providers and driver 
abstraction, including:
   
   * Ceph
   * MinIO
   * Cloudian
   * Simulator
   
   Provider-specific implementation details will be addressed after the common 
architecture and lifecycle semantics are agreed upon.
   
   ## Open Questions
   
   Feedback is particularly requested on:
   
   1. Should bucket-specific credentials be the default for new buckets, or 
initially be opt-in?
   2. What is the preferred persistence model for the two credential slots?
   3. What credential lifecycle/state model should be used?
   4. What should happen when the final active credential is revoked?
   5. What should the rotation API return, particularly regarding secret keys?
   6. Should individual and bulk migration of existing buckets be supported?
   7. How should providers that cannot support the proposed model be handled?
   8. What should the exact API naming and authorization model be?
   
   ## Scope
   
   This proposal is intentionally focused on bucket-scoped credentials and key 
rotation.
   
   An IAM/service-account style model where identities are completely decoupled 
from buckets and managed independently through policies is considered out of 
scope for this change.
   
   ## Feedback Requested
   
   Before implementation, feedback is requested on the overall architecture, 
credential lifecycle, persistence model, API design, migration strategy, and 
provider abstraction.
   
   Implementation will follow after the design has been reviewed and the open 
architectural questions have been resolved.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to