

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    
    <meta name="description" content="Apache Ozone Documentation">

    <title>Documentation for Apache Ozone</title>

    
    <link href="../css/bootstrap.min.css" rel="stylesheet">

    
    <link href="../css/ozonedoc.css" rel="stylesheet">

    
    
    <link href="../swagger-resources/swagger-ui.css" rel="stylesheet">

    
    <script>
      var _paq = window._paq = window._paq || [];
      

       
      _paq.push(['disableCookies']);
      

      _paq.push(['trackPageView']);
      _paq.push(['enableLinkTracking']);
      (function() {
        var u="//analytics.apache.org/";
        _paq.push(['setTrackerUrl', u+'matomo.php']);
        _paq.push(['setSiteId', '34']);
        var d=document, g=d.createElement('script'),
s=d.getElementsByTagName('script')[0];
        g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
      })();
    </script>
    

  </head>


<body>

  
<nav class="navbar navbar-inverse navbar-fixed-top">
  <div class="container-fluid">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#sidebar" aria-expanded="false" aria-controls="navbar">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a href="../index.html" class="navbar-left ozone-logo">
        <img src="../ozone-logo-small.png"/>
      </a>
      <a class="navbar-brand hidden-xs" href="../index.html">
        Apache Ozone/HDDS Documentation
      </a>
      <a class="navbar-brand visible-xs-inline" href="#">Apache Ozone</a>
    </div>
    <div id="navbar" class="navbar-collapse collapse">
      <ul class="nav navbar-nav navbar-right">
        <li><a href="https://github.com/apache/ozone">Source</a></li>
        <li><a href="https://ozone.apache.org">Apache Ozone</a></li>
        <li><a href="https://apache.org">ASF</a></li>
      </ul>
    </div>
  </div>
</nav>


  <div class="wrapper">
  <div class="container-fluid">
    <div class="row">
      
