Native Resource Sharing¶
Share a resource that already exists in your cloud account. RosettaOps generates that cloud's own policy and regenerates it as your groups change.
Two sharing mechanisms¶
"Sharing" means two different things in RosettaHub, and they use different machinery.
| RosettaCloud sharing | RosettaOps native sharing | |
|---|---|---|
| What is shared | Artifacts the platform creates and manages: formations, clusters, images, storages | Resources that already exist natively in your accounts |
| How access is granted | Delegated credentials issued on share, revoked on unshare | The cloud's own resource policy, generated and maintained for you |
| Crosses clouds | Yes | No, a native resource is native to its own cloud |
| Typical user | Anyone who owns an artifact | An account owner exposing part of an existing estate |
Most organizations use both. This page covers the second.
What can be shared¶
| Resource | Notes |
|---|---|
| Object storage buckets | A whole bucket, or a single folder path within it, with the rights you choose |
| Machine images | Images built through federation, shared natively so a recipient can launch from them |
| IAM users | Shared as a session rather than as credentials. See Sharing an identity |
| IAM roles | The recommended way to grant console or CLI access. See Sharing a role |
| Cloud account pools | A pool shared with a group, so its members draw from the pool without an allocation step |
Who you share with¶
Every share is addressed to a tenant, and the tenant type decides how the generated policy behaves over time.
| Tenant type | CLI flag | Behaviour |
|---|---|---|
| User | u |
One named recipient |
| Group | g |
Everyone in the group, now and later |
| Role | r |
Everyone holding the role |
| Organization | o |
Everyone in the organization, including people who join after the share was made |
This is the point of native sharing
A hand-written policy names individuals. It is correct on the day it is written and drifts from then on. When a share names a group or an organization, the underlying policy is regenerated as membership changes: a joiner has access because they are a member, and a leaver loses it when they stop being one. Nobody has to remember to revoke anything.
Sharing a bucket¶
Sharing object storage generates the bucket policy for you. Two options shape what is exposed:
- Folder path -- limit the share to a prefix instead of the whole bucket
- Rights -- what the recipient may do with what they can see
rh bucket share --bucket-uid <uid> --tenant <name> --tenant-type g \
--folder-path datasets/2026 --rights read
--replace replaces the existing share list rather than adding to it. rh bucket unshare removes a share, and the generated policy is updated to match.
Sharing an identity¶
Sharing a native IAM user does not hand over the identity. The recipient receives a session issued in that identity's name, and never the underlying credentials.
| Option | Effect |
|---|---|
--allow-sts-console |
A sign-in to the cloud provider's own console |
--allow-sts-keys |
Short-lived keys for a script, a terminal or an SDK |
--sts-policy |
A policy applied on top, narrowing the session below what the identity itself holds |
--sts-duration |
Session length in seconds |
rh iamuser share --iam-user-uid <uid> --tenant <name> --tenant-type u \
--allow-sts-console --sts-duration 3600
Sharing a role¶
Prefer roles for human access
A native IAM user usually carries a long-lived access key that somebody has to rotate, and the keys nobody rotates are the ones that outlive their purpose. Cloud provider guidance is to keep human access on temporary credentials, and a shared role is exactly that: the recipient assumes it, receives a session, and holds nothing in between. If you are choosing today, share a role. Sharing a native IAM user remains supported because most estates still contain them, and sharing one at least stops the permanent key circulating.
A role carries the same four controls as an identity: console access, temporary keys, a narrowing policy and a session duration.
What a role adds is that the recipient needs no cloud account of their own, on your cloud or on RosettaHub. That covers the external collaborator, the auditor, and the supplier who needs to do one thing once, where creating a full account costs more than the work itself.
Roles are created within the perimeter of what their author is already permitted to do, with their own trust policy and permissions, so sharing a role can never grant more access than the person sharing it holds.
Auditing¶
Every share and unshare is recorded. Who was granted what, by whom, and when is a query against the audit trail rather than a reconstruction from policy history.
See also¶
- Sharing -- the RosettaCloud mechanism, for artifacts the platform manages
- Account Access and Scopes -- what each level of access on an account allows
- Identity and Access -- organizations, groups and roles