

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

# 步骤 3：接受资源共享 ARN 邀请
<a name="resource-share-arn"></a>

本主题介绍使用 AWS CloudFormation 模板接受资源共享 ARN 邀请的步骤，这是启用 Detective 与 Security Lake 集成之前的必需步骤。

要从 Security Lake 访问原始数据日志，您必须接受 Security Lake 管理员创建的 Security Lake 账户发出的资源共享邀请。您还需要设置跨账户表共享的 AWS Lake Formation 权限。此外，您还必须创建可接收原始查询日志的 Amazon Simple Storage Service（Amazon S3）存储桶。

在下一步中，您将使用 AWS CloudFormation 模板为以下内容创建堆栈：接受资源共享 ARN 邀请、创建所需 AWS Glue 爬网程序 资源和授予 AWS Lake Formation 管理员权限。

**接受资源共享 ARN 邀请并启用集成**

1. 使用 CloudFormation 模板创建新 CloudFormation 堆栈。有关更多详细信息，请参阅[使用 CloudFormation 模板创建堆栈](#cloud-formation-template)。

1. 创建完堆栈后，选择 “**启用集成**” 以启用 Detective 与 Security Lake 的集成。

## 使用 CloudFormation 模板创建堆栈
<a name="cloud-formation-template"></a>

Detective 提供了一个 CloudFormation 模板，您可以使用该模板来设置创建和管理 Security Lake 订阅者的查询访问权限所需的参数。

**步骤 1：创建 AWS CloudFormation 服务角色**

必须创建 CloudFormation 服务角色才能使用 CloudFormation 模板创建堆栈。如果您没有创建服务角色所需的权限，请联系 Detective 管理员账户的管理员。有关 AWS CloudFormation 服务角色的更多信息，请参阅 [AWS CloudFormation 服务角色](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-servicerole.html)。

1. 登录 AWS 管理控制台 并打开 IAM 控制台，网址为[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在 IAM 控制台的导航窗格中，选择**角色**，然后选择**创建角色**。

1. 对于**选择可信实体**，选择 **AWS 服务**。

1. 选择 **CloudFormation**。然后选择**下一步**。

1. 输入角色的名称。例如 `CFN-DetectiveSecurityLakeIntegration`。

1. 将下面的内联策略附加到角色。`<Account ID>`替换为您的 AWS 账户 ID。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CloudFormationPermission",
            "Effect": "Allow",
            "Action": [
                "cloudformation:CreateChangeSet"
            ],
            "Resource": [
                "arn:aws:cloudformation:*:aws:transform/*"
            ]
        },
        {
            "Sid": "IamPermissions",
            "Effect": "Allow",
            "Action": [
                "iam:CreateRole",
                "iam:DeleteRole",
                "iam:AttachRolePolicy",
                "iam:DetachRolePolicy",
                "iam:UpdateAssumeRolePolicy",
                "iam:PutRolePolicy",
                "iam:DeleteRolePolicy",
                "iam:CreatePolicy",
                "iam:DeletePolicy",
                "iam:PassRole",
                "iam:GetRole",
                "iam:GetRolePolicy"
            ],
            "Resource": [
                 "arn:aws:iam::111122223333:role/*-ResourceShareAcceptorLamb-*",
                 "arn:aws:iam::111122223333:role/*-SsmParametersLambdaRole-*",
                 "arn:aws:iam::111122223333:role/*-GlueDatabaseLambdaRole-*",
                 "arn:aws:iam::111122223333:role/*-GlueTablesLambdaRole-*",
                 "arn:aws:iam::111122223333:policy/*"
            ]
        },
        {
            "Sid": "S3Permissions",
            "Effect": "Allow",
            "Action": [
                "s3:CreateBucket",
                "s3:DeleteBucket*",
                "s3:PutBucket*",
                "s3:GetBucket*",
                "s3:GetObject",
                "s3:PutEncryptionConfiguration",
                "s3:GetEncryptionConfiguration"
            ],
            "Resource": [
                "arn:aws:s3:::*"
            ]
        },
        {
            "Sid": "LambdaPermissions",
            "Effect": "Allow",
            "Action": [
                "lambda:CreateFunction",
                "lambda:DeleteFunction",
                "lambda:GetFunction",
                "lambda:TagResource",
                "lambda:InvokeFunction"
            ],
            "Resource": [
                "arn:aws:lambda:*:111122223333:function:*"
            ]
        },
        {
            "Sid": "CloudwatchPermissions",
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:DeleteLogGroup",
                "logs:DescribeLogGroups"
            ],
            "Resource": "arn:aws:logs:*:111122223333:log-group:*"
        },
        {
            "Sid": "KmsPermission",
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:*:111122223333:key/*"
        }
    ]
}
```

------

**第 2 步：为您的 IAM 委托人添加权限**。

您需要以下权限才能使用您在上一步中创建的 CloudFormation 服务角色创建堆栈。将以下 IAM 策略添加到您计划用于传递 CloudFormation 服务角色的 IAM 委托人。您将假设这个 IAM 主体来创建堆栈。如果您没有添加 IAM 策略所需的权限，请联系 Detective 管理员账户的管理员。

**注意**  
在以下策略中，本策略中使用的 `CFN-DetectiveSecurityLakeIntegration` 是指您在前面的 `Creating an AWS CloudFormation` 服务角色步骤中创建的角色。如果不一致，请将其更改为您在之前步骤中输入的角色名称。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "PassRole",
            "Effect": "Allow",
            "Action": [
                "iam:GetRole",
                "iam:PassRole"
            ],
            "Resource": "arn:aws:iam::111122223333:role/CFN-DetectiveSecurityLakeIntegration"
        },
        {
            "Sid": "RestrictCloudFormationAccess",
            "Effect": "Allow",
            "Action": [
                "cloudformation:CreateStack",
                "cloudformation:DeleteStack",
                "cloudformation:UpdateStack"
            ],
            "Resource": "arn:aws:cloudformation:*:111122223333:stack/*",
            "Condition": {
                "StringEquals": {
                    "cloudformation:RoleArn": [
                        "arn:aws:iam::111122223333:role/CFN-DetectiveSecurityLakeIntegration"
                    ]
                }
            }
        },
        {
            "Sid": "CloudformationDescribeStack",
            "Effect": "Allow",
            "Action": [
                "cloudformation:DescribeStacks",
                "cloudformation:DescribeStackEvents",
                "cloudformation:GetStackPolicy"
            ],
            "Resource": "arn:aws:cloudformation:*:111122223333:stack/*"
        },
        {
            "Sid": "CloudformationListStacks",
            "Effect": "Allow",
            "Action": [
                "cloudformation:ListStacks"
            ],
            "Resource": "*"
        },
        {
            "Sid": "CloudWatchPermissions",
            "Effect": "Allow",
            "Action": [
                "logs:GetLogEvents"
            ],
            "Resource": "arn:aws:logs:*:111122223333:log-group:*"
        }
    ]
}
```

------

**步骤 3：在 CloudFormation 控制台中指定自定义值**

1. 从 Detective 进入 AWS CloudFormation 控制台。

1. （可选）输入**堆栈名称**。堆栈名称是自动填充的。您可以将堆栈名称更改为与现有堆栈名称不冲突的名称。

1. 输入以下**参数**。
   + **AthenaResultsBucket**— 如果您不输入值，则此模板会生成一个 Amazon S3 存储桶。如果您想使用自己的存储桶，请输入要存储 Athena 查询结果的存储桶名称。如果您使用自己的存储桶，请确保存储桶与资源共享 ARN 位于同一区域。如果您使用自己的存储桶，请确保您选择的 `LakeFormationPrincipals` 具有向存储桶写入对象和从存储桶读取对象的权限。有关存储桶权限的更多详细信息，请参阅《Amazon Athena 用户指南》中的[查询结果和最近查询](https://docs.aws.amazon.com/athena/latest/ug/querying.html)。
   + **DTRegion**— 此字段已预先填写。请不要更改此字段中的值。
   + **LakeFormationPrincipals**— 输入您想要授予使用安全湖集成的权限的 IAM 委托人（例如，IAM 角色 ARN）的 ARN，以逗号分隔。这些可能是你的安全分析师和使用 Detective 的安全工程师。

     您只能使用之前在步骤 [`Step 2: Add the required IAM permissions to your account]` 中附加了 IAM 权限的 IAM 主体。
   + **ResourceShareARN**-此字段已预先填写。请不要更改此字段中的值。

1. **权限**

   **IAM 角色**：选择您在 `Creating an AWS CloudFormation Service Role` 步骤中创建的角色。或者，可以将其留空（如果您的当前 IAM 角色具有 `Creating an AWS CloudFormation Service Role` 步骤中的所有必需权限）。

1. 查看并选中所有**我确认**复选框，然后单击**创建堆栈**按钮。有关更多详细信息，请查看将要创建的以下 IAM 资源。

```
* ResourceShareAcceptorCustomResourceFunction
    - ResourceShareAcceptorLambdaRole
    - ResourceShareAcceptorLogsAccessPolicy
* SsmParametersCustomResourceFunction
    - SsmParametersLambdaRole
    - SsmParametersLogsAccessPolicy
* GlueDatabaseCustomResourceFunction
    - GlueDatabaseLambdaRole
    - GlueDatabaseLogsAccessPolicy
* GlueTablesCustomResourceFunction
    - GlueTablesLambdaRole
    - GlueTablesLogsAccessPolicy
```

**第 4 步：将 Amazon S3 存储桶策略添加到 IAM 委托人 `LakeFormationPrincipals`**

（可选）如果您让此模板为您生成 `AthenaResultsBucket`，则必须将以下策略附加到 `LakeFormationPrincipals` 中的 IAM 主体。

```
{
  "Sid": "S3ObjectPermissions",
  "Effect": "Allow",
  "Action": [
    "s3:GetObject",
    "s3:PutObject"
  ],
  "Resource": [
    "arn:aws:s3:::<athena-results-bucket>",
    "arn:aws:s3:::<athena-results-bucket>/*"
  ]
}
```

`athena-results-bucket`替换为`AthenaResultsBucket`名称。 `AthenaResultsBucket`可以在 AWS CloudFormation 控制台上找到：

1. 在 [https://console.aws.amazon.com/cloudformat](https://console.aws.amazon.com/cloudformation/) ion 上打开 CloudFormation 控制台。

1. 单击您的堆栈。

1. 单击**资源**选项卡。

1. 搜索逻辑 ID `AthenaResultsBucket` 并复制其物理 ID。