<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Security on Omar H.Ajmi | Python, Java, Terraform &amp; DevOps TILs</title>
    <link>https://omar-ajmi.de5.net/tags/security/</link>
    <description>Recent content in Security on Omar H.Ajmi | Python, Java, Terraform &amp; DevOps TILs</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Fri, 11 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://omar-ajmi.de5.net/tags/security/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>🍱 Terraform state: the file you shouldn&#39;t casually commit</title>
      <link>https://omar-ajmi.de5.net/posts/en/terraform-sensitive-state/</link>
      <pubDate>Fri, 11 Sep 2026 00:00:00 +0000</pubDate>
      
      <guid>https://omar-ajmi.de5.net/posts/en/terraform-sensitive-state/</guid>
      <description>&lt;h1 id=&#34;-terraform-state-the-file-you-shouldnt-casually-commit&#34; class=&#34;header-anchor-wrapper&#34;&gt;🍱 Terraform state: the file you shouldn&amp;rsquo;t casually commit
  &lt;a href=&#34;#-terraform-state-the-file-you-shouldnt-casually-commit&#34; class=&#34;header-anchor-link&#34;&gt;
    &lt;svg width=&#34;16px&#34; height=&#34;16px&#34; viewBox=&#34;0 0 24 24&#34;&gt;
&lt;svg
    xmlns=&#34;http://www.w3.org/2000/svg&#34;
    width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34;
    stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34;
    stroke-linejoin=&#34;round&#34;&gt;
    &lt;line x1=&#34;4&#34; y1=&#34;9&#34; x2=&#34;20&#34; y2=&#34;9&#34;&gt;&lt;/line&gt;&lt;line x1=&#34;4&#34; y1=&#34;15&#34; x2=&#34;20&#34; y2=&#34;15&#34;&gt;&lt;/line&gt;&lt;line x1=&#34;10&#34; y1=&#34;3&#34; x2=&#34;8&#34; y2=&#34;21&#34;&gt;&lt;/line&gt;&lt;line x1=&#34;16&#34; y1=&#34;3&#34; x2=&#34;14&#34; y2=&#34;21&#34;&gt;&lt;/line&gt;
&lt;/svg&gt;

&lt;/svg&gt;
  &lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;You avoided hardcoding a password in Terraform. Nice. You added &lt;code&gt;sensitive = true&lt;/code&gt;. Even nicer.&lt;/p&gt;
&lt;p&gt;So the secret is safe now, right?&lt;/p&gt;
&lt;p&gt;Well… not necessarily. 😬&lt;/p&gt;

&lt;h2 id=&#34;-the-principle&#34; class=&#34;header-anchor-wrapper&#34;&gt;🧠 The principle
  &lt;a href=&#34;#-the-principle&#34; class=&#34;header-anchor-link&#34;&gt;
    &lt;svg width=&#34;16px&#34; height=&#34;16px&#34; viewBox=&#34;0 0 24 24&#34;&gt;
&lt;svg
    xmlns=&#34;http://www.w3.org/2000/svg&#34;
    width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34;
    stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34;
    stroke-linejoin=&#34;round&#34;&gt;
    &lt;line x1=&#34;4&#34; y1=&#34;9&#34; x2=&#34;20&#34; y2=&#34;9&#34;&gt;&lt;/line&gt;&lt;line x1=&#34;4&#34; y1=&#34;15&#34; x2=&#34;20&#34; y2=&#34;15&#34;&gt;&lt;/line&gt;&lt;line x1=&#34;10&#34; y1=&#34;3&#34; x2=&#34;8&#34; y2=&#34;21&#34;&gt;&lt;/line&gt;&lt;line x1=&#34;16&#34; y1=&#34;3&#34; x2=&#34;14&#34; y2=&#34;21&#34;&gt;&lt;/line&gt;
&lt;/svg&gt;