<div class="col-sm-2 col-md-2 sidebar" id="sidebar">
  <ul class="nav nav-sidebar">
    
    
        
            <li class="">
                
                   <a href="../index.html">
                

                    
                    <span>Overview</span>
                </a>
            </li>
        
    
        
            <li class="">
                
                   <a href="../start.html">
                

                    
                    <span>Getting Started</span>
                </a>
            </li>
        
    
        
            <li class="">
                <a href="../concept.html">
                    
                    <span>Architecture</span>
                </a>
                <ul class="nav">
                    
                        <li class="">
                           
                           <a href="../concept/overview.html">Overview</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../concept/ozonemanager.html">Ozone Manager</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../concept/storagecontainermanager.html">Storage Container Manager</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../concept/containers.html">Containers</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../concept/datanodes.html">Datanodes</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../concept/recon.html">Recon</a>
                           
                        </li>
                    
                </ul>
            </li>
        
    
        
            <li class="">
                <a href="../feature.html">
                    
                    <span>Features</span>
                </a>
                <ul class="nav">
                    
                        <li class="">
                           
                           <a href="../feature/decommission.html">Decommissioning</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../feature/om-ha.html">OM High Availability</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../feature/erasurecoding.html">Ozone Erasure Coding</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../feature/snapshot.html">Ozone Snapshot</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../feature/scm-ha.html">SCM High Availability</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../feature/streaming-write-pipeline.html">Streaming Write Pipeline</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../feature/dn-merge-rocksdb.html">Merge Container RocksDB in DN</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../feature/prefixfso.html">Prefix based File System Optimization</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../feature/topology.html">Topology awareness</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../feature/quota.html">Quota in Ozone</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../feature/recon.html">Recon Server</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../feature/observability.html">Observability</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../feature/nonrolling-upgrade.html">Non-Rolling Upgrades and Downgrades</a>
                           
                        </li>
                    
                        <li class="active">
                           
                               <a href="../feature/s3-multi-tenancy.html">
                                 
                                 <span>S3 Multi-Tenancy</span>
                               </a>
                               <ul class="nav">
                               
                                  <li class="">
                                     <a href="../feature/s3-multi-tenancy-setup.html">Setup</a>
                                  </li>
                               
                                  <li class="">
                                     <a href="../feature/s3-tenant-commands.html">Tenant commands</a>
                                  </li>
                               
                                  <li class="">
                                     <a href="../feature/s3-multi-tenancy-access-control.html">Access Control</a>
                                  </li>
                               
                               </ul>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../feature/reconfigurability.html">Reconfigurability</a>
                           
                        </li>
                    
                </ul>
            </li>
        
    
        
            <li class="">
                <a href="../interface.html">
                    
                    <span>Client Interfaces</span>
                </a>
                <ul class="nav">
                    
                        <li class="">
                           
                           <a href="../interface/ofs.html">Ofs (Hadoop compatible)</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../interface/o3fs.html">O3fs (Hadoop compatible)</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../interface/s3.html">S3 Protocol</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../interface/cli.html">Command Line Interface</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../interface/reconapi.html">Recon API</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../interface/javaapi.html">Java API</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../interface/csi.html">CSI Protocol</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../interface/httpfs.html">HttpFS Gateway</a>
                           
                        </li>
                    
                </ul>
            </li>
        
    
        
            <li class="">
                <a href="../security.html">
                    
                    <span>Security</span>
                </a>
                <ul class="nav">
                    
                        <li class="">
                           
                           <a href="../security/secureozone.html">Securing Ozone</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../security/securingtde.html">Transparent Data Encryption</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../security/gdpr.html">GDPR in Ozone</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../security/securingdatanodes.html">Securing Datanodes</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../security/securingozonehttp.html">Securing HTTP</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../security/securings3.html">Securing S3</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../security/securityacls.html">Ozone ACLs</a>
                           
                        </li>
                    
                        <li class="">
                           
                           <a href="../security/securitywithranger.html">Apache Ranger</a>
                           
                        </li>
                    
                </ul>
            </li>
        
    
        
            <li class="">
                
                   <a href="../tools.html">
                

                    
                    <span>Tools</span>
                </a>
            </li>
        
    
        
            <li class="">
                
                   <a href="../recipe.html">
                

                    
                    <span>Recipes</span>
                </a>
            </li>
        
    
    <li><a href="../design.html"><span><b>Design docs</b></span></a></li>
    <li class="visible-xs"><a href="#">References</a>
    <ul class="nav">
        <li><a href="https://github.com/apache/ozone"><span class="glyphicon glyphicon-new-window" aria-hidden="true"></span> Source</a></li>
        <li><a href="https://ozone.apache.org"><span class="glyphicon glyphicon-new-window" aria-hidden="true"></span> Apache Ozone</a></li>
        <li><a href="https://apache.org"><span class="glyphicon glyphicon-new-window" aria-hidden="true"></span> ASF</a></li>
    </ul></li>
  </ul>

</div>

      <div class="col-sm-10 col-sm-offset-2 col-md-10 col-md-offset-2 main-content">



        <div class="col-md-9">
            <nav aria-label="breadcrumb">
                <ol class="breadcrumb">
                  <li class="breadcrumb-item"><a href="../index.html">Home</a></li>
                  <li class="breadcrumb-item" aria-current="page"><a href="../feature.html">Features</a></li>
                  <li class="breadcrumb-item active" aria-current="page">S3 Multi-Tenancy</li>
                </ol>
              </nav>

          

<div class="pull-right">
    
    
    
