Skip to main content

在 AWS 上使用云对象存储

允许 EKS 集群内工作负载访问云服务的最佳做法是使用 IAM 角色。 对于 ArcGIS Enterprise,可通过 Pod 身份或 基于节点组的 IAM 角色,允许访问 AWS S3 存储段中的组织云对象存储和备份存储。

建议您的组织使用 Pod 身份来处理 Kubernetes 工作负载的身份验证,因为它允许对授予 Pod 的权限进行最细致的控制。 如果您的组织使用基于节点组的 IAM 角色控制权限,建议在更新或升级时迁移到使用 Pod 身份。

使用 EKS Pod 身份

ArcGIS Enterprise on Kubernetes 根据 Kubernetes API 服务器的所需权限,使用不同的工作负载服务账户。 这些服务账户在访问集成云服务时也需要不同的权限。 可使用 Pod 身份创建每个服务账户和具有所需权限的 IAM 角色之间的关联。

[!IMPORTANT]在部署 ArcGIS Enterprise on Kubernetes 或在 AWS 中创建其他依赖关系之前,必须在集群中安装 EKS Pod 身份代理加载项。 有关说明,请参阅设置 Amazon EKS Pod 身份代理。

IAM 角色与策略

在使用 AWS S3 云对象存储和备份存储部署和配置 ArcGIS Enterprise on Kubernetes 之前,配置以下 IAM 角色和策略:

  • 对云对象存储和备份存储的读写访问权限

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "s3:PutObject",
                    "s3:GetObject",
                    "s3:ListBucket",
                    "s3:DeleteObject",
                    "s3:GetLifecycleConfiguration",
                    "s3:PutLifecycleConfiguration",
                    "s3:ListMultipartUploadParts",
                    "s3:GetBucketLocation",
                    "s3:AbortMultipartUpload"
                ],
                "Resource": [
                    "arn:aws:s3:::<cloudObjectStoreBucket>/*",
                    "arn:aws:s3:::<cloudObjectStoreBucket>",
                    "arn:aws:s3:::<backupStoreBucket>/*",
                    "arn:aws:s3:::<backupStoreBucket>"
                ]
            }
        ]
    }
    
  • 对云对象存储的读写访问权限

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "s3:PutObject",
                    "s3:GetObject",
                    "s3:ListBucket",
                    "s3:DeleteObject",
                    "s3:GetLifecycleConfiguration",
                    "s3:PutLifecycleConfiguration",
                    "s3:ListMultipartUploadParts",
                    "s3:GetBucketLocation",
                    "s3:AbortMultipartUpload"
                ],
                "Resource": [
                    "arn:aws:s3:::<cloudObjectStoreBucket>/*",
                    "arn:aws:s3:::<cloudObjectStoreBucket>"
                ]
            }
        ]
    }
    
  • 对云对象存储的只读访问权限

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "s3:GetObject",
                    "s3:ListBucket",
                    "s3:GetBucketLocation"
                ],
                "Resource": [
                    "arn:aws:s3:::<cloudObjectStoreBucket>/*",
                    "arn:aws:s3:::<cloudObjectStoreBucket>"
                ]
            }
        ]
    }
    
注:

可以在每个 IAM 角色下创建其他策略,以允许访问用户存储段以及系统对象和备份存储。

Pod 身份关联

在 EKS 集群内,添加 pod 身份关联,以将每个服务账户映射到相应的 IAM 角色。 有关说明,请参阅 AWS 文档主题为 Kubernetes 服务账户分配 IAM 角色。

下表列出了每个服务账户所需的 IAM 角色:

服务账户 IAM 角色
arcgis-admin-serviceaccount 对云对象存储和备份存储的读写访问权限
arcgis-disasterrecovery-serviceaccount 对云对象存储和备份存储的读写访问权限
arcgis-spatiotemporalindex-serviceaccount 对云对象存储和备份存储的读写访问权限
arcgis-cloudservice-readwrite-serviceaccount 对云对象存储的读写访问权限
arcgis-cloudservice-readonly-serviceaccount 对云对象存储的只读访问权限

表中的服务账户名称反映了默认站点名称 arcgis。 如果您配置了其他站点名称,该名称将用作服务账户前缀,而不是 arcgis。 如果您不确定组织的站点名称,请查看当前组织设置。

使用基于节点组的 IAM 角色

如果无法使用 Pod 身份,ArcGIS Enterprise on Kubernetes 也可以使用分配给 Kubernetes 集群节点组的 IAM 角色,以获得访问云服务的权限。

注意:

当使用基于节点组的 IAM 角色时,所有在这些节点上运行的工作负载都具有等效权限。 这会导致某些工作负载具有不需要的权限。

要使用基于节点组的 IAM 角色,创建单一组合读写策略:

{
 "Version": "2012-10-17",
 "Statement": [
     {
         "Effect": "Allow",
         "Action": [
             "s3:PutObject",
             "s3:GetObject",
             "s3:ListBucket",
             "s3:DeleteObject",
             "s3:GetLifecycleConfiguration",
             "s3:PutLifecycleConfiguration",
             "s3:ListMultipartUploadParts",
             "s3:GetBucketLocation",
             "s3:AbortMultipartUpload"
         ],
         "Resource": [
             "arn:aws:s3:::<systemObjectStoreBucket>/*",
             "arn:aws:s3:::<systemObjectStoreBucket>",
             "arn:aws:s3:::<backupStoreBucket>/*",
             "arn:aws:s3:::<backupStoreBucket>"
         ]
     }
 ]
}

迁移到 EKS Pod 身份

使用基于节点组的 IAM 角色的组织应计划在组织升级或更新期间迁移到 EKS pod 身份。 这最大限度地减少了中断,因为所有 pod 在创建 pod 身份关联后都需要重启。 在组织更新和升级期间,Pod 会自动重启。

按照以下步骤迁移到使用 Pod 身份控制权限:

  1. 安装 EKS pod 身份代理加载项。

  2. 创建所需的 IAM 角色和 Pod 身份关联。

  3. 升级 ArcGIS Enterprise。

  4. 验证服务和关键工作流是否正常运行。

  5. 从允许访问 S3 存储的节点组 IAM 角色中移除 IAM 策略。

  6. 再次验证服务和关键工作负载是否正常运行。

    如果在此步骤中发现问题,请将原始 IAM 策略重新添加到节点组 IAM 角色中。 这样可以在完成对加载项状态、Pod 身份 IAM 角色和策略以及 Pod 身份关联的进一步检查时恢复功能。