

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 跨帳戶離線儲存存取
<a name="feature-store-cross-account-access-offline-store"></a>

 Amazon SageMaker Feature Store 可讓使用者在一個帳戶 (帳戶 A) 中建立特徵群組，並使用另一個帳戶 (帳戶 B) 中的 Amazon S3 儲存貯體將其設定為離線儲存。您可以使用以下區段中的步驟進行設定。

**Topics**
+ [第 1 步：在帳戶 A 中設定離線儲存存取角色](#feature-store-setup-step1)
+ [第 2 步：在帳戶 B 中設置離線儲存 Amazon S3 儲存貯體](#feature-store-setup-step2)
+ [步驟 3：在帳戶 A 中設定離線存放區 AWS KMS 加密金鑰](#feature-store-setup-step3)
+ [第 4 步：在帳戶 A 中建立特徵群組](#feature-store-setup-step4)

## 第 1 步：在帳戶 A 中設定離線儲存存取角色
<a name="feature-store-setup-step1"></a>

首先，設定 Amazon SageMaker Feature Store 的角色，將資料寫入離線儲存。最簡單的方法是使用 `AmazonSageMakerFeatureStoreAccess` 政策建立新角色，或使用已附加 `AmazonSageMakerFeatureStoreAccess` 政策的現有角色。本文件將本政策稱為 `Account-A-Offline-Feature-Store-Role-ARN`。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetBucketAcl",
                "s3:PutObjectAcl"
            ],
            "Resource": [
                "arn:aws:s3:::*SageMaker*",
                "arn:aws:s3:::*Sagemaker*",
                "arn:aws:s3:::*sagemaker*"
            ]
        }
    ]
}
```

------

前面的程式碼片段顯示了 `AmazonSageMakerFeatureStoreAccess` 政策。根據預設，政策的 `Resource` 區段的範圍是名稱包含 `SageMaker`、`Sagemaker` 或 `sagemaker` 的 S3 儲存貯體。這表示使用的離線儲存 Amazon S3 儲存貯體必須遵循此命名慣例。如果這不符合您的案例，或者您想要進一步縮小資源範圍，可以將政策複製並貼到主控台中的 Amazon S3 儲存貯體政策，自訂要使用的 `Resource` 區段為 `arn:aws:s3:::your-offline-store-bucket-name`，然後將其附加到角色。

此外，此角色必須已連接 AWS KMS 許可。至少，它需要有 `kms:GenerateDataKey` 許可才能使用客戶受管金鑰寫入離線儲存。請參閱第 3 步，了解為何跨帳戶案例需要客戶受管金鑰，以及如何設定。下列內嵌政策顯示了一個範例：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKey"
            ],
            "Resource": "arn:aws:kms:*:111122223333:key/*"
        }
    ]
}
```

------

此政策的 `Resource` 區段範圍為帳戶 A 中的任何金鑰。若要進一步限制此範圍，請在第 3 步中設定離線儲存 KMS 金鑰之後，返回此政策並將其取代為金鑰 ARN。

## 第 2 步：在帳戶 B 中設置離線儲存 Amazon S3 儲存貯體
<a name="feature-store-setup-step2"></a>

在帳戶 B 中建立 Amazon S3 儲存貯體。如果您使用預設 `AmazonSageMakerFeatureStoreAccess` 政策，則儲存貯體名稱必須包含 `SageMaker`、`Sagemaker`、或 `sagemaker`。依照以下範例所示編輯儲存貯體政策，以允許帳戶 A 讀取和寫入物件。

本文件將以下範例儲存貯體政策稱為 `Account-B-Offline-Feature-Store-Bucket`。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3CrossAccountBucketAccess",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:GetBucketAcl"
            ],
            "Principal": {
                "AWS": [
                    "Account-A-Offline-Feature-Store-Role-ARN"
                ]
            },
            "Resource": [
                "arn:aws:s3:::offline-store-bucket-name/*",
                "arn:aws:s3:::offline-store-bucket-name"
            ]
        }
    ]
}
```

------

在上述政策中，主體是 `Account-A-Offline-Feature-Store-Role-ARN`，這是在步驟 1 的帳戶 A 中建立的角色，並提供給 Amazon SageMaker Feature Store 以寫入離線儲存。您可以在 `Principal` 下提供多個 ARN 角色。

## 步驟 3：在帳戶 A 中設定離線存放區 AWS KMS 加密金鑰
<a name="feature-store-setup-step3"></a>

Amazon SageMaker Feature Store 可確保一律為離線儲存中的 Amazon S3 物件啟用伺服器端加密。對於跨帳戶使用案例，您必須提供客戶受管金鑰，以便您控制可以寫入離線商店的人員 (在本例中為帳戶 A 的 `Account-A-Offline-Feature-Store-Role-ARN`)，以及可從離線儲存讀取的人員 (在本例中為帳戶 B 的身分)。

本文件將以下範例金鑰政策稱為 `Account-A-Offline-Feature-Store-KMS-Key-ARN`。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "key-consolepolicy-3",
    "Statement": [
        {
            "Sid": "Enable IAM User Permissions",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": "kms:*",
            "Resource": "*"
        },
        {
            "Sid": "Allow access for Key Administrators",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                "arn:aws:iam::111122223333:role/Administrator"
                ]
            },
            "Action": [
                "kms:Create*",
                "kms:Describe*",
                "kms:Enable*",
                "kms:List*",
                "kms:Put*",
                "kms:Update*",
                "kms:Revoke*",
                "kms:Disable*",
                "kms:Get*",
                "kms:Delete*",
                "kms:TagResource",
                "kms:UntagResource",
                "kms:ScheduleKeyDeletion",
                "kms:CancelKeyDeletion"
            ],
            "Resource": "*"
        },
        {
            "Sid": "Allow Feature Store to get information about the customer managed key",
            "Effect": "Allow",
            "Principal": {
                "Service": "sagemaker.amazonaws.com"
            },
            "Action": [
                "kms:Describe*",
                "kms:Get*",
                "kms:List*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "Allow use of the key",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "Account-A-Offline-Feature-Store-Role-ARN",
                    "arn:aws:iam::444455556666:root"
                ]
            },
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:DescribeKey",
                "kms:CreateGrant",
                "kms:RetireGrant",
                "kms:ReEncryptFrom",
                "kms:ReEncryptTo",
                "kms:GenerateDataKey",
                "kms:ListAliases",
                "kms:ListGrants"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## 第 4 步：在帳戶 A 中建立特徵群組
<a name="feature-store-setup-step4"></a>

接下來，在帳戶 A 中建立特徵群組，並在帳戶 B 中使用離線儲存 Amazon S3 儲存貯體來執行此操作，以及分別為 `RoleArn`、`OfflineStoreConfig.S3StorageConfig.KmsKeyId` 和 `OfflineStoreConfig.S3StorageConfig.S3Uri` 提供下列參數：
+ 提供 `Account-A-Offline-Feature-Store-Role-ARN` 作為 `RoleArn`。
+ 為 `OfflineStoreConfig.S3StorageConfig.KmsKeyId` 提供 `Account-A-Offline-Feature-Store-KMS-Key-ARN`。
+ 為 `OfflineStoreConfig.S3StorageConfig.S3Uri` 提供 `Account-B-Offline-Feature-Store-Bucket`。