&lt;/svg&gt;
  &lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Terraform state tracks managed infrastructure and can contain resource attributes and sensitive values. Terraform plan files can also contain sensitive data.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>🐍 Python 3.14: t-Strings Look Like f-Strings, But They Aren&#39;t Strings</title>
      <link>https://omar-ajmi.de5.net/posts/en/python-t-strings/</link>
      <pubDate>Tue, 21 Oct 2025 00:00:00 +0000</pubDate>
      
      <guid>https://omar-ajmi.de5.net/posts/en/python-t-strings/</guid>
      <description>&lt;h1 id=&#34;-python-314-t-strings-look-like-f-strings-but-they-arent-strings&#34; class=&#34;header-anchor-wrapper&#34;&gt;🐍 Python 3.14: t-Strings Look Like f-Strings, But They Aren&amp;rsquo;t Strings
  &lt;a href=&#34;#-python-314-t-strings-look-like-f-strings-but-they-arent-strings&#34; class=&#34;header-anchor-link&#34;&gt;
    &lt;svg width=&#34;16px&#34; height=&#34;16px&#34; viewBox=&#34;0 0 24 24&#34;&gt;
&lt;svg
    xmlns=&#34;http://www.w3.org/2000/svg&#34;
    width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34;
    stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34;
    stroke-linejoin=&#34;round&#34;&gt;
    &lt;line x1=&#34;4&#34; y1=&#34;9&#34; x2=&#34;20&#34; y2=&#34;9&#34;&gt;&lt;/line&gt;&lt;line x1=&#34;4&#34; y1=&#34;15&#34; x2=&#34;20&#34; y2=&#34;15&#34;&gt;&lt;/line&gt;&lt;line x1=&#34;10&#34; y1=&#34;3&#34; x2=&#34;8&#34; y2=&#34;21&#34;&gt;&lt;/line&gt;&lt;line x1=&#34;16&#34; y1=&#34;3&#34; x2=&#34;14&#34; y2=&#34;21&#34;&gt;&lt;/line&gt;
&lt;/svg&gt;

&lt;/svg&gt;
  &lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;An f-string takes your variables and glues them into a string immediately. That&amp;rsquo;s lovely for greetings and terrible for SQL, HTML and shell commands, where &amp;ldquo;just glue it&amp;rdquo; is how injection bugs are born.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>🧪 AI Makes Writing Code Cheap. Getting It Right Is Still Expensive.</title>
      <link>https://omar-ajmi.de5.net/posts/en/ai-code-generation-is-not-software-engineering/</link>
      <pubDate>Tue, 15 Apr 2025 00:00:00 +0000</pubDate>
      
      <guid>https://omar-ajmi.de5.net/posts/en/ai-code-generation-is-not-software-engineering/</guid>
      <description>&lt;h1 id=&#34;-ai-makes-writing-code-cheap-getting-it-right-is-still-expensive&#34; class=&#34;header-anchor-wrapper&#34;&gt;🧪 AI Makes Writing Code Cheap. Getting It Right Is Still Expensive.
  &lt;a href=&#34;#-ai-makes-writing-code-cheap-getting-it-right-is-still-expensive&#34; class=&#34;header-anchor-link&#34;&gt;
    &lt;svg width=&#34;16px&#34; height=&#34;16px&#34; viewBox=&#34;0 0 24 24&#34;&gt;
&lt;svg
    xmlns=&#34;http://www.w3.org/2000/svg&#34;
    width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34;
    stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34;
    stroke-linejoin=&#34;round&#34;&gt;
    &lt;line x1=&#34;4&#34; y1=&#34;9&#34; x2=&#34;20&#34; y2=&#34;9&#34;&gt;&lt;/line&gt;&lt;line x1=&#34;4&#34; y1=&#34;15&#34; x2=&#34;20&#34; y2=&#34;15&#34;&gt;&lt;/line&gt;&lt;line x1=&#34;10&#34; y1=&#34;3&#34; x2=&#34;8&#34; y2=&#34;21&#34;&gt;&lt;/line&gt;&lt;line x1=&#34;16&#34; y1=&#34;3&#34; x2=&#34;14&#34; y2=&#34;21&#34;&gt;&lt;/line&gt;