</div>


          <div class="col-md-9">
            <h1>S3 Multi-Tenancy</h1>

            <!---
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<p>Before Ozone multi-tenancy, all S3 access to Ozone (via <a href="../interface/s3.html">S3 Gateway</a>) are
confined to a <strong>single</strong> designated S3 volume (that is volume <code>s3v</code>, by default).</p>
<p>Ozone multi-tenancy allows <strong>multiple</strong> S3-accessible volumes to be created.
Each volume can be managed separately by their own tenant admins via CLI for user operations, and via Apache Ranger for access control.</p>
<p>The concept <strong>tenant</strong> is introduced to Ozone by multi-tenancy.
Each tenant has its own designated volume.
Each user assigned to a tenant will be able to access the associated volume with an <em>Access ID &amp; Secret Key</em> pair
generated when an Ozone cluster admin or tenant admin assigns the user to the tenant using CLI.</p>
<blockquote>
<p>This multi-tenant feature allows Ozone resources to be compartmentalized in different isolation zones (tenants).</p>
</blockquote>
<blockquote>
<p>This multi-tenant support will also allow users to access Ozone volumes over AWS S3 APIs (without any modifications to the APIs).</p>
</blockquote>
<h2 id="basics">Basics</h2>
<ol>
<li>Initial tenant creation has to be done by an Ozone cluster admin under the CLI.</li>
<li>The Ozone cluster admin will have to assign the first user of a tenant. Once assigned, an <em>Access ID &amp; Secret Key pair</em> (key pair) will be generated for that user for access via S3 Gateway.
<ul>
<li>The key pair serves to authenticate the end user to the Ozone Manager (via client requests from S3 Gateway). Tenant volume is selected based on the Access ID.</li>
<li>After successful authentication, Ozone Manager uses the underlying user name (not the Access ID) to identify the user. The user name is used to perform authorization checks in Apache Ranger.</li>
<li>A key pair is tied to the user name it is assigned to. If a user is assigned key pairs in multiple tenants, all key pairs point to the same user name internally in Ozone Manager.</li>
<li>A user can be only assigned one key pair in a same tenant. Ozone Manager rejects the tenant user assign request if a user is already assigned to the same tenant (i.e. when the user has already been assigned an Access ID in this tenant).</li>
<li>One user can be assigned to multiple tenants. The user will have a different key pair to access each tenant. For instance, <code>testuser</code> could use <code>tenantone$testuser</code> to access <code>tenantone</code> buckets, and use <code>tenanttwo$testuser</code> to access <code>tenanttwo</code> buckets via S3 Gateway.
<ul>
<li>A bucket link can be set up if cross-tenant (cross-volume) access is desired. See <strong>Creating bucket links</strong> section in <a href="../feature/s3-tenant-commands.html">Tenant commands</a>.</li>
</ul>
</li>
</ul>
</li>
<li>The Ozone cluster admin can then assign tenant admin roles to that user.</li>
<li>Tenant admin are able to assign new users to the tenant.
<ul>
<li>They can even assign new tenant admins in their tenant, if they are delegated tenant admins, which is the default. See <strong>Assign a user as a tenant admin</strong> section in <a href="../feature/s3-tenant-commands.html">Tenant commands</a>.</li>
<li>Note that tenant admins still need to use Ozone tenant CLI to assign new users to the tenant.
<ul>
<li>Once tenant admins get the Kerberos TGT (via <code>kinit</code>), they can run <code>user assign</code> command to assign new users. Ozone Manager will recognize that they are the tenant admins and allow the user to do so in their tenants.</li>
</ul>
</li>
</ul>
</li>
<li>After that, users can use any S3-compatible client (awscli, Python boto3 library, etc.) to access the buckets in the tenant volume via S3 Gateway using the generated key pairs.</li>
</ol>
<h2 id="access-control">Access Control</h2>
<p>Ozone multi-tenancy relies on <a href="../security/securitywithranger.html">Apache Ranger</a> to enforce access control to resources.</p>
<p>See <a href="../feature/s3-multi-tenancy-access-control.html">Access Control</a> for more information.</p>
<h2 id="setup">Setup</h2>
<p>See <a href="../feature/s3-multi-tenancy-setup.html">Multi-Tenancy Setup</a>.</p>
<h2 id="usage">Usage</h2>
<p>See <a href="../feature/s3-tenant-commands.html">Tenant Subcommands</a>.</p>
<h2 id="references">References</h2>
<ul>
<li>For developers: check out the upstream jira <a href="https://issues.apache.org/jira/browse/HDDS-4944">HDDS-4944</a> and the attached design docs.</li>
</ul>


          
          <a class="btn  btn-success btn-lg" href="../feature/reconfigurability.html">Next >></a>
          
          </div>

        </div>
      </div>
    </div>
  </div>
    <div class="push"></div>
  </div>

  

<footer class="footer">
  <div class="container">
    <span class="small text-muted">
      Version: 1.5.0-SNAPSHOT, Last Modified: February 27, 2024 <a class="hide-child link primary-color" href="https://github.com/apache/ozone/commit/7939faf7d6c904bf1e4ad32baa5d6d0c1de19003">7939faf</a>
    </span>
  </div>
</footer>



<script src="../js/jquery-3.5.1.min.js"></script>
<script src="../js/ozonedoc.js"></script>
<script src="../js/bootstrap.min.js"></script>


</body>

</html>