<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: How to Access Azure Key Vault Secrets in Fabric Notebook Using Managed Identity in Data Science</title>
    <link>https://community.fabric.microsoft.com/t5/Data-Science/How-to-Access-Azure-Key-Vault-Secrets-in-Fabric-Notebook-Using/m-p/4888354#M945</link>
    <description>&lt;P&gt;&lt;a href="javascript:void(0)" data-lia-user-mentions="" data-lia-user-uid="937100" data-lia-user-login="Mauro89" class="lia-mention lia-mention-user"&gt;Mauro89&lt;/a&gt;&amp;nbsp;, thank you for your response.&amp;nbsp; I have watched the video and when I try to run the api_key from my part it shows ["redacted"] just as that of the video. However, when I included it in my code I have the below&lt;BR /&gt;code&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;from&lt;/SPAN&gt; &lt;SPAN&gt;notebookutils&lt;/SPAN&gt; &lt;SPAN&gt;import&lt;/SPAN&gt; &lt;SPAN&gt;mssparkutils&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;import&lt;/SPAN&gt; &lt;SPAN&gt;pandas&lt;/SPAN&gt; &lt;SPAN&gt;as&lt;/SPAN&gt; &lt;SPAN&gt;pd&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;import&lt;/SPAN&gt; &lt;SPAN&gt;io&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;import&lt;/SPAN&gt; &lt;SPAN&gt;base64&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;from&lt;/SPAN&gt;&lt;SPAN&gt; azure.communication.email &lt;/SPAN&gt;&lt;SPAN&gt;import&lt;/SPAN&gt;&lt;SPAN&gt; EmailClient&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;from&lt;/SPAN&gt;&lt;SPAN&gt; azure.keyvault.secrets &lt;/SPAN&gt;&lt;SPAN&gt;import&lt;/SPAN&gt;&lt;SPAN&gt; SecretClient&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;# ====== Load secrets from Azure Key Vault ======&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;# &amp;nbsp;Replace "kv-emailcomm" with your actual Key Vault connection name in Fabric&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;CONNECTION_STRING&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;mssparkutils&lt;/SPAN&gt;&lt;SPAN&gt;.credentials.getSecret(&lt;/SPAN&gt;&lt;SPAN&gt;"emailcommunicationkey"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"ACS-CONNECTION-STRING"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;SENDER&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;mssparkutils&lt;/SPAN&gt;&lt;SPAN&gt;.credentials.getSecret(&lt;/SPAN&gt;&lt;SPAN&gt;"emailcommunicationkey"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"SENDER-EMAIL"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;# Initialize EmailClient&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;client&lt;/SPAN&gt;&lt;SPAN&gt; = EmailClient.from_connection_string(&lt;/SPAN&gt;&lt;SPAN&gt;CONNECTION_STRING&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;# ====== Load churn data from Spark ======&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;df&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;spark&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;read&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;load&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;churn_alert&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;df&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;toPandas&lt;/SPAN&gt;&lt;SPAN&gt;()&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;# ====== Filter for test email (optional) ======&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;# If you want to send all data, skip this filter&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;# If you want only rows for girl, uncomment below:&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;# churn_alert = churn_alert[churn_alert['email'] == ' ']&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;# Create CSV attachment&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;csv_buffer&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;io&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;StringIO&lt;/SPAN&gt;&lt;SPAN&gt;()&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;churn_alert&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;to_csv&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;csv_buffer&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;index&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;False&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;csv_base64&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;base64&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;b64encode&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;csv_buffer&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;getvalue&lt;/SPAN&gt;&lt;SPAN&gt;().&lt;/SPAN&gt;&lt;SPAN&gt;encode&lt;/SPAN&gt;&lt;SPAN&gt;()).&lt;/SPAN&gt;&lt;SPAN&gt;decode&lt;/SPAN&gt;&lt;SPAN&gt;()&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;# Email Content&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;plain_text_content&lt;/SPAN&gt;&lt;SPAN&gt; = (&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;f&lt;/SPAN&gt;&lt;SPAN&gt;"Hello friend,&lt;/SPAN&gt;&lt;SPAN&gt;\n\n&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;"Hope you’re doing well. This is a test&lt;/SPAN&gt;&lt;SPAN&gt;\n\n&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;"Best regards,&lt;/SPAN&gt;&lt;SPAN&gt;\n&lt;/SPAN&gt;&lt;SPAN&gt;testing team"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;# Prepare message&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;message&lt;/SPAN&gt;&lt;SPAN&gt; = {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;"senderAddress"&lt;/SPAN&gt;&lt;SPAN&gt;: &lt;/SPAN&gt;&lt;SPAN&gt;SENDER&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;"recipients"&lt;/SPAN&gt;&lt;SPAN&gt;: {&lt;/SPAN&gt;&lt;SPAN&gt;"to"&lt;/SPAN&gt;&lt;SPAN&gt;: [{&lt;/SPAN&gt;&lt;SPAN&gt;"address"&lt;/SPAN&gt;&lt;SPAN&gt;: &lt;/SPAN&gt;&lt;SPAN&gt;" "&lt;/SPAN&gt;&lt;SPAN&gt;}]},&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;"content"&lt;/SPAN&gt;&lt;SPAN&gt;: {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;"subject"&lt;/SPAN&gt;&lt;SPAN&gt;: &lt;/SPAN&gt;&lt;SPAN&gt;"Churn Alert: Your Customers at Risk"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;"plainText"&lt;/SPAN&gt;&lt;SPAN&gt;: &lt;/SPAN&gt;&lt;SPAN&gt;plain_text_content&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; },&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;"attachments"&lt;/SPAN&gt;&lt;SPAN&gt;: [&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;"name"&lt;/SPAN&gt;&lt;SPAN&gt;: &lt;/SPAN&gt;&lt;SPAN&gt;"churn_report.csv"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;"contentType"&lt;/SPAN&gt;&lt;SPAN&gt;: &lt;/SPAN&gt;&lt;SPAN&gt;"text/csv"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;"contentInBase64"&lt;/SPAN&gt;&lt;SPAN&gt;: &lt;/SPAN&gt;&lt;SPAN&gt;csv_base64&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; ]&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;# Send email&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;try&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;poller&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;client&lt;/SPAN&gt;&lt;SPAN&gt;.begin_send(&lt;/SPAN&gt;&lt;SPAN&gt;message&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;result&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;poller&lt;/SPAN&gt;&lt;SPAN&gt;.result()&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;print&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;f&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;span class="lia-unicode-emoji" title=":white_heavy_check_mark:"&gt;✅&lt;/span&gt; Email sent to " " | Message ID: &lt;/SPAN&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;SPAN&gt;result&lt;/SPAN&gt;&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;'id'&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;except&lt;/SPAN&gt; &lt;SPAN&gt;Exception&lt;/SPAN&gt; &lt;SPAN&gt;as&lt;/SPAN&gt; &lt;SPAN&gt;e&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;print&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;f&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;span class="lia-unicode-emoji" title=":cross_mark:"&gt;❌&lt;/span&gt; Failed to send email: &lt;/SPAN&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;SPAN&gt;e&lt;/SPAN&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;this is the output&lt;BR /&gt;&lt;SPAN class=""&gt;---------------------------------------------------------------------------&lt;/SPAN&gt; &lt;SPAN class=""&gt;Py4JJavaError&lt;/SPAN&gt; Traceback (most recent call last) Cell &lt;SPAN class=""&gt;In[49], line 14&lt;/SPAN&gt; &lt;SPAN class=""&gt;7&lt;/SPAN&gt; &lt;SPAN class=""&gt;from&lt;/SPAN&gt; &lt;SPAN class=""&gt;azure&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;keyvault&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;secrets&lt;/SPAN&gt; &lt;SPAN class=""&gt;import&lt;/SPAN&gt; SecretClient &lt;SPAN class=""&gt;11&lt;/SPAN&gt; &lt;SPAN class=""&gt;# ====== Load secrets from Azure Key Vault ======&lt;/SPAN&gt; &lt;SPAN class=""&gt;12&lt;/SPAN&gt; &lt;SPAN class=""&gt;13&lt;/SPAN&gt; &lt;SPAN class=""&gt;# Replace "kv-emailcomm" with your actual Key Vault connection name in Fabric&lt;/SPAN&gt; &lt;SPAN class=""&gt;---&amp;gt; 14&lt;/SPAN&gt; CONNECTION_STRING &lt;SPAN class=""&gt;=&lt;/SPAN&gt; mssparkutils&lt;SPAN class=""&gt;.&lt;/SPAN&gt;credentials&lt;SPAN class=""&gt;.&lt;/SPAN&gt;getSecret(&lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;emailcommunicationkey&lt;/SPAN&gt;&lt;SPAN class=""&gt;"&lt;/SPAN&gt;, &lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;ACS-CONNECTION-STRING&lt;/SPAN&gt;&lt;SPAN class=""&gt;"&lt;/SPAN&gt;) &lt;SPAN class=""&gt;15&lt;/SPAN&gt; SENDER &lt;SPAN class=""&gt;=&lt;/SPAN&gt; mssparkutils&lt;SPAN class=""&gt;.&lt;/SPAN&gt;credentials&lt;SPAN class=""&gt;.&lt;/SPAN&gt;getSecret(&lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;emailcommunicationkey&lt;/SPAN&gt;&lt;SPAN class=""&gt;"&lt;/SPAN&gt;, &lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;SENDER-EMAIL&lt;/SPAN&gt;&lt;SPAN class=""&gt;"&lt;/SPAN&gt;) &lt;SPAN class=""&gt;19&lt;/SPAN&gt; &lt;SPAN class=""&gt;# Initialize EmailClient&lt;/SPAN&gt; File &lt;SPAN class=""&gt;~/cluster-env/trident_env/lib/python3.11/site-packages/notebookutils/mssparkutils/credentials.py:27&lt;/SPAN&gt;, in &lt;SPAN class=""&gt;getSecret&lt;/SPAN&gt;&lt;SPAN class=""&gt;(akvName, secret, linkedService)&lt;/SPAN&gt; &lt;SPAN class=""&gt;25&lt;/SPAN&gt; &lt;SPAN class=""&gt;def&lt;/SPAN&gt; &lt;SPAN class=""&gt;getSecret&lt;/SPAN&gt;(akvName, secret, linkedService&lt;SPAN class=""&gt;=&lt;/SPAN&gt;&lt;SPAN class=""&gt;'&lt;/SPAN&gt;&lt;SPAN class=""&gt;'&lt;/SPAN&gt;&lt;span class="lia-unicode-emoji" title=":disappointed_face:"&gt;😞&lt;/span&gt; &lt;SPAN class=""&gt;26&lt;/SPAN&gt; &lt;SPAN class=""&gt;if&lt;/SPAN&gt; linkedService &lt;SPAN class=""&gt;==&lt;/SPAN&gt; &lt;SPAN class=""&gt;'&lt;/SPAN&gt;&lt;SPAN class=""&gt;'&lt;/SPAN&gt;: &lt;SPAN class=""&gt;---&amp;gt; 27&lt;/SPAN&gt; &lt;SPAN class=""&gt;return&lt;/SPAN&gt; creds&lt;SPAN class=""&gt;.&lt;/SPAN&gt;getSecret(akvName, secret) &lt;SPAN class=""&gt;28&lt;/SPAN&gt; &lt;SPAN class=""&gt;else&lt;/SPAN&gt;: &lt;SPAN class=""&gt;29&lt;/SPAN&gt; &lt;SPAN class=""&gt;return&lt;/SPAN&gt; creds&lt;SPAN class=""&gt;.&lt;/SPAN&gt;getSecret(akvName, secret, linkedService) File &lt;SPAN class=""&gt;~/cluster-env/trident_env/lib/python3.11/site-packages/py4j/java_gateway.py:1322&lt;/SPAN&gt;, in &lt;SPAN class=""&gt;JavaMember.__call__&lt;/SPAN&gt;&lt;SPAN class=""&gt;(self, *args)&lt;/SPAN&gt; &lt;SPAN class=""&gt;1316&lt;/SPAN&gt; command &lt;SPAN class=""&gt;=&lt;/SPAN&gt; proto&lt;SPAN class=""&gt;.&lt;/SPAN&gt;CALL_COMMAND_NAME &lt;SPAN class=""&gt;+&lt;/SPAN&gt;\ &lt;SPAN class=""&gt;1317&lt;/SPAN&gt; &lt;SPAN class=""&gt;self&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;command_header &lt;SPAN class=""&gt;+&lt;/SPAN&gt;\ &lt;SPAN class=""&gt;1318&lt;/SPAN&gt; args_command &lt;SPAN class=""&gt;+&lt;/SPAN&gt;\ &lt;SPAN class=""&gt;1319&lt;/SPAN&gt; proto&lt;SPAN class=""&gt;.&lt;/SPAN&gt;END_COMMAND_PART &lt;SPAN class=""&gt;1321&lt;/SPAN&gt; answer &lt;SPAN class=""&gt;=&lt;/SPAN&gt; &lt;SPAN class=""&gt;self&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;gateway_client&lt;SPAN class=""&gt;.&lt;/SPAN&gt;send_command(command) &lt;SPAN class=""&gt;-&amp;gt; 1322&lt;/SPAN&gt; return_value &lt;SPAN class=""&gt;=&lt;/SPAN&gt; get_return_value( &lt;SPAN class=""&gt;1323&lt;/SPAN&gt; answer, &lt;SPAN class=""&gt;self&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;gateway_client, &lt;SPAN class=""&gt;self&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;target_id, &lt;SPAN class=""&gt;self&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;name) &lt;SPAN class=""&gt;1325&lt;/SPAN&gt; &lt;SPAN class=""&gt;for&lt;/SPAN&gt; temp_arg &lt;SPAN class=""&gt;in&lt;/SPAN&gt; temp_args: &lt;SPAN class=""&gt;1326&lt;/SPAN&gt; &lt;SPAN class=""&gt;if&lt;/SPAN&gt; &lt;SPAN class=""&gt;hasattr&lt;/SPAN&gt;(temp_arg, &lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;_detach&lt;/SPAN&gt;&lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;span class="lia-unicode-emoji" title=":disappointed_face:"&gt;😞&lt;/span&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
    <pubDate>Fri, 28 Nov 2025 11:13:29 GMT</pubDate>
    <dc:creator>Ms_Techzill</dc:creator>
    <dc:date>2025-11-28T11:13:29Z</dc:date>
    <item>
      <title>How to Access Azure Key Vault Secrets in Fabric Notebook Using Managed Identity</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Science/How-to-Access-Azure-Key-Vault-Secrets-in-Fabric-Notebook-Using/m-p/4887800#M942</link>
      <description>&lt;P&gt;I am trying to retrieve secrets from Azure Key Vault in a Microsoft Fabric Notebook using:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;from&lt;/SPAN&gt; &lt;SPAN&gt;notebookutils&lt;/SPAN&gt; &lt;SPAN&gt;import&lt;/SPAN&gt; &lt;SPAN&gt;mssparkutils&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;# Use the reference alias and secret names&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;CONNECTION_STRING&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;mssparkutils&lt;/SPAN&gt;&lt;SPAN&gt;.credentials.getSecret(&lt;/SPAN&gt;&lt;SPAN&gt;"emailcommunicationkey"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"ACS-CONNECTION-STRING"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;SENDER&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;mssparkutils&lt;/SPAN&gt;&lt;SPAN&gt;.credentials.getSecret(&lt;/SPAN&gt;&lt;SPAN&gt;"emailcommunicationkey"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"SENDER-EMAIL"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;print&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;CONNECTION_STRING&lt;/SPAN&gt;&lt;SPAN&gt;[:&lt;/SPAN&gt;&lt;SPAN&gt;15&lt;/SPAN&gt;&lt;SPAN&gt;] + &lt;/SPAN&gt;&lt;SPAN&gt;"*****"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;However, I keep getting this error:&lt;/P&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN class=""&gt;Py4JJavaError&lt;/SPAN&gt;&lt;SPAN&gt; Traceback (most recent call last) Cell &lt;/SPAN&gt;&lt;SPAN class=""&gt;In[16], line 4&lt;/SPAN&gt; &lt;SPAN class=""&gt;1&lt;/SPAN&gt; &lt;SPAN class=""&gt;from&lt;/SPAN&gt; &lt;SPAN class=""&gt;notebookutils&lt;/SPAN&gt; &lt;SPAN class=""&gt;import&lt;/SPAN&gt;&lt;SPAN&gt; mssparkutils &lt;/SPAN&gt;&lt;SPAN class=""&gt;3&lt;/SPAN&gt; &lt;SPAN class=""&gt;# Use the reference alias and secret names&lt;/SPAN&gt; &lt;SPAN class=""&gt;----&amp;gt; 4&lt;/SPAN&gt;&lt;SPAN&gt; CONNECTION_STRING &lt;/SPAN&gt;&lt;SPAN class=""&gt;=&lt;/SPAN&gt;&lt;SPAN&gt; mssparkutils&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;credentials&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;getSecret(&lt;/SPAN&gt;&lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;emailcommunicationkey&lt;/SPAN&gt;&lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;ACS-CONNECTION-STRING&lt;/SPAN&gt;&lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;) &lt;/SPAN&gt;&lt;SPAN class=""&gt;5&lt;/SPAN&gt;&lt;SPAN&gt; SENDER &lt;/SPAN&gt;&lt;SPAN class=""&gt;=&lt;/SPAN&gt;&lt;SPAN&gt; mssparkutils&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;credentials&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;getSecret(&lt;/SPAN&gt;&lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;emailcommunicationkey&lt;/SPAN&gt;&lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;SENDER-EMAIL&lt;/SPAN&gt;&lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;) &lt;/SPAN&gt;&lt;SPAN class=""&gt;7&lt;/SPAN&gt; &lt;SPAN class=""&gt;print&lt;/SPAN&gt;&lt;SPAN&gt;(CONNECTION_STRING[:&lt;/SPAN&gt;&lt;SPAN class=""&gt;15&lt;/SPAN&gt;&lt;SPAN&gt;] &lt;/SPAN&gt;&lt;SPAN class=""&gt;+&lt;/SPAN&gt; &lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;*****&lt;/SPAN&gt;&lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;) File &lt;/SPAN&gt;&lt;SPAN class=""&gt;~/cluster-env/trident_env/lib/python3.11/site-packages/notebookutils/mssparkutils/credentials.py:27&lt;/SPAN&gt;&lt;SPAN&gt;, in &lt;/SPAN&gt;&lt;SPAN class=""&gt;getSecret&lt;/SPAN&gt;&lt;SPAN class=""&gt;(akvName, secret, linkedService)&lt;/SPAN&gt; &lt;SPAN class=""&gt;25&lt;/SPAN&gt; &lt;SPAN class=""&gt;def&lt;/SPAN&gt; &lt;SPAN class=""&gt;getSecret&lt;/SPAN&gt;&lt;SPAN&gt;(akvName, secret, linkedService&lt;/SPAN&gt;&lt;SPAN class=""&gt;=&lt;/SPAN&gt;&lt;SPAN class=""&gt;'&lt;/SPAN&gt;&lt;SPAN class=""&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;&lt;span class="lia-unicode-emoji" title=":disappointed_face:"&gt;😞&lt;/span&gt; &lt;/SPAN&gt;&lt;SPAN class=""&gt;26&lt;/SPAN&gt; &lt;SPAN class=""&gt;if&lt;/SPAN&gt;&lt;SPAN&gt; linkedService &lt;/SPAN&gt;&lt;SPAN class=""&gt;==&lt;/SPAN&gt; &lt;SPAN class=""&gt;'&lt;/SPAN&gt;&lt;SPAN class=""&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;: &lt;/SPAN&gt;&lt;SPAN class=""&gt;---&amp;gt; 27&lt;/SPAN&gt; &lt;SPAN class=""&gt;return&lt;/SPAN&gt;&lt;SPAN&gt; creds&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;getSecret(akvName, secret) &lt;/SPAN&gt;&lt;SPAN class=""&gt;28&lt;/SPAN&gt; &lt;SPAN class=""&gt;else&lt;/SPAN&gt;&lt;SPAN&gt;: &lt;/SPAN&gt;&lt;SPAN class=""&gt;29&lt;/SPAN&gt; &lt;SPAN class=""&gt;return&lt;/SPAN&gt;&lt;SPAN&gt; creds&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;getSecret(akvName, secret, linkedService)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Thu, 27 Nov 2025 15:28:07 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Science/How-to-Access-Azure-Key-Vault-Secrets-in-Fabric-Notebook-Using/m-p/4887800#M942</guid>
      <dc:creator>Ms_Techzill</dc:creator>
      <dc:date>2025-11-27T15:28:07Z</dc:date>
    </item>
    <item>
      <title>Re: How to Access Azure Key Vault Secrets in Fabric Notebook Using Managed Identity</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Science/How-to-Access-Azure-Key-Vault-Secrets-in-Fabric-Notebook-Using/m-p/4888259#M943</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="javascript:void(0)" data-lia-user-mentions="" data-lia-user-uid="824995" data-lia-user-login="Ms_Techzill" class="lia-mention lia-mention-user"&gt;Ms_Techzill&lt;/a&gt;,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Iam not sure about the error message. But check out this nice video from Patrick. With this it worked for me.&lt;/P&gt;&lt;P&gt;&lt;A href="https://www.youtube.com/watch?v=XI94dJyxHwU" target="_blank"&gt;Keep your secrets SAFE in Microsoft Fabric and Azure Key Vault&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Also good to know that currently the actual notebook owner need to have the Key Vault RBAC rights as delegation to workspace identity or SP is not supported.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Best regards!&lt;/P&gt;</description>
      <pubDate>Fri, 28 Nov 2025 09:27:18 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Science/How-to-Access-Azure-Key-Vault-Secrets-in-Fabric-Notebook-Using/m-p/4888259#M943</guid>
      <dc:creator>Mauro89</dc:creator>
      <dc:date>2025-11-28T09:27:18Z</dc:date>
    </item>
    <item>
      <title>Re: How to Access Azure Key Vault Secrets in Fabric Notebook Using Managed Identity</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Science/How-to-Access-Azure-Key-Vault-Secrets-in-Fabric-Notebook-Using/m-p/4888354#M945</link>
      <description>&lt;P&gt;&lt;a href="javascript:void(0)" data-lia-user-mentions="" data-lia-user-uid="937100" data-lia-user-login="Mauro89" class="lia-mention lia-mention-user"&gt;Mauro89&lt;/a&gt;&amp;nbsp;, thank you for your response.&amp;nbsp; I have watched the video and when I try to run the api_key from my part it shows ["redacted"] just as that of the video. However, when I included it in my code I have the below&lt;BR /&gt;code&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;from&lt;/SPAN&gt; &lt;SPAN&gt;notebookutils&lt;/SPAN&gt; &lt;SPAN&gt;import&lt;/SPAN&gt; &lt;SPAN&gt;mssparkutils&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;import&lt;/SPAN&gt; &lt;SPAN&gt;pandas&lt;/SPAN&gt; &lt;SPAN&gt;as&lt;/SPAN&gt; &lt;SPAN&gt;pd&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;import&lt;/SPAN&gt; &lt;SPAN&gt;io&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;import&lt;/SPAN&gt; &lt;SPAN&gt;base64&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;from&lt;/SPAN&gt;&lt;SPAN&gt; azure.communication.email &lt;/SPAN&gt;&lt;SPAN&gt;import&lt;/SPAN&gt;&lt;SPAN&gt; EmailClient&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;from&lt;/SPAN&gt;&lt;SPAN&gt; azure.keyvault.secrets &lt;/SPAN&gt;&lt;SPAN&gt;import&lt;/SPAN&gt;&lt;SPAN&gt; SecretClient&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;# ====== Load secrets from Azure Key Vault ======&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;# &amp;nbsp;Replace "kv-emailcomm" with your actual Key Vault connection name in Fabric&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;CONNECTION_STRING&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;mssparkutils&lt;/SPAN&gt;&lt;SPAN&gt;.credentials.getSecret(&lt;/SPAN&gt;&lt;SPAN&gt;"emailcommunicationkey"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"ACS-CONNECTION-STRING"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;SENDER&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;mssparkutils&lt;/SPAN&gt;&lt;SPAN&gt;.credentials.getSecret(&lt;/SPAN&gt;&lt;SPAN&gt;"emailcommunicationkey"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"SENDER-EMAIL"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;# Initialize EmailClient&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;client&lt;/SPAN&gt;&lt;SPAN&gt; = EmailClient.from_connection_string(&lt;/SPAN&gt;&lt;SPAN&gt;CONNECTION_STRING&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;# ====== Load churn data from Spark ======&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;df&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;spark&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;read&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;load&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;churn_alert&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;df&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;toPandas&lt;/SPAN&gt;&lt;SPAN&gt;()&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;# ====== Filter for test email (optional) ======&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;# If you want to send all data, skip this filter&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;# If you want only rows for girl, uncomment below:&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;# churn_alert = churn_alert[churn_alert['email'] == ' ']&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;# Create CSV attachment&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;csv_buffer&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;io&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;StringIO&lt;/SPAN&gt;&lt;SPAN&gt;()&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;churn_alert&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;to_csv&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;csv_buffer&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;index&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;False&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;csv_base64&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;base64&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;b64encode&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;csv_buffer&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;getvalue&lt;/SPAN&gt;&lt;SPAN&gt;().&lt;/SPAN&gt;&lt;SPAN&gt;encode&lt;/SPAN&gt;&lt;SPAN&gt;()).&lt;/SPAN&gt;&lt;SPAN&gt;decode&lt;/SPAN&gt;&lt;SPAN&gt;()&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;# Email Content&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;plain_text_content&lt;/SPAN&gt;&lt;SPAN&gt; = (&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;f&lt;/SPAN&gt;&lt;SPAN&gt;"Hello friend,&lt;/SPAN&gt;&lt;SPAN&gt;\n\n&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;"Hope you’re doing well. This is a test&lt;/SPAN&gt;&lt;SPAN&gt;\n\n&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;"Best regards,&lt;/SPAN&gt;&lt;SPAN&gt;\n&lt;/SPAN&gt;&lt;SPAN&gt;testing team"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;# Prepare message&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;message&lt;/SPAN&gt;&lt;SPAN&gt; = {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;"senderAddress"&lt;/SPAN&gt;&lt;SPAN&gt;: &lt;/SPAN&gt;&lt;SPAN&gt;SENDER&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;"recipients"&lt;/SPAN&gt;&lt;SPAN&gt;: {&lt;/SPAN&gt;&lt;SPAN&gt;"to"&lt;/SPAN&gt;&lt;SPAN&gt;: [{&lt;/SPAN&gt;&lt;SPAN&gt;"address"&lt;/SPAN&gt;&lt;SPAN&gt;: &lt;/SPAN&gt;&lt;SPAN&gt;" "&lt;/SPAN&gt;&lt;SPAN&gt;}]},&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;"content"&lt;/SPAN&gt;&lt;SPAN&gt;: {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;"subject"&lt;/SPAN&gt;&lt;SPAN&gt;: &lt;/SPAN&gt;&lt;SPAN&gt;"Churn Alert: Your Customers at Risk"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;"plainText"&lt;/SPAN&gt;&lt;SPAN&gt;: &lt;/SPAN&gt;&lt;SPAN&gt;plain_text_content&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; },&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;"attachments"&lt;/SPAN&gt;&lt;SPAN&gt;: [&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;"name"&lt;/SPAN&gt;&lt;SPAN&gt;: &lt;/SPAN&gt;&lt;SPAN&gt;"churn_report.csv"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;"contentType"&lt;/SPAN&gt;&lt;SPAN&gt;: &lt;/SPAN&gt;&lt;SPAN&gt;"text/csv"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;"contentInBase64"&lt;/SPAN&gt;&lt;SPAN&gt;: &lt;/SPAN&gt;&lt;SPAN&gt;csv_base64&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; ]&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;# Send email&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;try&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;poller&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;client&lt;/SPAN&gt;&lt;SPAN&gt;.begin_send(&lt;/SPAN&gt;&lt;SPAN&gt;message&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;result&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;poller&lt;/SPAN&gt;&lt;SPAN&gt;.result()&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;print&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;f&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;span class="lia-unicode-emoji" title=":white_heavy_check_mark:"&gt;✅&lt;/span&gt; Email sent to " " | Message ID: &lt;/SPAN&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;SPAN&gt;result&lt;/SPAN&gt;&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;'id'&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;except&lt;/SPAN&gt; &lt;SPAN&gt;Exception&lt;/SPAN&gt; &lt;SPAN&gt;as&lt;/SPAN&gt; &lt;SPAN&gt;e&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;print&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;f&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;span class="lia-unicode-emoji" title=":cross_mark:"&gt;❌&lt;/span&gt; Failed to send email: &lt;/SPAN&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;SPAN&gt;e&lt;/SPAN&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;this is the output&lt;BR /&gt;&lt;SPAN class=""&gt;---------------------------------------------------------------------------&lt;/SPAN&gt; &lt;SPAN class=""&gt;Py4JJavaError&lt;/SPAN&gt; Traceback (most recent call last) Cell &lt;SPAN class=""&gt;In[49], line 14&lt;/SPAN&gt; &lt;SPAN class=""&gt;7&lt;/SPAN&gt; &lt;SPAN class=""&gt;from&lt;/SPAN&gt; &lt;SPAN class=""&gt;azure&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;keyvault&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;secrets&lt;/SPAN&gt; &lt;SPAN class=""&gt;import&lt;/SPAN&gt; SecretClient &lt;SPAN class=""&gt;11&lt;/SPAN&gt; &lt;SPAN class=""&gt;# ====== Load secrets from Azure Key Vault ======&lt;/SPAN&gt; &lt;SPAN class=""&gt;12&lt;/SPAN&gt; &lt;SPAN class=""&gt;13&lt;/SPAN&gt; &lt;SPAN class=""&gt;# Replace "kv-emailcomm" with your actual Key Vault connection name in Fabric&lt;/SPAN&gt; &lt;SPAN class=""&gt;---&amp;gt; 14&lt;/SPAN&gt; CONNECTION_STRING &lt;SPAN class=""&gt;=&lt;/SPAN&gt; mssparkutils&lt;SPAN class=""&gt;.&lt;/SPAN&gt;credentials&lt;SPAN class=""&gt;.&lt;/SPAN&gt;getSecret(&lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;emailcommunicationkey&lt;/SPAN&gt;&lt;SPAN class=""&gt;"&lt;/SPAN&gt;, &lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;ACS-CONNECTION-STRING&lt;/SPAN&gt;&lt;SPAN class=""&gt;"&lt;/SPAN&gt;) &lt;SPAN class=""&gt;15&lt;/SPAN&gt; SENDER &lt;SPAN class=""&gt;=&lt;/SPAN&gt; mssparkutils&lt;SPAN class=""&gt;.&lt;/SPAN&gt;credentials&lt;SPAN class=""&gt;.&lt;/SPAN&gt;getSecret(&lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;emailcommunicationkey&lt;/SPAN&gt;&lt;SPAN class=""&gt;"&lt;/SPAN&gt;, &lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;SENDER-EMAIL&lt;/SPAN&gt;&lt;SPAN class=""&gt;"&lt;/SPAN&gt;) &lt;SPAN class=""&gt;19&lt;/SPAN&gt; &lt;SPAN class=""&gt;# Initialize EmailClient&lt;/SPAN&gt; File &lt;SPAN class=""&gt;~/cluster-env/trident_env/lib/python3.11/site-packages/notebookutils/mssparkutils/credentials.py:27&lt;/SPAN&gt;, in &lt;SPAN class=""&gt;getSecret&lt;/SPAN&gt;&lt;SPAN class=""&gt;(akvName, secret, linkedService)&lt;/SPAN&gt; &lt;SPAN class=""&gt;25&lt;/SPAN&gt; &lt;SPAN class=""&gt;def&lt;/SPAN&gt; &lt;SPAN class=""&gt;getSecret&lt;/SPAN&gt;(akvName, secret, linkedService&lt;SPAN class=""&gt;=&lt;/SPAN&gt;&lt;SPAN class=""&gt;'&lt;/SPAN&gt;&lt;SPAN class=""&gt;'&lt;/SPAN&gt;&lt;span class="lia-unicode-emoji" title=":disappointed_face:"&gt;😞&lt;/span&gt; &lt;SPAN class=""&gt;26&lt;/SPAN&gt; &lt;SPAN class=""&gt;if&lt;/SPAN&gt; linkedService &lt;SPAN class=""&gt;==&lt;/SPAN&gt; &lt;SPAN class=""&gt;'&lt;/SPAN&gt;&lt;SPAN class=""&gt;'&lt;/SPAN&gt;: &lt;SPAN class=""&gt;---&amp;gt; 27&lt;/SPAN&gt; &lt;SPAN class=""&gt;return&lt;/SPAN&gt; creds&lt;SPAN class=""&gt;.&lt;/SPAN&gt;getSecret(akvName, secret) &lt;SPAN class=""&gt;28&lt;/SPAN&gt; &lt;SPAN class=""&gt;else&lt;/SPAN&gt;: &lt;SPAN class=""&gt;29&lt;/SPAN&gt; &lt;SPAN class=""&gt;return&lt;/SPAN&gt; creds&lt;SPAN class=""&gt;.&lt;/SPAN&gt;getSecret(akvName, secret, linkedService) File &lt;SPAN class=""&gt;~/cluster-env/trident_env/lib/python3.11/site-packages/py4j/java_gateway.py:1322&lt;/SPAN&gt;, in &lt;SPAN class=""&gt;JavaMember.__call__&lt;/SPAN&gt;&lt;SPAN class=""&gt;(self, *args)&lt;/SPAN&gt; &lt;SPAN class=""&gt;1316&lt;/SPAN&gt; command &lt;SPAN class=""&gt;=&lt;/SPAN&gt; proto&lt;SPAN class=""&gt;.&lt;/SPAN&gt;CALL_COMMAND_NAME &lt;SPAN class=""&gt;+&lt;/SPAN&gt;\ &lt;SPAN class=""&gt;1317&lt;/SPAN&gt; &lt;SPAN class=""&gt;self&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;command_header &lt;SPAN class=""&gt;+&lt;/SPAN&gt;\ &lt;SPAN class=""&gt;1318&lt;/SPAN&gt; args_command &lt;SPAN class=""&gt;+&lt;/SPAN&gt;\ &lt;SPAN class=""&gt;1319&lt;/SPAN&gt; proto&lt;SPAN class=""&gt;.&lt;/SPAN&gt;END_COMMAND_PART &lt;SPAN class=""&gt;1321&lt;/SPAN&gt; answer &lt;SPAN class=""&gt;=&lt;/SPAN&gt; &lt;SPAN class=""&gt;self&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;gateway_client&lt;SPAN class=""&gt;.&lt;/SPAN&gt;send_command(command) &lt;SPAN class=""&gt;-&amp;gt; 1322&lt;/SPAN&gt; return_value &lt;SPAN class=""&gt;=&lt;/SPAN&gt; get_return_value( &lt;SPAN class=""&gt;1323&lt;/SPAN&gt; answer, &lt;SPAN class=""&gt;self&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;gateway_client, &lt;SPAN class=""&gt;self&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;target_id, &lt;SPAN class=""&gt;self&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;name) &lt;SPAN class=""&gt;1325&lt;/SPAN&gt; &lt;SPAN class=""&gt;for&lt;/SPAN&gt; temp_arg &lt;SPAN class=""&gt;in&lt;/SPAN&gt; temp_args: &lt;SPAN class=""&gt;1326&lt;/SPAN&gt; &lt;SPAN class=""&gt;if&lt;/SPAN&gt; &lt;SPAN class=""&gt;hasattr&lt;/SPAN&gt;(temp_arg, &lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;_detach&lt;/SPAN&gt;&lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;span class="lia-unicode-emoji" title=":disappointed_face:"&gt;😞&lt;/span&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Fri, 28 Nov 2025 11:13:29 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Science/How-to-Access-Azure-Key-Vault-Secrets-in-Fabric-Notebook-Using/m-p/4888354#M945</guid>
      <dc:creator>Ms_Techzill</dc:creator>
      <dc:date>2025-11-28T11:13:29Z</dc:date>
    </item>
    <item>
      <title>Re: How to Access Azure Key Vault Secrets in Fabric Notebook Using Managed Identity</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Science/How-to-Access-Azure-Key-Vault-Secrets-in-Fabric-Notebook-Using/m-p/4888357#M946</link>
      <description>&lt;P&gt;--------------------------------------------------------------------------- Py4JJavaError Traceback (most recent call last) Cell In[49], line 14 7 from azure.keyvault.secrets import SecretClient 11 # ====== Load secrets from Azure Key Vault ====== 12 13 # Replace "kv-emailcomm" with your actual Key Vault connection name in Fabric ---&amp;gt; 14 CONNECTION_STRING = mssparkutils.credentials.getSecret("emailcommunicationkey", "ACS-CONNECTION-STRING") 15 SENDER = mssparkutils.credentials.getSecret("emailcommunicationkey", "SENDER-EMAIL") 19 # Initialize EmailClient File ~/cluster-env/trident_env/lib/python3.11/site-packages/notebookutils/mssparkutils/credentials.py:27, in getSecret(akvName, secret, linkedService) 25 def getSecret(akvName, secret, linkedService=''): 26 if linkedService == '': ---&amp;gt; 27 return creds.getSecret(akvName, secret) 28 else: 29 return creds.getSecret(akvName, secret, linkedService)&lt;/P&gt;</description>
      <pubDate>Fri, 28 Nov 2025 11:21:12 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Science/How-to-Access-Azure-Key-Vault-Secrets-in-Fabric-Notebook-Using/m-p/4888357#M946</guid>
      <dc:creator>Ms_Techzill</dc:creator>
      <dc:date>2025-11-28T11:21:12Z</dc:date>
    </item>
    <item>
      <title>Re: How to Access Azure Key Vault Secrets in Fabric Notebook Using Managed Identity</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Science/How-to-Access-Azure-Key-Vault-Secrets-in-Fabric-Notebook-Using/m-p/4888434#M949</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="javascript:void(0)" data-lia-user-mentions="" data-lia-user-uid="824995" data-lia-user-login="Ms_Techzill" class="lia-mention lia-mention-user"&gt;Ms_Techzill&lt;/a&gt;&amp;nbsp;, Thank you for reaching out to the Microsoft Community Forum.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;a href="javascript:void(0)" data-lia-user-mentions="" data-lia-user-uid="937100" data-lia-user-login="Mauro89" class="lia-mention lia-mention-user"&gt;Mauro89&lt;/a&gt;&amp;nbsp;&amp;nbsp;was right about the core issue, the notebook runs under the user who executes it and that user must have Key Vault secret-read permissions. If they don’t, getSecret() throws the Py4JJavaError you’re seeing.&lt;/P&gt;
