IAMbic 是一个多云 IAM 控制平面,它将 AWS、Okta、Azure Active Directory、Google Workspace 等云身份管理统一到 Git。
项目描述
IAMbic: 云 IAM 作为代码
"IAMbic: IAM 的版本控制"
IAMbic 是为 DevSecOps、安全和合规团队设计的。它提供了增强的可见性、审计和(可选)对规模 IAM 的控制。它集成了 IAM 源,如 AWS、Okta、Azure AD 和 Google Workspace,并将它们合并到单个版本控制系统(Git)中,这些系统以人类可读的 YAML 文件形式存在,称为“IAMbic 模板”。
无论您是通过 Terraform、CDK、CloudFormation、手动控制台操作还是这些操作的组合来管理资源,IAMbic 都会确保您的 Git 仓库与云 IAM 的实时状态保持同步。任何 IAM 变更,无论其来源如何,都会触发 git 提交。这确保您有一个包含所有 IAM 的 Git 仓库,以统一的格式呈现,包括 Git 历史中的全面审计跟踪。此跟踪详细说明了每个变更、其时间戳和责任实体。
如果您希望采取不干预的方法,IAMbic 可以仅作为审计和可见性工具运行,以便对 IAM 变更有更大的可见性,如上所述。但是,您也可以使用 IAMbic 来管理和防止您指定的 IAM 资源漂移。IAMbic 模板是双向的,这意味着 IAMbic 可以通过您的 CI/CD 管道将 IAM 变更写回云中。GitHub 上会创建一个带有所需更改的拉取请求,经过批准后,然后在云和 Git 中进行反映。此外,IAMbic 允许您声明临时访问或权限 - 它将在定义的过期期结束后处理策略的过期和删除。例如,请参阅 IAMbic 快速入门指南。
如果您想了解更多关于通过 Github Pull-Request 流程进行 IAM 变更的信息,请查看我们 GitOps/IAMOps 哲学页面 上的示例。我们还有一个由 IAMbic 完全管理的 iambic-templates 示例仓库。
更多信息请访问 https://docs.iambic.org。
以下是 BeABetterDev 的 IAMbic 概述和深度分析视频,快速了解 IAMbic 的功能。
如果您需要帮助开始或者有任何问题,请访问我们的 Slack。
与 Terraform 或其他 IaC 工具的集成
IAMbic 设计与 Terraform 和其他基础设施即代码 (IaC) 解决方案协同工作。它作为一个补充工具,通过提供集中式可见性和审计来增强现有 IaC 设置的强度。要了解 IAMbic 和 Terraform 如何共同提升 IAM,以及如何在您的 DevOps 流程中无缝集成,请查看我们的 深度博客文章。
以下是 IAMbic 和 Terraform 之间关键区别的表格
功能 | IAMbic | Terraform (或其他 IaC) |
---|---|---|
多账户 AWS 和组织 | 原生支持 | 第三方工具 (Terragrunt 等) |
声明式临时 访问/权限 |
原生支持 | 无 |
导入当前 IAM 到 VCS |
是 | 第三方工具 (限于单个 AWS 账户) |
自动将新的 IAM 更改提交到 VCS |
是 | 无 |
云审计 IAM 变更 | 是 | 无 |
双向同步 | 是 | 无 |
漂移预防 | 是 | 有限 |
集中式真实来源 所有 IAM 的当前状态 |
是 | 无 |
多云支持 | 目前支持 AWS、Azure AD、Okta 和 Google Workspace, 更多即将到来。 |
是 |
语言 | YAML | HCL |
开源 | 是 | 无 |
集中式 治理与合规 |
原生在 VCS | 无 |
社区支持 | 增长中 | 强大 |
关键功能
- IAM 版本控制:IAMbic 通过将它们集中到一个易于阅读的 Git 仓库中,帮助您审核和(可选)管理来自不同来源的 IAM。
- 全面的审计跟踪:IAMbic 为所有 IAM 变更创建 Git 提交,无论它们是如何发生的。这为您提供了 Git 历史记录中的全面审计跟踪。
- 临时访问和权限:声明性地定义和自动化资源、权限和访问规则的到期日期。
- 漂移预防:保护您希望通过 IAMbic 专有管理的 IAM 资源。IAMbic 将自动还原这些资源的任何非计划更改。
- 动态 AWS 权限:通过灵活的模板简化多账户 AWS 管理,允许多账户角色在不同的账户上有不同的权限和访问规则。
- 集中式管理:IAMbic 保持 Git 更新,以反映云环境的最新、完整状态,在 Git 中维护多个云提供商的单一来源的真实性,以进行审计和合规性。
- 可扩展性:通过强大的插件架构与各种云和应用程序集成。
- 可审计性:使用 Git 历史记录跟踪 IAM 策略、权限和规则的更改。对于 AWS,IAMbic 用 CloudTrail 的详细信息注释非计划提交。
查看IAMbic IAMOps 哲学和IAMbic 模板示例仓库,以了解 IAMbic 的实际应用。
📣 一起来聊聊
您想与我们贡献者取得联系吗?
只需点击下面的按钮,并按照说明操作。
入门指南
通过我们的快速入门指南深入了解 IAMbic,并探索 AWS 多账户角色、身份中心(SSO)权限集、服务控制策略、动态权限、Okta 应用和组分配、Azure Active Directory 用户和组以及 Google Workspace 组分配等强大的模板示例。
我们正在快速扩展对现有资源和云提供商的支持,请经常查看!
IAMbic 安装和支持版本
模板示例
以下是展示 IAMbic 功能的一些示例
AWS 多账户 Cloudwatch 角色
创建一个具有静态权限的 Cloudwatch 角色,跨三个账户动态生成角色名称。该模板将在相应的 AWS 账户上创建三个角色:“dev_cloudwatch”、“staging_cloudwatch”和“prod_cloudwatch”。
有关更多信息,请参阅AWS 入门指南、我们的示例模板仓库中的 AWS IAM 角色部分以及我们关于多账户角色的博客文章。
template_type: NOQ::AWS::IAM::Role
identifier: '{{var.account_name}}_cloudwatch'
included_accounts:
- dev
- staging
- prod
properties:
description:
- description: Cloudwatch role for {{var.account_name}}
assume_role_policy_document:
statement:
- action:
- sts:AssumeRole
- sts:TagSession
effect: Allow
principal:
aws: arn:aws:iam::123456789012:role/ExampleRole
version: '2012-10-17'
inline_policies:
policy_name: cloudwatch_logs
statement:
- effect: allow
action:
- logs:DescribeLogGroups
- logs:DescribeLogStreams
- logs:GetLogEvents
- logs:GetLogRecord
- logs:GetQueryResults
- logs:TestMetricFilter
- logs:FilterLogEvents
- logs:StartQuery
- logs:StopQuery
resource: "*"
managed_policies:
- policy_arn: arn:aws:iam::aws:policy/AdministratorAccess
role_name: '{{var.account_name}}_cloudwatch'
tags:
- key: owner
value: devops
AWS 动态权限
创建一个根据 AWS 账户权限变化的 BackendDeveloperRole。有关更多信息,请参阅AWS 入门指南。
template_type: NOQ::AWS::IAM::Role
identifier: '{{var.account_name}}_backend_developer'
included_accounts:
- '*'
excluded_accounts:
- compliance
properties:
description:
- description: Backend developer role for {{var.account_name}}
assume_role_policy_document:
statement:
- action:
- sts:AssumeRole
- sts:TagSession
effect: Allow
principal:
aws: arn:aws:iam::123456789012:role/ExampleRole
version: '2012-10-17'
inline_policies:
- policy_name: s3_policy
statement:
- # Policy applies to role on all accounts except `customer_data`.
excluded_accounts:
- customer_data
effect: allow
action:
- s3:GetObject
- s3:ListObject
resource:
- "*"
condition:
StringNotEquals:
s3:ResourceTag/sensitive: 'true'
- # Allow write access to non-sensitive resources on the dev account
included_accounts:
- dev
effect: allow
action:
- s3:PutObject
resource:
- "*"
condition:
StringNotEquals:
s3:ResourceTag/sensitive: 'true'
role_name: '{{var.account_name}}_backend_developer'
tags:
- key: owner
value: devops
AWS 身份中心(SSO)权限集
创建一个根据 AWS 账户权限变化的 AWS 身份中心(SSO)权限集。有关更多信息,请参阅AWS 入门指南、我们的示例模板仓库中的 AWS IC/SSO 权限集部分以及我们关于使用 IAMbic 调整 AWS 身份中心(SSO)权限的博客文章。
template_type: NOQ::AWS::IdentityCenter::PermissionSet
access_rules:
- expires_at: 2028-05-19T14:17 UTC
groups:
- engineering
identifier: design
properties:
name: design
customer_managed_policy_references:
- name: base_deny
inline_policy:
statement:
- action:
- ec2:list*
effect: Deny
resource:
- '*'
- action:
- ec2:list*
effect: Deny
expires_at: 2033-05-19T14:17 UTC
resource:
- '*'
managed_policies:
- arn: arn:aws:iam::aws:policy/AWSHealthFullAccess
permissions_boundary:
customer_managed_policy_reference:
name: base_permission_boundary
session_duration: PT4H
tags:
- key: owner
value: design@example.com
Okta 应用分配
管理 Okta 应用分配,包括特定用户的到期日期。有关更多信息,请参阅Okta 入门指南。
template_type: NOQ::Okta::App
idp_name: development
properties:
name: Salesforce.com
assignments:
- user: username@example.com
- user: username2@example.com
- user: username3@example.com
expires_at: 2023-09-01T00:00 UTC
status: ACTIVE
AWS 服务控制策略
管理对 AWS 服务的访问可能很复杂。这就是服务控制策略(SCP)的用武之地。SCP 允许您定义 AWS 账户中可访问的服务和操作。借助 IAMbic,您可以导入现有的 SCP,创建新的 SCP 来限制对特定 AWS 服务的访问,并防止出现任何漂移,以确保您以预期的方式保护敏感信息。
例如,假设您想限制对某些 AWS 区域的访问。您可以创建一个 SCP,拒绝除您指定的区域以外的所有区域的访问。如果您希望更严格地控制数据居住地和合规性,这特别有用。
以下是如何设置此功能的示例
template_type: NOQ::AWS::Organizations::SCP
account_id: '123456789012'
iambic_managed: enforced
identifier: RestrictRegions
org_id: o-123456
properties:
policy_document:
statement:
- condition:
StringNotEquals:
aws:RequestedRegion:
- us-east-1
- us-west-2
effect: Deny
not_action:
- a4b:*
- budgets:*
- ce:*
- chime:*
- cloudfront:*
- cur:*
- globalaccelerator:*
- health:*
- iam:*
- importexport:*
- mobileanalytics:*
- organizations:*
- route53:*
- route53domains:*
- shield:*
- support:*
- trustedadvisor:*
- waf:*
- wellarchitected:*
resource:
- '*'
policy_name: RestrictRegions
targets:
roots:
- r-123
在这个示例中,名为 RestrictRegions
的 SCP 拒绝访问除 us-east-1
和 us-west-2
之外的所有 AWS 区域。它还排除了某些全局服务。
有关如何开始使用AWS和SCP的更多信息,请参阅我们的AWS入门指南以及示例模板仓库中的AWS SCP部分。您还可以在我们的博客文章中了解更多关于如何使用IAMbic按账户定制AWS身份中心(SSO)权限的信息。
Okta群组分配
轻松管理带有成员到期日期的Okta群组分配。有关更多信息,请参阅Okta入门指南。
template_type: NOQ::Okta::Group
idp_name: main
properties:
name: engineering_interns
description: Engineering Interns
members:
- username: intern1@example.com
expires_at: 2023-09-01 # Interns last day
- username: intern2@example.com
expires_at: 2023-09-01
Google群组分配
管理Google Workspace群组分配,包括外部用户的临时访问。有关更多信息,请参阅Google Workspace入门指南。
template_type: NOQ::GoogleWorkspace::Group
properties:
name: DockerHub
description: Dockerhub Access
domain: example.com
email: dockerhub@example.com
members:
- email: owner@example.com
role: OWNER
- email: external_user@gmail.com
- email: some_engineer@example.com
expires_at: 2023-03-05
Azure Active Directory用户
管理Azure Active Directory用户及其属性。有关更多信息,请参阅Azure AD入门指南。
expires_at: 2025-01-01
template_type: NOQ::AzureAD::User
idp_name: development
properties:
display_name: Example User
given_name: Example
username: user@example.com
Azure Active Directory群组和群组分配
管理Azure Active Directory群组和群组分配,包括外部用户的临时访问。有关更多信息,请参阅Azure AD入门指南。
template_type: NOQ::AzureAD::Group
idp_name: development
properties:
name: iambic_test_group
description: A test group to use with IAMbic
members:
- name: user@example.com
data_type: user
expires_at: tomorrow
预览独立的IAMbic模板仓库
在GitHub上预览独立的IAMbic模板仓库,了解IAMbic如何跟踪多云IAM资产。此仓库已公开供您研究。无需将您的仓库公开。
IAMbic - 测试版软件
IAMbic目前处于测试版,不建议在生产环境中使用。我们正在积极改进软件的稳定性和性能,并欢迎社区反馈。
如果您选择在当前状态下使用IAMbic,请注意您可能会遇到错误、性能问题或其他意外行为。我们强烈建议在生产环境中使用IAMbic之前,在非生产环境中对其进行彻底测试。
请将任何问题或反馈报告给我们的GitHub问题跟踪器。感谢您对项目的支持和贡献!
贡献
欢迎并鼓励向IAMbic做出贡献!如果您发现错误或想提出改进建议,请创建一个问题。我们也欢迎合并请求。
联系我们
如果您有任何问题或反馈,请通过Slack联系我们。我们很乐意听到您的声音!
许可协议
IAMbic (此仓库)
IAMbic遵循Apache-2.0许可协议。Noq Software,Inc.还提供商业许可和支持。
提供商插件
提供商插件(如AWS、Okta、Azure Active Directory和Google Workspace插件)遵循Apache 2许可协议。您可以在不发布其源代码的情况下自由编写自己的提供商插件以用于内部服务。
有关更多信息,请访问https://docs.iambic.org/license。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。