sja32/aws-entra-id-saml-federation-lab
GitHub: sja32/aws-entra-id-saml-federation-lab
该项目演示了如何通过 SAML 2.0 在 Microsoft Entra ID 与 AWS 之间实现企业级联合身份验证和基于角色的访问控制。
Stars: 0 | Forks: 0
# AWS + Microsoft Entra ID SAML 联合实验室
## 概述
本项目演示了使用 SAML 2.0 身份验证在 Microsoft Entra ID (Azure AD) 和 Amazon Web Services (AWS) 之间实现企业身份联合。
该实验室实现了:
- 联合身份验证
- 基于角色的访问控制 (RBAC)
- AWS IAM 角色担任
- Microsoft Entra 企业应用程序集成
- 最小权限访问隔离
- 通过 SAML 联合获取临时 AWS 凭证
该环境模拟了企业如何使用身份提供者 (IdP) 集中管理身份验证,同时在 AWS 内部维持精细的授权控制。
# 目录
- [概述](#overview)
- [架构](#architecture)
- [使用的技术](#technologies-used)
- [目标](#objectives)
- [AWS 配置](#aws-configuration)
- [AWS IAM 角色](#aws-iam-roles)
- [IAM 策略](#iam-policies)
- [Microsoft Entra ID 配置](#microsoft-entra-id-configuration)
- [用户分配](#user-assignments)
- [SAML 声明配置](#saml-claims-configuration)
- [故障排除](#troubleshooting)
- [验证](#validation)
- [演示的安全概念](#security-concepts-demonstrated)
- [展示的技能](#skills-demonstrated)
- [未来增强功能](#future-enhancements)
- [经验教训](#lessons-learned)
- [作者](#author)
# 架构
```
User
↓
Microsoft Entra ID
↓ SAML Assertion
AWS IAM Identity Provider
↓
AWS IAM Roles
↓
AWS Console Access
```
# 使用的技术
- Microsoft Entra ID
- AWS IAM
- SAML 2.0
- AWS IAM 角色
- AWS 身份提供者
- RBAC
- 云安全概念
# 目标
本实验室的目标是:
- 在 Entra ID 和 AWS 之间配置 SAML 联合身份验证
- 实施基于角色的访问控制
- 为以下对象创建独立的 AWS 角色:
- 管理员
- 基础设施工程师
- 审计员
- 将 Entra 用户分配到 AWS 角色
- 验证 AWS 的 SSO 身份验证
- 排查无效的 SAML 响应错误
# AWS 配置
## IAM 身份提供者
配置 AWS IAM 将 Microsoft Entra ID 信任为 SAML 身份提供者。
### 身份提供者
```
Provider Name: EntraID
Type: SAML
```
# AWS IAM 角色
创建了以下 AWS IAM 角色:
| 角色 | 用途 |
|---|---|
| AWS-Admin-Role | 完全管理访问权限 |
| AWS-InfraAdmin-Role | 基础设施管理 |
| AWS-Auditor-Role | 只读审计访问权限 |
# IAM 策略
## AWS-Admin-Role
附加策略:
- AdministratorAccess
## AWS-InfraAdmin-Role
附加策略:
- PowerUserAccess
- CloudWatchFullAccess
## AWS-Auditor-Role
附加策略:
- ReadOnlyAccess
- SecurityAudit
# Microsoft Entra ID 配置
## 企业应用程序
创建的企业应用程序:
```
AWS Single-Account Access
```
配置了:
- 基于 SAML 的身份验证
- AWS 登录 URL
- SAML 声明
- 角色分配
# 用户分配
| 用户 | 分配的角色 |
|---|---|
| Sharod Admin | AWS-Admin-Role |
| Sharod Infra | AWS-InfraAdmin-Role |
| Sharod Audit | AWS-Auditor-Role |
# SAML 声明配置
配置了所需的 AWS SAML 声明:
| 声明 | 值 |
|---|---|
| Role | user.assignedroles |
| RoleSessionName | user.userprincipalname |
| SessionDuration | 900 |
# 故障排除
## 问题:无效的 SAML 响应
### 根本原因
在初始配置期间,SAML Role 声明的格式不正确。
### 解决方案
配置 Role 声明以正确使用:
```
user.assignedroles
```
并将 Entra 应用程序角色正确映射到 AWS IAM 角色 ARN。
# 验证
## 成功的 AWS 联合登录

## Microsoft Entra 角色分配

## SAML 声明配置截图

验证了:
- SAML 身份验证
- AWS 角色担任
- RBAC 隔离
- 控制台访问
- 联合身份流程
# 演示的安全概念
- 联合身份管理
- SAML 2.0 身份验证
- 最小权限访问
- RBAC
- 临时凭证
- 身份联合
- 云访问治理
# 展示的技能
- AWS IAM
- Microsoft Entra ID (Azure AD)
- SAML 2.0 联合
- 身份与访问管理 (IAM)
- 基于角色的访问控制 (RBAC)
- 联合身份验证
- AWS 身份提供者
- 云安全架构
- 企业单点登录 (SSO)
- SAML 身份验证故障排除
- 安全文档编写
- 最小权限设计
# 未来增强功能
计划的增强功能包括:
- AWS CloudTrail 集成
- CloudWatch 日志记录
- GuardDuty
- AWS Config
- MFA 条件访问策略
- 多账户联合
- 基础设施即代码
# 经验教训
- 正确的 SAML 声明格式至关重要
- 角色 ARN 格式必须完全匹配
- 企业应用程序需要同时具备:
- 应用程序角色定义
- 用户/组分配
- 联合身份验证故障排除需要同时验证 IdP 和 SP 的配置
# 作者
Sharod Allen
GitHub:
https://github.com/sja32
标签:AWS IAM, Microsoft Entra ID, RBAC权限控制, SAML 2.0, SecOps, 云安全架构, 单点登录, 身份与访问管理