

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 계정 간 액세스 활성화
<a name="feature-store-cross-account-access"></a>

액세스 권한은 읽기 전용, 읽기-쓰기 및 관리자 권한입니다. 권한 이름, 설명, 각 권한에 사용할 수 있는 특정 API 목록은 다음과 같습니다.
+ 읽기 전용 권한 (`AWSRAMPermissionSageMakerFeatureGroupReadOnly`): 읽기 권한을 사용하면 리소스 소비자 계정이 공유된 특성 그룹의 레코드를 읽고 세부 정보 및 메타데이터를 볼 수 있습니다.
  + `DescribeFeatureGroup`: 특성 그룹 및 해당 구성에 대한 세부 정보를 검색합니다.
  + `DescribeFeatureMetadata`: 특성 그룹 내 특성에 대한 메타데이터를 표시합니다.
  + `BatchGetRecord`: 특성 그룹에서 레코드 배치를 가져옵니다.
  + `GetRecord`: 특성 그룹에서 레코드를 가져옵니다.
+ 읽기-쓰기 권한 (`AWSRAMPermissionSagemakerFeatureGroupReadWrite`): 읽기-쓰기 권한을 사용하면 리소스 소비자 계정이 읽기 권한 외에도 공유된 특성 그룹에 레코드를 쓰고, 공유된 특성 그룹에서 레코드를 삭제할 수 있습니다.
  + `PutRecord`: 특성 그룹에 레코드를 씁니다.
  + `DeleteRecord`: 특성 그룹에서 레코드를 삭제합니다.
  + `AWSRAMPermissionSageMakerFeatureGroupReadOnly`의 API 목록
+ 관리자 권한 (`AWSRAMPermissionSagemakerFeatureGroupAdmin`): 관리자 권한을 통해 리소스 소비자 계정은 읽기-쓰기 권한 외에도 공유된 특성 그룹 내 특성의 설명과 파라미터를 업데이트하고, 공유된 특성 그룹의 구성을 업데이트할 수 있습니다.
  + `DescribeFeatureMetadata`: 특성 그룹 내 특성에 대한 메타데이터를 표시합니다.
  + `UpdateFeatureGroup`: 특성 그룹 구성을 업데이트합니다.
  + `UpdateFeatureMetadata`: 특성 그룹에 있는 특성의 설명과 파라미터를 업데이트합니다.
  + `AWSRAMPermissionSagemakerFeatureGroupReadWrite`의 API 목록

다음 항목에서는 온라인 저장소와 오프라인 특성 그룹을 공유하는 방법을 배웁니다.공유와 관련하여 두 특성 그룹 간에는 차이가 있습니다.

**Topics**
+ [와 온라인 특성 그룹 공유 AWS Resource Access Manager](feature-store-cross-account-access-online-store.md)
+ [계정 간 오프라인 저장소 액세스](feature-store-cross-account-access-offline-store.md)

# 와 온라인 특성 그룹 공유 AWS Resource Access Manager
<a name="feature-store-cross-account-access-online-store"></a>

 AWS Resource Access Manager (AWS RAM)를 사용하면 Amazon SageMaker 특성 저장소 온라인 특성 그룹을 다른와 안전하게 공유할 수 있습니다 AWS 계정. 팀 멤버는 여러 계정에 걸쳐 있는 특성 그룹을 검색하고 액세스하여 데이터 일관성을 높이고 협업을 간소화하며 중복 작업을 줄일 수 있습니다.

