<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: dinakar</title>
    <description>The latest articles on DEV Community by dinakar (@dinakar_s).</description>
    <link>https://dev.to/dinakar_s</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1154542%2F918a86b2-e4f0-4237-a9a0-85e1176c32c9.png</url>
      <title>DEV Community: dinakar</title>
      <link>https://dev.to/dinakar_s</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dinakar_s"/>
    <language>en</language>
    <item>
      <title>🔐 Storage Credentials in Databricks Unity Catalog (AWS) — The Security Backbone You Can't Ignore</title>
      <dc:creator>dinakar</dc:creator>
      <pubDate>Thu, 23 Jul 2026 10:03:21 +0000</pubDate>
      <link>https://dev.to/dinakar_s/storage-credentials-in-databricks-unity-catalog-aws-the-security-backbone-you-cant-ignore-3pnj</link>
      <guid>https://dev.to/dinakar_s/storage-credentials-in-databricks-unity-catalog-aws-the-security-backbone-you-cant-ignore-3pnj</guid>
      <description>&lt;p&gt;As organisations move to the Databricks Lakehouse Platform on AWS, two priorities consistently surface at the top of every architecture conversation: &lt;strong&gt;data governance&lt;/strong&gt; and &lt;strong&gt;secure storage access&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Unity Catalog addresses both — but one foundational component powers nearly every secure storage action underneath the hood:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Storage Credentials&lt;/strong&gt; — the security backbone that connects Unity Catalog governance with AWS S3 permissions.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;strong&gt;## 🚀&lt;/strong&gt; Why Did Storage Credentials Need to Exist?****&lt;/p&gt;

&lt;p&gt;Before Unity Catalog, Databricks relied on &lt;strong&gt;cluster-level instance profiles&lt;/strong&gt; to access S3. The problems with this approach were significant:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Every user on the cluster got &lt;strong&gt;identical S3 permissions&lt;/strong&gt; — no isolation&lt;/li&gt;
&lt;li&gt;No per-table, per-schema, or per-user access control&lt;/li&gt;
&lt;li&gt;No centralised governance layer&lt;/li&gt;
&lt;li&gt;Difficult to audit who accessed what&lt;/li&gt;
&lt;li&gt;Dangerous for data exfiltration scenarios&lt;/li&gt;
&lt;li&gt;Cross-account S3 architectures were painful to manage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Unity Catalog replaced this pattern entirely with object-based governance — and Storage Credentials sit at the centre of that improvement.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;## 🧩 What Exactly Is a Storage Credential?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A Storage Credential is an &lt;strong&gt;AWS IAM Role&lt;/strong&gt; (roles are strongly recommended over static keys) that Databricks can assume via AWS STS to access S3 securely.&lt;/p&gt;

&lt;p&gt;You register it in Unity Catalog with a single SQL statement:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;STORAGE&lt;/span&gt; &lt;span class="n"&gt;CREDENTIAL&lt;/span&gt; &lt;span class="n"&gt;finance_sc&lt;/span&gt;
&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="k"&gt;ROLE&lt;/span&gt; &lt;span class="s1"&gt;'arn:aws:iam::123456789012:role/databricks-finance-access'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once registered, it becomes the &lt;strong&gt;governed identity&lt;/strong&gt; that Databricks uses when accessing specific S3 locations — completely abstracted away from individual users or cluster configurations.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔍 What Problems Do Storage Credentials Solve?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Fine-Grained, UC-Governed Access to S3
&lt;/h3&gt;

&lt;p&gt;Storage Credentials enforce exactly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Who&lt;/strong&gt; can read or write files&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Who&lt;/strong&gt; can register external locations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Which&lt;/strong&gt; S3 buckets a team or table can access&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Which&lt;/strong&gt; catalog or schema maps to which S3 path&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes S3 permissions fully consistent with table-level governance in Unity Catalog — no more out-of-band IAM management.&lt;/p&gt;




&lt;h3&gt;
  
  
  2. They Replace Instance Profiles Completely
&lt;/h3&gt;

&lt;p&gt;SQL Warehouses — especially &lt;strong&gt;Serverless SQL&lt;/strong&gt; — do not support instance profiles at all.&lt;/p&gt;

&lt;p&gt;If you are running Serverless compute (which Databricks is pushing as the default going forward), all S3 access &lt;strong&gt;must&lt;/strong&gt; go through Storage Credentials.&lt;/p&gt;

&lt;p&gt;Without them → your SQL Warehouse simply cannot query your data.&lt;/p&gt;




&lt;h3&gt;
  
  
  3. They Are Essential for External Locations
&lt;/h3&gt;