&lt;P&gt;Your call is also failing because mssparkutils.credentials.getSecret() expects either a properly created linked service alias or the full Key Vault URL. Most of the time the alias doesn’t resolve, so call the vault directly using its endpoint and make sure the notebook runner has a Key Vault secrets role. Once you pass the URL and the user has permissions, the secret loads cleanly.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/synapse-analytics/spark/microsoft-spark-utilities?pivots=programming-language-python" target="_blank"&gt;Introduction to Microsoft Spark utilities - Azure Synapse Analytics | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/key-vault/general/rbac-guide?tabs=azure-cli" target="_blank"&gt;Grant permission to applications to access an Azure key vault using Azure RBAC | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/fabric/data-engineering/notebook-utilities" target="_blank"&gt;NotebookUtils (former MSSparkUtils) for Fabric - Microsoft Fabric | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/fabric/data-engineering/microsoft-spark-utilities" target="_blank"&gt;Microsoft Spark Utilities (MSSparkUtils) for Fabric - Microsoft Fabric | Microsoft Learn&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 28 Nov 2025 13:05:40 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Science/How-to-Access-Azure-Key-Vault-Secrets-in-Fabric-Notebook-Using/m-p/4888434#M949</guid>
      <dc:creator>v-hashadapu</dc:creator>
      <dc:date>2025-11-28T13:05:40Z</dc:date>
    </item>
    <item>
      <title>Re: How to Access Azure Key Vault Secrets in Fabric Notebook Using Managed Identity</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Science/How-to-Access-Azure-Key-Vault-Secrets-in-Fabric-Notebook-Using/m-p/4889761#M954</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="javascript:void(0)" data-lia-user-mentions="" data-lia-user-uid="824995" data-lia-user-login="Ms_Techzill" class="lia-mention lia-mention-user"&gt;Ms_Techzill&lt;/a&gt;,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I guess your Key Vault URI is not correct. Thats where you wrote "&lt;SPAN&gt;emailcommunicationkey", so the first parameter in the "get_secret" function.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Here acutally your "Vault URI" needs to be passed. This you can find if you open you Key Vault and go to the overview (marked in red):&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;img /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Then the second parameter as being the acutal name of the secret.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This should work then as expected.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Best regards!&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 01 Dec 2025 15:34:57 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Science/How-to-Access-Azure-Key-Vault-Secrets-in-Fabric-Notebook-Using/m-p/4889761#M954</guid>
      <dc:creator>Mauro89</dc:creator>
      <dc:date>2025-12-01T15:34:57Z</dc:date>
    </item>
    <item>
      <title>Re: How to Access Azure Key Vault Secrets in Fabric Notebook Using Managed Identity</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Science/How-to-Access-Azure-Key-Vault-Secrets-in-Fabric-Notebook-Using/m-p/4889826#M955</link>
      <description>&lt;P&gt;Hello&amp;nbsp;&lt;a href="javascript:void(0)" data-lia-user-mentions="" data-lia-user-uid="937100" data-lia-user-login="Mauro89" class="lia-mention lia-mention-user"&gt;Mauro89&lt;/a&gt;&amp;nbsp;, thanks so much. I eventually changed it to the vault uri and it worked. Thank you&lt;/P&gt;</description>
      <pubDate>Mon, 01 Dec 2025 16:53:14 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Science/How-to-Access-Azure-Key-Vault-Secrets-in-Fabric-Notebook-Using/m-p/4889826#M955</guid>
      <dc:creator>Ms_Techzill</dc:creator>
      <dc:date>2025-12-01T16:53:14Z</dc:date>
    </item>
  </channel>
</rss>