리소스 소유자 계정은를 사용하여 권한을 부여 AWS 계정 하여 다른 개인과 리소스를 공유할 수 있습니다 AWS RAM. 리소스 소비자 계정은 리소스가 공유되는 AWS 계정 이며, 리소스 소유자 계정에서 부여된 권한에 따라 제한됩니다. 조직인 경우 각 계정에 권한을 적용할 필요 없이 리소스를 개인 AWS Organizations, 조직의 모든 계정 또는 조직 단위(OU) AWS 계정와 공유할 수 있는를 활용할 수 있습니다. 교육용 비디오와 AWS RAM 개념 및 이점에 대한 자세한 내용은 AWS RAM 사용 설명서의 [What is AWS Resource Access Manager?](https://docs.aws.amazon.com/ram/latest/userguide/what-is.html)를 참조하세요.

각 AWS 계정에 대하여 API당 초당 트랜잭션 수(TPS)에는 최대 한도가 있음에 유의하시기 바랍니다. 최대 TPS 한도는 리소스 소유자 계정 내 리소스의 모든 트랜잭션에 적용되므로 리소스 소비자 계정의 트랜잭션도 이 최대 한도에 포함됩니다.** 서비스 할당량과 할당량 증가를 요청하는 방법에 대한 자세한 내용은 [AWS 서비스 할당량](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html)을 참조하세요.

이 섹션에서는 리소스 소유자 계정이 특성 그룹을 선택하고 리소스 소비자 계정에 액세스 권한(읽기 전용, 읽기-쓰기 및 관리자)을 부여하는 방법과 액세스 권한이 있는 리소스 소비자 계정이 이러한 특성 그룹을 사용할 수 있는 방법을 다룹니다. 액세스 권한으로는 리소스 소비자 계정이 특성 그룹을 검색하고 발견할 수 없습니다. 리소스 소비자 계정이 리소스 소유자 계정에서 특성 그룹을 검색하고 발견할 수 있도록 하려면 리소스 소유자 계정이 리소스 소비자 계정에 검색 가능 권한을 부여해야 합니다.이 경우 리소스 소비자 계정에서 리소스 소유자 계정 내의 모든 특성 그룹을 검색할 수 있습니다. 검색 가능 권한 부여 방법에 대한 자세한 내용은 [계정 간 검색 가능성 활성화](feature-store-cross-account-discoverability.md)섹션을 참조하세요.

다음 주제에서는 AWS RAM 콘솔을 사용하여 특성 저장소 온라인 저장소 리소스를 공유하는 방법을 보여줍니다. 콘솔 또는 AWS Command Line Interface (AWS CLI)를 AWS 사용하여 리소스 공유 및 내에서 권한 부여에 AWS RAM 대한 자세한 내용은 [리소스 공유를 참조하세요 AWS](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-sharing.html).

**Topics**
+ [특성 그룹 엔티티 공유](feature-store-cross-account-access-online-store-share-feature-group.md)
+ [액세스 권한이 있는 온라인 저장소 공유 리소스 사용](feature-store-cross-account-access-online-store-use.md)

# 특성 그룹 엔티티 공유
<a name="feature-store-cross-account-access-online-store-share-feature-group"></a>

리소스 소유자 계정은 Amazon SageMaker 특성 저장소의 특성 그룹 리소스 유형을 사용하여 AWS Resource Access Manager ()에서 리소스 공유를 생성하여 특성 그룹 개체를 공유할 수 있습니다AWS RAM.

 AWS RAM 사용 설명서의 [AWS 리소스 공유](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-sharing.html#getting-started-sharing-create) 지침과 함께 다음 지침을 사용합니다.

 AWS RAM 콘솔을 사용하여 특성 그룹 리소스 유형을 공유할 때는 다음 사항을 선택해야 합니다.

1. **리소스 공유 세부 정보 지정** 
   + 리소스 유형: **SageMaker AI 특성 그룹**을 선택합니다.
   + ARN: `arn:aws:sagemaker:us-east-1:111122223333:feature-group/your-feature-group-name`형식으로 특성 그룹 ARN을 선택합니다.

     `us-east-1`은 리소스의 리전, `111122223333`은 리소스 소유자 계정 ID, `your-feature-group-name`은 공유하려는 특성 그룹 이름입니다.
   + 리소스 ID: 액세스 권한을 부여하려는 특성 그룹 `your-feature-group-name`을 선택합니다.

1. **관리 권한 연결**: 
   + 관리 권한: 액세스 권한을 선택합니다. 액세스 권한에 대한 자세한 내용은 [계정 간 액세스 활성화](feature-store-cross-account-access.md)을 참조하세요.

1. **보안 주체에게 액세스 권한 부여:**
   + 보안 주체 유형(AWS 계정, 조직, 조직 단위, IAM 역할 또는 IAM 사용자)을 선택하고 적절한 ID 또는 ARN을 입력합니다.

1. **검토 및 생성** 
   + 검토 후 **리소스 공유 생성**을 선택합니다.

액세스 권한을 부여해도 리소스 소비자 계정에는 검색 가능 권한이 부여되지 않으므로, 액세스 권한이 있는 리소스 소비자 계정은 해당 특성 그룹을 검색하고 발견할 수 없습니다. 리소스 소비자 계정이 리소스 소유자 계정에서 특성 그룹을 검색하고 발견할 수 있도록 하려면 리소스 소유자 계정이 리소스 소비자 계정에 검색 권한을 부여해야 합니다.이를 통해 리소스 소비자 계정에서 리소스 소유자 계정 내의 모든 특성 그룹을 리소스 소비자 계정으로 검색할 수 있습니다.** 검색 권한 부여에 대한 자세한 내용은 [계정 간 검색 가능성 활성화](feature-store-cross-account-discoverability.md)섹션을 참조하세요.

리소스 소비자 계정에 액세스 권한만 부여된 경우에도 AWS RAM에서 특성 그룹 엔티티는 계속 볼 수 있습니다. 에서 리소스를 보려면 AWS RAM 사용 설명서의 공유 리소스 액세스를 AWS RAM참조하세요. [AWS](https://docs.aws.amazon.com/ram/latest/userguide/working-with-shared.html) 

리소스 공유 및 보안 주체 또는 리소스 소비자 계정 연결이 완료되는 데 몇 분 정도 걸릴 수 있습니다. 리소스 공유와 보안 주체 연결이 설정되면 지정된 리소스 소비자 계정에 리소스 공유에 조인하라는 초대가 발송됩니다. 리소스 소비자 계정은 AWS RAM 콘솔에서 [나와 공유: 리소스 공유](https://console.aws.amazon.com/ram/home#SharedResourceShares) 페이지를 열어 초대를 보고 수락할 수 있습니다. 다음과 같은 경우에는 초대가 전송되지 않습니다.
+ 의 조직에 속 AWS Organizations 해 있고 조직 내 공유가 활성화된 경우 조직의 보안 주체는 초대 없이 공유 리소스에 자동으로 액세스할 수 있습니다.
+ 리소스를 소유 AWS 계정 한와 공유하는 경우 해당 계정의 보안 주체는 초대 없이 공유 리소스에 자동으로 액세스할 수 있습니다.

에서 리소스 공유를 수락하고 사용하는 방법에 대한 자세한 내용은 AWS RAM 사용 설명서의 [공유 AWS 리소스 사용을](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-shared.html) AWS RAM참조하세요.

## 를 사용하여 온라인 스토어 특성 그룹 공유 AWS SDK for Python (Boto3)
<a name="feature-store-cross-account-access-online-store-python-sdk-example"></a>

 AWS SDK for Python (Boto3) AWS RAM APIs 사용하여 리소스 공유를 생성할 수 있습니다. 다음 코드는 리소스 소유자 계정 ID `111122223333`이 `'test-cross-account-fg'`라는 이름의 리소스 공유를 생성하고, `AWSRAMPermissionSageMakerFeatureGroupReadOnly`권한을 부여하여 리소스 소비자 계정 ID `444455556666`과 특성 그룹 `'my-feature-group'`을 공유하는 예제입니다. 액세스 권한에 대한 자세한 내용은 [계정 간 액세스 활성화](feature-store-cross-account-access.md)을 참조하세요. AWS RAM APIs용 Python SDK를 사용하려면 AWS RAM 전체 액세스 관리형 정책을 실행 역할에 연결해야 합니다. 자세한 내용은 [create\$1resource\$1share](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ram/client/create_resource_share.html) AWS RAM API를 참조하세요.

```
import boto3

# Choose feature group name
feature_group_name = 'my-feature-group' # Change to your feature group name 

# Share 'my-feature-group' with other account
ram_client = boto3.client("ram")
response = ram_client.create_resource_share(
    name='test-cross-account-fg', # Change to your custom resource share name
    resourceArns=[
        'arn:aws:sagemaker:us-east-1:111122223333:feature-group/' + feature_group_name, # Change 111122223333 to the resource owner account ID
    ],
    principals=[
        '444455556666', # Change 444455556666 to the resource consumer account ID
    ],
    permissionArns = ["arn:aws:ram::aws:permission/AWSRAMPermissionSageMakerFeatureGroupReadOnly"]
)
```

보안 주체는 보안 시스템의 행위자입니다. 리소스 기반 정책에서 허용되는 보안 주체는 IAM 사용자, IAM 역할, 루트 계정 또는 다른 AWS 서비스입니다.

# 액세스 권한이 있는 온라인 저장소 공유 리소스 사용
<a name="feature-store-cross-account-access-online-store-use"></a>

리소스 소유자 계정은 공유 리소스에 대한 검색 가능성, 읽기 전용, 쓰기 또는 관리자 기능을 허용하는 권한을 리소스 소비자 계정에 부여해야 합니다. 다음 섹션에서는 공유 리소스 액세스 초대를 수락하는 방법에 대한 지침을 제공하고 공유 특성 그룹을 보고 상호 작용하는 방법을 보여주는 예를 제공합니다.

** AWS RAM을 사용하여 공유 리소스 액세스 초대 수락**

리소스 소유자 계정이 권한을 부여하면 리소스 소비자 계정으로 리소스 공유에 조인하라는 초대가 발송됩니다. 공유 리소스에 대한 초대를 수락하려면 AWS RAM 콘솔에서 [나와 공유: 리소스 공유](https://console.aws.amazon.com/ram/home#SharedResourceShares) 페이지를 열어 초대를 보고 응답합니다. 다음과 같은 경우에는 초대가 전송되지 않습니다.
+ 의 조직에 속 AWS Organizations 해 있고 조직 내 공유가 활성화된 경우 조직의 보안 주체는 초대 없이 공유 리소스에 자동으로 액세스할 수 있습니다.
+ 리소스를 소유 AWS 계정 한와 공유하는 경우 해당 계정의 보안 주체는 초대 없이 공유 리소스에 자동으로 액세스할 수 있습니다.

에서 리소스 공유를 수락하고 사용하는 방법에 대한 자세한 내용은 AWS RAM 사용 설명서의 [공유 AWS 리소스 사용을](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-shared.html) AWS RAM참조하세요.

## AWS RAM 콘솔에서 공유 리소스 보기
<a name="feature-store-cross-account-access-online-store-use-view"></a>

액세스 권한을 부여해도 리소스 소비자 계정에는 검색 권한이 부여되지 않으므로, 액세스 권한이 있는 리소스 소비자 계정은 해당 특성 그룹을 검색하고 발견할 수 없습니다. 리소스 소비자 계정이 리소스 소유자 계정에서 특성 그룹을 검색하고 검색할 수 있도록 하려면 리소스 소유자 계정이 리소스 소비자 계정에 검색 권한을 부여해야 합니다.리소스 소비자 계정에서는 리소스 소유자 계정 내의 모든 특성 그룹을 리소스 소비자 계정으로 검색할 수 있습니다. 검색 권한 부여에 대한 자세한 내용은 [계정 간 검색 가능성 활성화](feature-store-cross-account-discoverability.md)섹션을 참조하세요.

 AWS RAM 콘솔에서 공유 리소스를 보려면 AWS RAM 콘솔에서 [나와 공유: 리소스 공유](https://console.aws.amazon.com/ram/home#SharedResourceShares) 페이지를 엽니다.

## 공유 특성 그룹을 사용한 읽기 및 쓰기 작업 예제
<a name="feature-store-cross-account-access-online-store-use-read-write-actions"></a>

리소스 소유자 계정이 리소스 소비자 계정에 적절한 권한을 부여한 후에는 특성 저장소 SDK를 사용하여 공유 리소스에서 작업을 수행할 수 있습니다. 리소스 ARN을 `FeatureGroupName`으로 제공하여 이렇게 할 수 있습니다. 특성 그룹 ARN을 가져오려면 함수를 AWS SDK for Python (Boto3) [https://boto3.amazonaws.com/v1/documentation/api/1.26.98/reference/services/sagemaker/client/describe_feature_group.html#describe-feature-group](https://boto3.amazonaws.com/v1/documentation/api/1.26.98/reference/services/sagemaker/client/describe_feature_group.html#describe-feature-group) 사용하거나 콘솔 UI를 사용할 수 있습니다. 콘솔 UI를 사용하여 특성 그룹 세부 정보를 보는 방법에 대한 자세한 내용은 [콘솔에서 특성 그룹 세부 정보 보기](feature-store-use-with-studio.md#feature-store-view-feature-group-detail-studio) 섹션을 참조하세요.

다음 예제에서는 공유 특성 그룹 엔티티와 함께 `PutRecord`, `GetRecord`를 사용합니다. [https://boto3.amazonaws.com/v1/documentation/api/1.26.98/reference/services/firehose/client/put_record.html#put-record](https://boto3.amazonaws.com/v1/documentation/api/1.26.98/reference/services/firehose/client/put_record.html#put-record) 및에 대한 AWS SDK for Python (Boto3) 설명서의 요청 및 응답 구문을 참조하세요[https://boto3.amazonaws.com/v1/documentation/api/1.26.98/reference/services/sagemaker-featurestore-runtime/client/get_record.html#get-record](https://boto3.amazonaws.com/v1/documentation/api/1.26.98/reference/services/sagemaker-featurestore-runtime/client/get_record.html#get-record).

```
import boto3

sagemaker_featurestore_runtime = boto3.client('sagemaker-featurestore-runtime')

# Put record into feature group named 'test-fg' within the resource owner account ID 111122223333
featurestore_runtime.put_record(
    FeatureGroupName="arn:aws:sagemaker:us-east-1:111122223333:feature-group/test-fg", 
    Record=[value.to_dict() for value in record] # You will need to define record prior to calling PutRecord
)
```

```
import boto3

sagemaker_featurestore_runtime = boto3.client('sagemaker-featurestore-runtime')

# Choose record identifier
record_identifier_value = str(2990130)

# Get record from feature group named 'test-fg' within the resource owner account ID 111122223333
featurestore_runtime.get_record(
    FeatureGroupName="arn:aws:sagemaker:us-east-1:111122223333:feature-group/test-fg", 
    RecordIdentifierValueAsString=record_identifier_value
)
```

특성 그룹 엔터티 권한 부여에 대한 자세한 내용은 [특성 그룹 엔티티 공유](feature-store-cross-account-access-online-store-share-feature-group.md)섹션을 참조하세요.

# 계정 간 오프라인 저장소 액세스
<a name="feature-store-cross-account-access-offline-store"></a>

 Amazon SageMaker 특성 프로세서를 사용하면 사용자가 한 계정(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 특성 저장소의 역할을 설정하여 오프라인 저장소에 데이터를 기록합니다. 이 작업을 수행하는 가장 간단한 방법은 `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 SageMake 특성 저장소에 제공되는 역할입니다. `Principal`에서 여러 ARN 역할을 제공할 수 있습니다.

## 3단계: 계정 A에서 오프라인 저장소 AWS KMS 암호화 키 설정
<a name="feature-store-setup-step3"></a>

Amazon SageMaker 특성 저장소는 오프라인 저장소의 Amazon S3 객체에 대해 서버 측 암호화가 항상 활성화되도록 합니다. 계정 간 사용 사례의 경우, 오프라인 저장소에 쓸 수 있는 사용자(이 경우 A 계정의 `Account-A-Offline-Feature-Store-Role-ARN`)와 오프라인 저장소에서 읽을 수 있는 사용자(이 경우 B 계정의 ID)를 제어할 수 있도록 고객 관리형 키를 제공해야 합니다.

이 문서에서는 다음 예제 키 정책을 `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>

다음으로, B 계정에 오프라인 저장소 Amazon S3 버킷을 사용하여 A 계정에 특성 그룹을 생성합니다.이렇게 하려면 `RoleArn`, `OfflineStoreConfig.S3StorageConfig.KmsKeyId`, `OfflineStoreConfig.S3StorageConfig.S3Uri`에 대해 각각 다음 파라미터를 제공합니다.
+ `Account-A-Offline-Feature-Store-Role-ARN`을 `RoleArn`으로 제공합니다.
+ `Account-A-Offline-Feature-Store-KMS-Key-ARN`을 `OfflineStoreConfig.S3StorageConfig.KmsKeyId`에 제공합니다.
+ `Account-B-Offline-Feature-Store-Bucket`을 `OfflineStoreConfig.S3StorageConfig.S3Uri`에 제공합니다.