

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 最佳实践：管理权限
<a name="best-practices-permissions"></a>

**重要**  
该 AWS OpsWorks Stacks 服务于 2024 年 5 月 26 日终止，新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问，请通过 re [AWS : Post 或通过 Pre](https://repost.aws/) mium Su [AWS pp](https://aws.amazon.com/support) ort 与 AWS 支持 团队联系。

您必须拥有某种形式的 AWS 凭证才能访问您的账户资源。下面是一些向员工提供访问权限的一般准则。
+ 首先，最重要的是，我们建议您不要使用您账户的根凭证来访问 AWS 资源。

  取而代之的是，为您的员工创建 [IAM 身份](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html)并添加提供适当访问的权限。然后每个员工都可以使用凭证来访问资源。
+ 员工应仅有权访问完成其工作所需的那些资源。

  例如，应用程序开发人员只需要访问运行其应用程序的堆栈。
+ 员工应仅有权使用完成其工作所需的那些操作。

  应用程序开发人员可能需要完全权限，以获得将其应用程序部署到相应生产堆栈所需的开发堆栈和权限。他们可能不需要在生产堆栈上启动或停止实例、创建或删除层以及其他操作的权限。

有关管理权限的更多一般信息，请参阅 [AWS 安全凭证](https://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html)。

您可以使用 OpsWorks Stacks 或 IAM 来管理用户权限。请注意，两个选项并不是互斥的；有时需要同时使用它们。

**OpsWorks 堆栈权限管理**  
每个堆栈都有一个 **Permissions** 页面，您可以借助该页面向用户授予访问堆栈的权限并指定他们可执行哪些操作。通过设置以下其中一个权限等级，您可以指定用户的权限。每个等级都表示一个 IAM policy，该策略授予执行一组标准操作的权限。  
+ **Deny** 拒绝以任何方式与堆栈交互的权限。
+ **Show** 授予查看堆栈配置的权限，但不能以任何方式修改堆栈状态。
+ **Deploy** 包含 **Show** 权限，并且授予用户部署应用程序的权限。
+ **Manage** 包含 **Deploy** 权限，并允许用户执行各种堆栈管理操作，如创建或删除实例和层。
**管理**权限级别不授予少量高级 OpsWorks 堆栈操作的权限，包括创建或克隆堆栈。您必须使用 IAM policy 来授予这些权限。
除了设置权限级别外，您还可以使用堆栈的 “**权限**” 页面来指定用户是否拥有堆栈实例的SSH/RDP and sudo/admin权限。有关 OpsWorks Stacks 权限管理的更多信息，请参阅[授予每堆栈权限](opsworks-security-users-console.md)。有关管理 SSH 访问权限的更多信息，请参阅 [管理 SSH 访问](security-ssh-access.md)。

**IAM 权限管理**  
借助 IAM 权限管理，您可以使用 IAM 控制台、API 或 CLI 将 JSON 格式的策略附加到显式指定其权限的用户。有关 IAM 权限管理的更多信息，请参阅[什么是 IAM？](https://docs.aws.amazon.com/IAM/latest/UserGuide/Introduction.html)。

**建议：**从 OpsWorks 堆栈**权限**管理开始。如果您需要微调用户权限，或者授予用户 **Manage** 权限等级中不包含的权限，您可以结合使用这两种方法。 OpsWorks 然后，Stacks 会评估这两个策略以确定用户的权限。

**重要**  
如果用户具有多个包含冲突权限的策略，则始终应该拒绝。例如，假设您将 IAM policy 附加到一个允许访问特定堆栈的用户，并且还使用该堆栈的 **Permissions** 页面向用户分配一个 **Deny** 权限等级。**Deny** 权限等级优先，并且用户将无法访问该堆栈。有关更多信息，请参阅 [IAM policy 评估逻辑](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html)。

例如，假设您希望用户能够对堆栈执行除了添加或删除层以外的大多数操作。
+ 指定 **Manage** 权限等级，它允许用户执行大多数堆栈管理操作，包括创建和删除层。
+ 将以下[客户管理的策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingPolicies.html)附加到用户，该策略拒绝在该堆栈上使用[CreateLayer](https://docs.aws.amazon.com/opsworks/latest/APIReference/API_CreateLayer.html)和[DeleteLayer](https://docs.aws.amazon.com/opsworks/latest/APIReference/API_DeleteLayer.html)操作的权限。您可以通过其 *[Amazon 资源名称 (ARN)](https://docs.aws.amazon.com/glossary/latest/reference/glos-chap.html#ARN)* 来标识该堆栈，可在堆栈的 **Settings (设置)** 页面上找到此名称。

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Deny",
        "Action": [
          "opsworks:CreateLayer",
          "opsworks:DeleteLayer"
        ],
        "Resource": "arn:aws:opsworks:*:*:stack/2f18b4cb-4de5-4429-a149-ff7da9f0d8ee/"
      }
    ]
  }
  ```

------

有关包括示例策略在内的更多信息，请参阅 [通过附加 IAM 策略管理 OpsWorks 堆栈权限附加 IAM policy](opsworks-security-users-policy.md)。

**注意**  
使用 IAM policy 的另一种方法是设置一个条件，用以限制员工对指定 IP 地址或地址范围的堆栈访问。例如，为了确保员工仅从企业防火墙内部访问堆栈，可以设置一个条件，限制对您的公司 IP 地址范围的访问。有关更多信息，请参阅[条件](https://docs.aws.amazon.com/IAM/latest/UserGuide/AccessPolicyLanguage_ElementDescriptions.html#Condition)。