&lt;/svg&gt;

&lt;/svg&gt;
  &lt;/a&gt;
&lt;/h1&gt;


&lt;h2 id=&#34;-fluent-isnt-correct&#34; class=&#34;header-anchor-wrapper&#34;&gt;🧪 Fluent isn&amp;rsquo;t correct
  &lt;a href=&#34;#-fluent-isnt-correct&#34; class=&#34;header-anchor-link&#34;&gt;
    &lt;svg width=&#34;16px&#34; height=&#34;16px&#34; viewBox=&#34;0 0 24 24&#34;&gt;
&lt;svg
    xmlns=&#34;http://www.w3.org/2000/svg&#34;
    width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34;
    stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34;
    stroke-linejoin=&#34;round&#34;&gt;
    &lt;line x1=&#34;4&#34; y1=&#34;9&#34; x2=&#34;20&#34; y2=&#34;9&#34;&gt;&lt;/line&gt;&lt;line x1=&#34;4&#34; y1=&#34;15&#34; x2=&#34;20&#34; y2=&#34;15&#34;&gt;&lt;/line&gt;&lt;line x1=&#34;10&#34; y1=&#34;3&#34; x2=&#34;8&#34; y2=&#34;21&#34;&gt;&lt;/line&gt;&lt;line x1=&#34;16&#34; y1=&#34;3&#34; x2=&#34;14&#34; y2=&#34;21&#34;&gt;&lt;/line&gt;
&lt;/svg&gt;

&lt;/svg&gt;
  &lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;It&amp;rsquo;s getting easier to produce code. That doesn&amp;rsquo;t automatically make it easier to ship good software.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>🤫 Terraform: Write-Only Arguments Keep Secrets Out of State</title>
      <link>https://omar-ajmi.de5.net/posts/en/terraform-write-only-arguments/</link>
      <pubDate>Tue, 18 Mar 2025 00:00:00 +0000</pubDate>
      
      <guid>https://omar-ajmi.de5.net/posts/en/terraform-write-only-arguments/</guid>
      <description>&lt;h1 id=&#34;-terraform-write-only-arguments-keep-secrets-out-of-state&#34; class=&#34;header-anchor-wrapper&#34;&gt;🤫 Terraform: Write-Only Arguments Keep Secrets Out of State
  &lt;a href=&#34;#-terraform-write-only-arguments-keep-secrets-out-of-state&#34; class=&#34;header-anchor-link&#34;&gt;
    &lt;svg width=&#34;16px&#34; height=&#34;16px&#34; viewBox=&#34;0 0 24 24&#34;&gt;
&lt;svg
    xmlns=&#34;http://www.w3.org/2000/svg&#34;
    width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34;
    stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34;
    stroke-linejoin=&#34;round&#34;&gt;
    &lt;line x1=&#34;4&#34; y1=&#34;9&#34; x2=&#34;20&#34; y2=&#34;9&#34;&gt;&lt;/line&gt;&lt;line x1=&#34;4&#34; y1=&#34;15&#34; x2=&#34;20&#34; y2=&#34;15&#34;&gt;&lt;/line&gt;&lt;line x1=&#34;10&#34; y1=&#34;3&#34; x2=&#34;8&#34; y2=&#34;21&#34;&gt;&lt;/line&gt;&lt;line x1=&#34;16&#34; y1=&#34;3&#34; x2=&#34;14&#34; y2=&#34;21&#34;&gt;&lt;/line&gt;
&lt;/svg&gt;

&lt;/svg&gt;
  &lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;You generate a database password in Terraform. It works. Then you open the state file and there it is, in plain text, waiting for anyone with read access.&lt;/p&gt;
&lt;p&gt;Marking a variable &lt;code&gt;sensitive&lt;/code&gt; hides it from CLI output, but it doesn&amp;rsquo;t remove it from state. Terraform 1.11 adds a better tool for some of these cases.&lt;/p&gt;</description>
    </item>
    
  </channel>
</rss>