&lt;p&gt;You cannot create an External Location without first having a Storage Credential:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;EXTERNAL&lt;/span&gt; &lt;span class="k"&gt;LOCATION&lt;/span&gt; &lt;span class="n"&gt;bronze_loc&lt;/span&gt;
&lt;span class="n"&gt;URL&lt;/span&gt; &lt;span class="s1"&gt;'s3://company-lakehouse/bronze/'&lt;/span&gt;
&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="k"&gt;STORAGE&lt;/span&gt; &lt;span class="n"&gt;CREDENTIAL&lt;/span&gt; &lt;span class="n"&gt;finance_sc&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This allows Unity Catalog to enforce access at &lt;strong&gt;directory-level granularity&lt;/strong&gt; within S3 — not just at the bucket level.&lt;/p&gt;




&lt;h3&gt;
  
  
  4. Secure Cross-Account S3 Access
&lt;/h3&gt;

&lt;p&gt;Most enterprise AWS environments use multi-account architectures — a data account, a workload account, a security account. Managing S3 access across accounts with instance profiles is messy and risky.&lt;/p&gt;

&lt;p&gt;Storage Credentials simplify this significantly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Databricks Account
       ↓ assumes
IAM Role in Data S3 Account (via STS)
       ↓ scoped to
Specific S3 bucket prefixes via bucket policy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No cluster-level over-permissions. No credential sprawl. Clean, auditable cross-account access.&lt;/p&gt;




&lt;h3&gt;
  
  
  5. Strong, Built-In Auditability
&lt;/h3&gt;

&lt;p&gt;All S3 access routed through Storage Credentials is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fully auditable&lt;/strong&gt; via &lt;code&gt;system.access.audit&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tied to the UC object hierarchy&lt;/strong&gt; (catalog → schema → table)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tied to the user identity&lt;/strong&gt; via Unity Catalog's identity passthrough&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This gives compliance and data governance teams complete visibility into who accessed which data, when, and through which pipeline.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- Audit all storage credential usage&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="n"&gt;event_time&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;user_identity&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;email&lt;/span&gt;       &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="k"&gt;user&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;action_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;request_params&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="k"&gt;system&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;access&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;audit&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;action_name&lt;/span&gt; &lt;span class="k"&gt;IN&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="s1"&gt;'createStorageCredential'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'updateStorageCredential'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'getStorageCredential'&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;event_time&lt;/span&gt; &lt;span class="k"&gt;DESC&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🏗️ How It All Fits Together
&lt;/h2&gt;

&lt;p&gt;The user &lt;strong&gt;never holds AWS credentials directly&lt;/strong&gt;. The IAM role is &lt;strong&gt;never exposed&lt;/strong&gt; in notebooks, job configs, or Spark settings. Unity Catalog is the single control plane for everything.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚡ Quick Setup Checklist
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;✅ Create IAM Role in AWS with S3 permissions
✅ Set up trust policy for Databricks Account IAM Role
✅ Register Storage Credential in Unity Catalog (UC Admin)
✅ Create External Location pointing to S3 path
✅ GRANT CREATE EXTERNAL LOCATION to appropriate groups
✅ Verify with VALIDATE STORAGE CREDENTIAL
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- Verify storage credential works&lt;/span&gt;
&lt;span class="n"&gt;VALIDATE&lt;/span&gt; &lt;span class="k"&gt;STORAGE&lt;/span&gt; &lt;span class="n"&gt;CREDENTIAL&lt;/span&gt; &lt;span class="n"&gt;finance_sc&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;-- Check who has access to it&lt;/span&gt;
&lt;span class="k"&gt;SHOW&lt;/span&gt; &lt;span class="n"&gt;GRANTS&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="k"&gt;STORAGE&lt;/span&gt; &lt;span class="n"&gt;CREDENTIAL&lt;/span&gt; &lt;span class="n"&gt;finance_sc&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  💡 Key Takeaway
&lt;/h2&gt;

&lt;p&gt;Storage Credentials are not optional in a modern Databricks architecture — they are the &lt;strong&gt;foundational security primitive&lt;/strong&gt; that makes Unity Catalog's governance model work in practice on AWS.&lt;/p&gt;

&lt;p&gt;If you are still using cluster-level instance profiles, or if you are planning to adopt Serverless SQL, migrating to Storage Credentials is not just recommended — it is required.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔗 Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.databricks.com/en/connect/unity-catalog/storage-credentials.html" rel="noopener noreferrer"&gt;Databricks Unity Catalog Docs — Storage Credentials&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html" rel="noopener noreferrer"&gt;AWS STS AssumeRole Documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>databricks</category>
      <category>aws</category>
      <category>dataengineering</category>
      <category>deltlake</category>
    </item>
  </channel>
</rss>
