<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Series-Pipeline-Attack-Surface on Sakura Sky: Cloud, Data, Security</title><link>https://www.sakurasky.com/tags/series-pipeline-attack-surface/</link><description>Recent content in Series-Pipeline-Attack-Surface on Sakura Sky: Cloud, Data, Security</description><generator>Hugo</generator><language>en-US</language><copyright>Sakura Sky</copyright><lastBuildDate>Thu, 22 Oct 2026 00:00:00 -0400</lastBuildDate><atom:link href="https://www.sakurasky.com/tags/series-pipeline-attack-surface/index.xml" rel="self" type="application/rss+xml"/><item><title>From a Leaked Pipeline Credential to Bulk Data</title><link>https://www.sakurasky.com/blog/pipeline-attack-surface-leaked-service-account-key-part-1/</link><pubDate>Thu, 22 Oct 2026 00:00:00 -0400</pubDate><guid>https://www.sakurasky.com/blog/pipeline-attack-surface-leaked-service-account-key-part-1/</guid><description>&lt;style&gt;&#10; &#10;.series-pull-quote {&#10; float: right;&#10; clear: both;&#10; width: 340px;&#10; margin-left: 2rem;&#10; margin-bottom: 1.5rem;&#10; border: 1px solid #e9ecef;&#10; border-radius: 6px;&#10; overflow: hidden;&#10; background-color: #ffffff;&#10; &#10; position: relative;&#10; z-index: 20;&#10;}&#10;&#10; &#10;@media (max-width: 768px) {&#10; .series-pull-quote {&#10; float: none;&#10; clear: both;&#10; width: 100%;&#10; margin-left: 0;&#10; }&#10;}&#10;&#10;.series-header {&#10; background-color: #f8f9fa;&#10; color: #6c757d;&#10; font-size: 0.65rem;&#10; font-weight: 700;&#10; letter-spacing: 0.05em;&#10; padding: 0.8rem 1.25rem;&#10; border-bottom: 1px solid #e9ecef;&#10;}&#10;&#10;.part-label {&#10; display: block;&#10; font-size: 0.6rem;&#10; color: #adb5bd;&#10; margin-bottom: 0.15rem;&#10; text-transform: uppercase;&#10;}&#10;&#10;.nav-link-text {&#10; font-size: 0.85rem;&#10; line-height: 1.4;&#10; color: #495057;&#10; text-decoration: none;&#10; &#10; position: relative;&#10; z-index: 21;&#10;}&#10;&#10; &#10;.active-part {&#10; border-left: 4px solid #000 !important;&#10; background-color: #ffffff !important;&#10;}&#10;&#10;.active-part .nav-link-text {&#10; font-size: 0.9rem;&#10; font-weight: 700;&#10; color: #212529;&#10; text-decoration: underline;&#10; text-underline-offset: 3px;&#10;}&#10;&#10;.locked-part .nav-link-text {&#10; color: #ced4da;&#10;}&#10;&#10;.list-group-item {&#10; border-bottom: 1px solid #f8f9fa;&#10; padding: 1rem 1.25rem !important;&#10;}&#10;&lt;/style&gt;&#10;&#10;&lt;aside class="series-pull-quote shadow-sm"&gt;&#10; &lt;div class="series-header"&gt;&#10; READ MORE IN THIS SERIES&#10; &lt;/div&gt;&#10; &lt;div class="list-group list-group-flush"&gt;&#10; &#10; &#10; &#10;&#10; &lt;div class="list-group-item active-part "&gt;&#10; &lt;div class="d-flex justify-content-between align-items-center"&gt;&#10; &lt;div&gt;&#10; &#10; &lt;a href="https://www.sakurasky.com/blog/pipeline-attack-surface-leaked-service-account-key-part-1/" class="nav-link-text"&gt;Part 1 - From a Leaked Pipeline Credential to Bulk Data&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10;&#10; &lt;/div&gt;&#10; &lt;/div&gt;&#10; &#10; &#10; &#10;&#10; &lt;div class="list-group-item locked-part"&gt;&#10; &lt;div class="d-flex justify-content-between align-items-center"&gt;&#10; &lt;div&gt;&#10; &#10; &lt;span class="nav-link-text"&gt;Part 2 - Every Job Is a Principal&lt;/span&gt;&#10; &#10; &lt;/div&gt;&#10;&#10; &lt;/div&gt;&#10; &lt;/div&gt;&#10; &#10; &#10; &#10;&#10; &lt;div class="list-group-item locked-part"&gt;&#10; &lt;div class="d-flex justify-content-between align-items-center"&gt;&#10; &lt;div&gt;&#10; &#10; &lt;span class="nav-link-text"&gt;Part 3 - Whoever Can Merge a Transform Can Read the Data&lt;/span&gt;&#10; &#10; &lt;/div&gt;&#10;&#10; &lt;/div&gt;&#10; &lt;/div&gt;&#10; &#10; &#10; &#10;&#10; &lt;div class="list-group-item locked-part"&gt;&#10; &lt;div class="d-flex justify-content-between align-items-center"&gt;&#10; &lt;div&gt;&#10; &#10; &lt;span class="nav-link-text"&gt;Part 4 - DAG Code Is an Execution Path&lt;/span&gt;&#10; &#10; &lt;/div&gt;&#10;&#10; &lt;/div&gt;&#10; &lt;/div&gt;&#10; &#10; &#10; &#10;&#10; &lt;div class="list-group-item locked-part"&gt;&#10; &lt;div class="d-flex justify-content-between align-items-center"&gt;&#10; &lt;div&gt;&#10; &#10; &lt;span class="nav-link-text"&gt;Part 5 - Every Way Data Leaves BigQuery&lt;/span&gt;&#10; &#10; &lt;/div&gt;&#10;&#10; &lt;/div&gt;&#10; &lt;/div&gt;&#10; &#10; &#10; &#10;&#10; &lt;div class="list-group-item locked-part"&gt;&#10; &lt;div class="d-flex justify-content-between align-items-center"&gt;&#10; &lt;div&gt;&#10; &#10; &lt;span class="nav-link-text"&gt;Part 6 - What a Connector Vendor&amp;#39;s Credential Can Reach&lt;/span&gt;&#10; &#10; &lt;/div&gt;&#10;&#10; &lt;/div&gt;&#10; &lt;/div&gt;&#10; &#10; &#10; &#10;&#10; &lt;div class="list-group-item locked-part"&gt;&#10; &lt;div class="d-flex justify-content-between align-items-center"&gt;&#10; &lt;div&gt;&#10; &#10; &lt;span class="nav-link-text"&gt;Part 7 - What CMEK, Cloud EKM, and Column Encryption Protect Against&lt;/span&gt;&#10; &#10; &lt;/div&gt;&#10;&#10; &lt;/div&gt;&#10; &lt;/div&gt;&#10; &#10; &#10; &#10;&#10; &lt;div class="list-group-item locked-part"&gt;&#10; &lt;div class="d-flex justify-content-between align-items-center"&gt;&#10; &lt;div&gt;&#10; &#10; &lt;span class="nav-link-text"&gt;Part 8 - A Pipeline Credential Leaked: Detection and Response&lt;/span&gt;&#10; &#10; &lt;/div&gt;&#10;&#10; &lt;/div&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10;&lt;/aside&gt;&#10;&#10;&#10;&lt;p&gt;Your dbt job&amp;rsquo;s service account has a key file sitting on a shared drive the early data team used, and another copy in a former contractor&amp;rsquo;s laptop backup. The key has no expiry date. Key creation has been blocked in your organisation for a while, but this key predates the block, and it still gets an access token today. Whoever has the file can use the job&amp;rsquo;s access to your BigQuery datasets, unless a VPC Service Controls perimeter limits where the account&amp;rsquo;s requests can come from.&lt;/p&gt;</description></item></channel></rss>