

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

# 如何 AWS Serverless Application Repository 与 IAM 配合使用
<a name="security_iam_service-with-iam"></a>

在使用 IAM 管理对的访问权限之前 AWS Serverless Application Repository，您应该了解有哪些 IAM 功能可供使用 AWS Serverless Application Repository。

要大致了解 IAM 的工作原理，请参阅 [IAM *用户指南中的了解 IAM* 的工作原理](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html)。要全面了解这些 AWS 服务 AWS Serverless Application Repository 和其他服务如何与 IAM 配合使用，请参阅 IAM *用户指南中的与 IAM* [配合使用的AWS 服务](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)。

**Topics**
+ [AWS Serverless Application Repository 基于身份的策略](#security_iam_service-with-iam-id-based-policies)
+ [AWS Serverless Application Repository 应用程序政策](#security_iam_service-with-iam-resource-based-policies)
+ [基于 AWS Serverless Application Repository 标签的授权](#security_iam_service-with-iam-tags)
+ [AWS Serverless Application Repository IAM 角色](#security_iam_service-with-iam-roles)

## AWS Serverless Application Repository 基于身份的策略
<a name="security_iam_service-with-iam-id-based-policies"></a>

通过使用 IAM 基于身份的策略，可以指定允许或拒绝的操作和资源以及允许或拒绝操作的条件。 AWS Serverless Application Repository 支持特定的操作、资源和条件键。要了解在 JSON 策略中使用的所有元素，请参阅《IAM 用户指南》** 中的 [IAM JSON 策略元素参考](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html)。

下面介绍权限策略示例。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CreateApplication",
            "Effect": "Allow",
            "Action": [
                "serverlessrepo:CreateApplication"
            ],
            "Resource": "*"
        },
        {
            "Sid": "CreateApplicationVersion",
            "Effect": "Allow",
            "Action": [
                "serverlessrepo:CreateApplicationVersion"
            ],
            "Resource": "arn:aws:serverlessrepo:us-east-1:111122223333:applications/application-name"
        }
    ]
}
```

------

 该策略包含两条语句：




+  第一条语句授予`serverlessrepo:CreateApplication`对所有 AWS Serverless Application Repository 资源 AWS Serverless Application Repository 执行操作的权限，`Resource`值由通配符 (\$1) 指定。
+ 第二条语句使用应用程序的 Amazon AWS 资源名称 (ARN) 来授予对资源 AWS Serverless Application Repository 执行`serverlessrepo:CreateApplicationVersion`操作的 AWS Serverless Application Repository 权限。通过 `Resource` 值来指定应用程序。

该策略不指定 `Principal` 元素，因为在基于身份的策略中，您未指定获取权限的委托人。附加了策略的用户是隐式委托人。向 IAM 角色附加权限策略后，该角色的信任策略中标识的委托人将获取权限。

 有关显示所有 AWS Serverless Application Repository API 操作及其适用的 AWS 资源的表格，请参阅[AWS Serverless Application Repository API 权限：操作和资源参考](serverlessrepo-api-permissions-ref.md)。

### 操作
<a name="security_iam_service-with-iam-id-based-policies-actions"></a>

管理员可以使用 AWS JSON 策略来指定谁有权访问什么。也就是说，哪个**主体**可以对什么**资源**执行**操作**，以及在什么**条件**下执行。

JSON 策略的 `Action` 元素描述可用于在策略中允许或拒绝访问的操作。在策略中包含操作以授予执行关联操作的权限。

中的策略操作在操作前 AWS Serverless Application Repository 使用以下前缀:`serverlessrepo:`. 例如，要授予某人 AWS Serverless Application Repository `SearchApplications`通过 API 操作运行 AWS Serverless Application Repository 实例的权限，您需要将该`serverlessrepo:SearchApplications`操作包含在他们的策略中。策略语句必须包含 `Action` 或 `NotAction` 元素。 AWS Serverless Application Repository 定义了自己的一组操作，这些操作描述了您可以使用此服务执行的任务。

要在单个语句中指定多项操作，请使用逗号将它们隔开，如下所示：

```
"Action": [
      "serverlessrepo:action1",
      "serverlessrepo:action2"
]
```

您也可以使用通配符 （\$1) 指定多个操作。例如，要指定以单词 `List` 开头的所有操作，包括以下操作：

```
"Action": "serverlessrepo:List*"
```



要查看 AWS Serverless Application Repository 操作列表，请参阅 *IAM 用户指南 AWS Serverless Application Repository*中的[定义操作](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awsserverlessapplicationrepository.html#awsserverlessapplicationrepository-actions-as-permissions)。

### 资源
<a name="security_iam_service-with-iam-id-based-policies-resources"></a>

管理员可以使用 AWS JSON 策略来指定谁有权访问什么。也就是说，哪个**主体**可以对什么**资源**执行**操作**，以及在什么**条件**下执行。

`Resource` JSON 策略元素指定要向其应用操作的一个或多个对象。作为最佳实践，请使用其 [Amazon 资源名称（ARN）](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html)指定资源。对于不支持资源级权限的操作，请使用通配符 (\$1) 指示语句应用于所有资源。

```
"Resource": "*"
```

在中 AWS Serverless Application Repository，主要 AWS 资源是 AWS Serverless Application Repository *应用程序*。 AWS Serverless Application Repository 应用程序具有与其关联的唯一 Amazon 资源名称 (ARNs)，如下表所示。


****  

| AWS 资源类型 | Amazon 资源名称 (ARN) 格式  | 
| --- | --- | 
| 应用程序 |  arn:: serverless存储库::: applicat *partition* ions/ *region* *account-id* *application-name*  | 

有关格式的更多信息 ARNs，请参阅 [Amazon 资源名称 (ARNs) 和 AWS 服务命名空间](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)。

以下是一个策略示例，该策略授予对所有 AWS 资源的`serverlessrepo:ListApplications`操作权限。在当前的实现中， AWS Serverless Application Repository 不支持通过使用某些 API 操作的 AWS AWS 资源 ARNs （也称为资源级权限）来识别特定资源。在这些情况下，您必须指定通配符 (\$1)。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ListExistingApplications",
            "Effect": "Allow",
            "Action": [
                "serverlessrepo:ListApplications"
            ],
            "Resource": "*"
        }
    ]
}
```

------

有关显示所有 AWS Serverless Application Repository API 操作及其适用的 AWS 资源的表格，请参阅[AWS Serverless Application Repository API 权限：操作和资源参考](serverlessrepo-api-permissions-ref.md)。

### 条件键
<a name="security_iam_service-with-iam-id-based-policies-conditionkeys"></a>

 AWS Serverless Application Repository 不提供任何特定于服务的条件密钥，但它确实支持使用一些全局条件密钥。要查看所有 AWS 全局条件键，请参阅 *IAM 用户指南*中的[AWS 全局条件上下文密钥](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)。

### 示例
<a name="security_iam_service-with-iam-id-based-policies-examples"></a>



要查看 AWS Serverless Application Repository 基于身份的策略的示例，请参阅。[AWS Serverless Application Repository 基于身份的策略示例](security_iam_id-based-policy-examples.md)

## AWS Serverless Application Repository 应用程序政策
<a name="security_iam_service-with-iam-resource-based-policies"></a>

应用程序策略决定了指定的委托人或 PrincipalOrg 可以对应用程序执行的 AWS Serverless Application Repository 操作。

您可以向与 AWS Serverless Application Repository 应用程序关联的策略添加权限。附加到 AWS Serverless Application Repository 应用程序的权限策略称为*应用程序策略*。[应用程序策略](security_iam_resource-based-policy-examples.md)是基于 [IAM 资源的策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html)的扩展。主要资源是 AWS Serverless Application Repository 应用程序。您可以使用 AWS Serverless Application Repository 应用程序策略来管理应用程序部署权限。

AWS Serverless Application Repository 应用程序策略主要由发布者用来向消费者授予部署其应用程序的权限以及相关操作（例如搜索和查看这些应用程序的详细信息）。发布者可以将应用程序权限设置为以下三个类别：
+ **私有** — 使用同一个账户创建且未与任何其他账户共享的应用程序。您有权部署使用您的 AWS 账户创建的应用程序。
+ **私下共享** — 发布者已明确与一组特定 AWS 账户或 AWS Organizations 共享的应用程序。您有权部署已与您的 AWS 账户或 AWS 组织共享的应用程序。
+ **公开共享**-发布者与所有人共享的应用程序。您有权部署任何公开共享的应用程序。

您可以使用、或 AWS CLI AWS SDKs，来授予权限 AWS 管理控制台。

### 示例
<a name="security_iam_service-with-iam-resource-based-policies-examples"></a>

要查看管理 AWS Serverless Application Repository 应用程序策略的示例，请参阅[AWS Serverless Application Repository 应用程序策略示例](security_iam_resource-based-policy-examples.md)。

## 基于 AWS Serverless Application Repository 标签的授权
<a name="security_iam_service-with-iam-tags"></a>

 AWS Serverless Application Repository 不支持根据标签控制对资源或操作的访问权限。

## AWS Serverless Application Repository IAM 角色
<a name="security_iam_service-with-iam-roles"></a>

I [AM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)是您的 AWS 账户中具有特定权限的实体。

### 将临时证书与 AWS Serverless Application Repository
<a name="security_iam_service-with-iam-roles-tempcreds"></a>

您可以使用临时凭证进行联合身份登录，来担任 IAM 角色或担任跨账户角色。您可以通过调用[AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)或之类的 AWS STS API 操作来获取临时安全证书[GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html)。

 AWS Serverless Application Repository 支持使用临时证书。

### 服务相关角色
<a name="security_iam_service-with-iam-roles-service-linked"></a>

 AWS Serverless Application Repository 不支持与服务相关的角色。

### 服务角色
<a name="security_iam_service-with-iam-roles-service"></a>

 AWS Serverless Application Repository 不支持服务角色。