# 通过IAM Role连接Github

blog原文地址：<https://aws.amazon.com/blogs/security/use-iam-roles-to-connect-github-actions-to-actions-in-aws/>

## 为什么要用IAM Role为Github提供动态的安全凭据

使用IAM Role为GitHub提供动态的安全凭据主要是为了提高安全性和灵活性。借助IAM Role，GitHub的操作不再需要存储静态的安全凭据，减少了安全凭据泄露的风险。同时，IAM Role可以控制对AWS资源的精细访问权限，例如限制仅特定的GitHub操作或工作流程可以访问特定的AWS服务或资源。此外，使用IAM Role可以利用AWS的临时安全凭据，进一步增强安全性。这些凭据可以自动旋转和过期，无需手动管理，简化了凭据管理过程。总之，通过IAM Role，可以在确保安全的同时，便利地将GitHub与AWS服务集成，实现自动化的云资源管理和部署。

## 为 GitHub 创建 IAM OIDC 身份提供程序

要在Amazon Web Services (AWS)中配置OpenID Connect (OIDC)以供Github使用，您需要按照以下步骤进行设置：

1. 添加身份提供者到AWS：
   * 转到AWS IAM控制台，选择“Identity providers”并创建一个新的OpenID Connect提供者。
   * 在提供者URL中使用`https://token.actions.githubusercontent.com`。
   * 对于“Audience”字段，请使用`sts.amazonaws.com`。
2. 配置角色和信任策略：
   * 在IAM中配置角色和信任，确保在信任策略中添加了必要的条件，以限制GitHub操作可以假定的角色。
   * 确保信任策略中包含了token.actions.githubusercontent.com:sub字段，用于验证条件。
3. 更新Github Actions工作流程：
   * 在您的YAML文件中进行两个更改：
     * 为令牌添加权限设置。
     * 使用aws-actions/configure-aws-credentials操作来交换OIDC令牌（JWT）以获取云访问令牌。
4. 请求访问令牌：
   * aws-actions/configure-aws-credentials操作将从GitHub OIDC提供者接收JWT，然后请求AWS的访问令牌。
5. 访问云提供商资源：
   * 一旦获得访问令牌，您可以使用特定的云操作或脚本进行身份验证，并部署到云资源。

请按照上述步骤配置OpenID Connect以在Github中进行身份验证并访问AWS资源。详细信息和示例代码可以在提供的链接中找到。
