☁️ AWS Shared Responsibility Model

Reference: aws.amazon.com/compliance/shared-responsibility-model
This model splits security duties between AWS and you, the customer.
How a request flows:
Request travels over the internet
Hits AWS infrastructure (data centers, servers, networking)
Your application processes it
Data is stored/retrieved and sent back to the user
Since AWS infra powers all of this, security naturally splits into two zones: AWS's job and your job.
AWS protects the infrastructure everything runs on:
Physical data centers
Hardware, servers, networking gear, storage devices
Global infrastructure (Regions, AZs, Edge locations)
Hypervisors and other foundational services
You never have to worry about physical security, hardware failures, power, cooling, or network backbone protection — that's all AWS.
You secure whatever you build or configure on top:
Your data and applications
OS (if you're running EC2)
Network configs, security groups, firewalls
IAM (identities and access)
Encryption settings
Backups
Simple rule: if you launched it or configured it, you're responsible for locking it down.
One-liner to remember it: AWS secures the foundation, you secure what you build on it.🔐 AWS: Security of the Cloud
📜 AWS Acceptable Use Policy (AUP)
Reference: aws.amazon.com/aup
Since AWS runs on shared global infrastructure, it enforces rules for what's allowed on that infrastructure.
<div class="infographic-sharedresp">
<style>
.infographic-sharedresp {
--ink: #1a1a1a;
--ink-soft: #5c5c5c;
--paper: #ffffff;
--paper-alt: #f0ece4;
--accent: #2563eb;
--accent-soft:#e3ebfd;
--line: #ddd6c9;
--cust: #b5560f;
--cust-soft: #fbe9d9;
--radius: 10px;
--display-font: Georgia, 'Times New Roman', serif;
--mono-font: 'SF Mono', Consolas, monospace;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
color: var(--ink);
background: transparent;
max-width: 780px;
margin: 0 auto;
line-height: 1.4;
}
.infographic-sharedresp[data-theme="dark"] {
--ink: #e8e6e1;
--ink-soft: #9a968c;
--paper: #13171F;
--paper-alt: #1c212c;
--accent: #5b8def;
--accent-soft:#202942;
--line: #2c313d;
--cust: #e69a5c;
--cust-soft: #3a2c1c;
}
.infographic-sharedresp * { box-sizing: border-box; }
.sr-header { padding: 1.5rem 1.5rem 0.5rem; text-align: center; }
.sr-header h2 {
font-family: var(--display-font); font-size: 1.5rem; margin: 0 0 0.4rem;
letter-spacing: -0.01em;
}
.sr-header p { color: var(--ink-soft); font-size: 0.9rem; margin: 0; max-width: 46ch; margin: 0 auto; }
.sr-toggle {
display: flex; justify-content: center; gap: 0.5rem;
padding: 1.25rem 1rem 0.5rem; flex-wrap: wrap;
}
.sr-toggle button {
font: inherit; font-size: 0.85rem; font-weight: 600;
background: var(--paper-alt); color: var(--ink-soft);
border: 1px solid var(--line); border-radius: var(--radius);
padding: 0.5rem 1.1rem; cursor: pointer; transition: background 0.15s, color 0.15s, border-color 0.15s;
}
.sr-toggle button:hover { border-color: var(--accent); }
.sr-toggle button.is-active {
background: var(--accent); color: #fff; border-color: var(--accent);
}
.sr-example {
text-align: center; font-size: 0.78rem; color: var(--ink-soft);
margin: 0.35rem 0 0.5rem; min-height: 1.2em;
}
.sr-example strong { color: var(--ink); }
.sr-legend {
display: flex; justify-content: center; gap: 1.5rem;
font-size: 0.78rem; color: var(--ink-soft); padding: 0.25rem 0 1rem;
}
.sr-legend span { display: inline-flex; align-items: center; gap: 0.4rem; }
.sr-swatch { width: 10px; height: 10px; border-radius: 3px; display: inline-block; }
.sr-swatch.aws { background: var(--accent); }
.sr-swatch.cust { background: var(--cust); }
.sr-stack {
display: flex; flex-direction: column-reverse; gap: 6px;
padding: 0 1.25rem 1.25rem;
}
.sr-layer {
display: block; width: 100%; text-align: left; font: inherit;
color: var(--ink);
border: 1px solid var(--line); border-radius: var(--radius);
background: var(--paper-alt); cursor: pointer; padding: 0;
overflow: hidden; transition: border-color 0.15s;
}
.sr-layer:hover { border-color: var(--accent); }
.sr-layer-head {
display: flex; align-items: center; justify-content: space-between;
padding: 0.65rem 0.9rem; gap: 0.75rem;
}
.sr-layer-name { font-size: 0.88rem; font-weight: 600; color: var(--ink); }
.sr-layer-owner {
font-size: 0.7rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em;
padding: 0.2rem 0.55rem; border-radius: 999px; white-space: nowrap;
transition: background 0.2s, color 0.2s;
}
.sr-layer-owner.aws { background: var(--accent-soft); color: var(--accent); }
.sr-layer-owner.cust { background: var(--cust-soft); color: var(--cust); }
.sr-layer-detail {
display: none; padding: 0 0.9rem 0.75rem; font-size: 0.8rem; color: var(--ink-soft);
border-top: 1px solid var(--line);
padding-top: 0.6rem;
}
.sr-layer.is-open .sr-layer-detail { display: block; }
.sr-layer.is-open { border-color: var(--accent); }
.sr-summary {
margin: 0 1.25rem 1.25rem; padding: 0.9rem 1rem;
background: var(--accent-soft); border-radius: var(--radius);
font-size: 0.85rem; color: var(--ink); text-align: center;
}
.sr-aup {
border-top: 1px solid var(--line); padding: 1.25rem;
}
.sr-aup h3 {
font-family: var(--display-font); font-size: 1.05rem; margin: 0 0 0.6rem; text-align: center;
color: var(--ink);
}
.sr-chips { display: flex; flex-wrap: wrap; gap: 0.5rem; justify-content: center; }
.sr-chip {
font-size: 0.76rem; background: var(--paper-alt); border: 1px solid var(--line);
border-radius: var(--radius); padding: 0.35rem 0.65rem; color: var(--ink-soft);
}
.sr-aup-note {
text-align: center; font-size: 0.78rem; color: var(--ink-soft); margin-top: 0.75rem;
}
@media (prefers-reduced-motion: reduce) {
.infographic-sharedresp *, .infographic-sharedresp *::before, .infographic-sharedresp *::after {
animation-duration: 0.001ms !important; transition-duration: 0.001ms !important;
}
}
</style>
<div class="sr-header">
<p>Security is split by layer. Pick a service model to see where the line moves.</p>
</div>
<div class="sr-toggle">
<button data-model="iaas" class="is-active">IaaS</button>
<button data-model="paas">PaaS</button>
<button data-model="saas">SaaS</button>
</div>
<div class="sr-example">e.g. <strong class="sr-example-text">EC2, EBS, VPC</strong></div>
<div class="sr-legend">
<span><span class="sr-swatch aws"></span>AWS manages</span>
<span><span class="sr-swatch cust"></span>You manage</span>
</div>
<div class="sr-stack" id="sr-stack"></div>
<div class="sr-summary" id="sr-summary"></div>
<div class="sr-aup">
<h3>📜 AWS Acceptable Use Policy — Prohibited</h3>
<div class="sr-chips">
<span class="sr-chip">Illegal activity</span>
<span class="sr-chip">DDoS / hacking attempts</span>
<span class="sr-chip">Malware distribution</span>
<span class="sr-chip">Unauthorized access</span>
<span class="sr-chip">Spam & phishing</span>
<span class="sr-chip">Fraud</span>
</div>
<p class="sr-aup-note">Violations can lead to account suspension or termination.</p>
</div>
<script>
(function () {
var wrapper = document.currentScript.closest('.infographic-sharedresp')
|| document.querySelector('.infographic-sharedresp');
// --- dark mode detection ---
var bodyAttr = document.body.getAttribute('data-darkmode');
var dark;
if (bodyAttr === 'true') { dark = true; }
else if (bodyAttr === 'false') { dark = false; }
else {
var match = document.cookie.match(/(?:^|;\s*)darkMode=([^;]+)/);
dark = match ? match[1] === 'true' : false;
}
if (dark) wrapper.setAttribute('data-theme', 'dark');
// --- data ---
var layers = [
{ id: 'dc', name: 'Data Centers', detail: 'Physical buildings, power, cooling — always AWS.' },
{ id: 'hw', name: 'Hardware & Network', detail: 'Servers, storage, cabling, global backbone — always AWS.' },
{ id: 'virt', name: 'Virtualization', detail: 'Hypervisor isolating tenants — always AWS.' },
{ id: 'os', name: 'Operating System', detail: 'Patching and hardening of the OS.' },
{ id: 'mid', name: 'Middleware & Runtime', detail: 'Database engine, language runtime, managed services.' },
{ id: 'app', name: 'Application', detail: 'Your code and business logic.' },
{ id: 'data', name: 'Data & Access', detail: 'Encryption, IAM, backups — always yours.' }
];
var models = {
iaas: { label: 'IaaS', example: 'EC2, EBS, VPC',
owner: { dc:'aws', hw:'aws', virt:'aws', os:'cust', mid:'cust', app:'cust', data:'cust' },
summary: 'IaaS: AWS secures the infrastructure. You manage the OS up to your data.' },
paas: { label: 'PaaS', example: 'RDS, Lambda, Elastic Beanstalk',
owner: { dc:'aws', hw:'aws', virt:'aws', os:'aws', mid:'aws', app:'cust', data:'cust' },
summary: 'PaaS: AWS also handles the OS and runtime. You manage app config and data.' },
saas: { label: 'SaaS', example: 'Chime, WorkMail, WorkDocs',
owner: { dc:'aws', hw:'aws', virt:'aws', os:'aws', mid:'aws', app:'aws', data:'cust' },
summary: 'SaaS: AWS runs almost everything. You just manage your data and user access.' }
};
var stackEl = document.getElementById('sr-stack');
var summaryEl = document.getElementById('sr-summary');
var exampleEl = wrapper.querySelector('.sr-example-text');
var toggleBtns = wrapper.querySelectorAll('.sr-toggle button');
// build layer rows once
layers.forEach(function (layer) {
var btn = document.createElement('button');
btn.className = 'sr-layer';
btn.dataset.layer = layer.id;
btn.innerHTML =
'<div class="sr-layer-head">' +
'<span class="sr-layer-name">' + layer.name + '</span>' +
'<span class="sr-layer-owner"></span>' +
'</div>' +
'<div class="sr-layer-detail">' + layer.detail + '</div>';
btn.addEventListener('click', function () {
var wasOpen = btn.classList.contains('is-open');
stackEl.querySelectorAll('.sr-layer').forEach(function (l) { l.classList.remove('is-open'); });
if (!wasOpen) btn.classList.add('is-open');
});
stackEl.appendChild(btn);
});
function render(modelKey) {
var model = models[modelKey];
exampleEl.textContent = model.example;
summaryEl.textContent = model.summary;
layers.forEach(function (layer) {
var owner = model.owner[layer.id];
var row = stackEl.querySelector('[data-layer="' + layer.id + '"] .sr-layer-owner');
row.textContent = owner === 'aws' ? 'AWS' : 'You';
row.classList.remove('aws', 'cust');
row.classList.add(owner);
});
}
toggleBtns.forEach(function (btn) {
btn.addEventListener('click', function () {
toggleBtns.forEach(function (b) { b.classList.remove('is-active'); });
btn.classList.add('is-active');
render(btn.dataset.model);
});
});
render('iaas');
})();
</script>
</div>