Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Gunakan kontrol akses berbasis atribut (ABAC) untuk pelatihan multi-tenancy
Dalam lingkungan multi-penyewa, sangat penting untuk memastikan bahwa setiap data penyewa terisolasi dan hanya dapat diakses oleh entitas yang berwenang. SageMaker AI mendukung penggunaan kontrol akses berbasis atribut (ABAC) untuk mencapai isolasi ini untuk pekerjaan pelatihan. Alih-alih membuat beberapa peran IAM untuk setiap penyewa, Anda dapat menggunakan peran IAM yang sama untuk semua penyewa dengan mengonfigurasi konfigurasi rantai sesi yang menggunakan tag sesi AWS Security Token Service (AWS STS) untuk meminta kredensyal hak istimewa terbatas sementara untuk pekerjaan pelatihan Anda untuk mengakses penyewa tertentu. Untuk informasi selengkapnya tentang tag sesi, lihat Melewati tag sesi di AWS STS.
Saat membuat pekerjaan pelatihan, konfigurasi rantai sesi Anda digunakan AWS STS untuk meminta kredensyal keamanan sementara. Permintaan ini menghasilkan sesi, yang ditandai. Setiap pekerjaan SageMaker pelatihan hanya dapat mengakses penyewa tertentu menggunakan satu peran yang dibagikan oleh semua pekerjaan pelatihan. Dengan menerapkan ABAC dengan rantai sesi, Anda dapat memastikan bahwa setiap pekerjaan pelatihan hanya memiliki akses ke penyewa yang ditentukan oleh tag sesi, secara efektif mengisolasi dan mengamankan setiap penyewa. Bagian berikut memandu Anda melalui langkah-langkah untuk mengatur dan menggunakan ABAC untuk isolasi pekerjaan pelatihan multi-tenant menggunakan Python SageMaker SDK.
Prasyarat
Untuk memulai dengan ABAC untuk isolasi pekerjaan pelatihan multi-penyewa, Anda harus memiliki yang berikut:
-
Penyewa dengan penamaan yang konsisten di seluruh lokasi. Misalnya, jika data input Amazon S3 URI untuk penyewa adalah
s3://your-input-s3-bucket/
, FSx direktori Amazon untuk penyewa yang sama harusexample-tenant
/fsx-train/train/
dan data keluaran Amazon S3 URI seharusnya.example-tenant
s3://your-output-s3-bucket/
example-tenant
-
Peran penciptaan lapangan kerja SageMaker AI. Anda dapat membuat peran penciptaan pekerjaan SageMaker AI menggunakan Amazon SageMaker AI Role Manager. Untuk selengkapnya, lihat Menggunakan manajer peran.
-
Peran eksekusi SageMaker AI yang memiliki
sts:AssumeRole
, dansts:TagSession
izin dalam kebijakan kepercayaannya. Untuk informasi selengkapnya tentang peran eksekusi SageMaker AI, lihat Peran SageMaker AI.Peran eksekusi juga harus memiliki kebijakan yang memungkinkan penyewa dalam arsitektur multi-tenancy berbasis atribut untuk membaca dari awalan yang dilampirkan ke tag utama. Berikut ini adalah contoh kebijakan yang membatasi peran eksekusi SageMaker AI untuk memiliki akses ke nilai yang terkait dengan
tenant-id
kunci. Untuk informasi selengkapnya tentang penamaan kunci tag, lihat Aturan untuk menandai di IAM dan STS.{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::<your-input-s3-bucket>/${aws:PrincipalTag/
tenant-id
}/*" ], "Effect": "Allow" }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::<your-output-s3-bucket>/${aws:PrincipalTag/tenant-id
}/*" }, { "Action": "s3:ListBucket", "Resource": "*", "Effect": "Allow" } ] }
Buat pekerjaan pelatihan dengan rantai tag sesi diaktifkan
Prosedur berikut menunjukkan kepada Anda cara membuat pekerjaan pelatihan dengan rantai tag sesi menggunakan SageMaker Python SDK untuk pelatihan multi-tenancy berkemampuan ABAC.
catatan
Selain penyimpanan data multi-tenancy, Anda juga dapat menggunakan alur kerja ABAC untuk meneruskan tag sesi ke peran eksekusi Anda untuk Amazon VPC, AWS Key Management Service, dan layanan lain apa pun yang Anda izinkan untuk dipanggil oleh AI SageMaker
Aktifkan rantai tag sesi untuk ABAC
-
Impor
boto3
dan SageMaker Python SDK. Isolasi pekerjaan pelatihan berkemampuan ABAC hanya tersedia di SDK AI Python versi 2.217atau yang lebih baru. SageMaker import boto3 import sagemaker from sagemaker.estimator import Estimator from sagemaker.inputs import TrainingInput
-
Siapkan klien AWS STS dan SageMaker AI untuk menggunakan tag sesi berlabel penyewa. Anda dapat mengubah nilai tag untuk menentukan penyewa yang berbeda.
# Start an AWS STS client sts_client = boto3.client('sts') # Define your tenants using tags # The session tag key must match the principal tag key in your execution role policy tags = [] tag = {} tag['Key'] =
"tenant-id"
tag['Value'] ="example-tenant"
tags.append(tag) # Have AWS STS assume your ABAC-enabled job creation role response = sts_client.assume_role( RoleArn="arn:aws:iam::<account-id>:role/<your-training-job-creation-role>", RoleSessionName="SessionName", Tags=tags) credentials = response['Credentials'] # Create a client with your job creation role (which was assumed with tags) sagemaker_client = boto3.client( 'sagemaker', aws_access_key_id=credentials['AccessKeyId'], aws_secret_access_key=credentials['SecretAccessKey'], aws_session_token=credentials['SessionToken'] ) sagemaker_session = sagemaker.Session(sagemaker_client=sagemaker_client)Saat menambahkan tag
"tenant-id=example-tenant"
ke peran penciptaan pekerjaan, tag ini diekstraksi oleh peran eksekusi untuk menggunakan kebijakan berikut:{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::<your-input-s3-bucket>/
example-tenant
/*" ], "Effect": "Allow" }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::<your-output-s3-bucket>/example-tenant
/*" }, { "Action": "s3:ListBucket", "Resource": "*", "Effect": "Allow" } ] } -
Tentukan estimator untuk membuat pekerjaan pelatihan menggunakan SageMaker Python SDK. Atur
enable_session_tag_chaining
True
agar peran eksekusi pelatihan SageMaker AI Anda dapat mengambil tag dari peran penciptaan pekerjaan Anda.# Specify your training input trainingInput = TrainingInput( s3_data=
's3://<your-input-bucket>/example-tenant'
, distribution='ShardedByS3Key', s3_data_type='S3Prefix' ) # Specify your training job execution role execution_role_arn ="arn:aws:iam::<account-id>:role/<your-training-job-execution-role>"
# Define your esimator with session tag chaining enabled estimator = Estimator( image_uri="<your-training-image-uri>"
, role=execution_role_arn, instance_count=1, instance_type='ml.m4.xlarge', volume_size=20, max_run=3600, sagemaker_session=sagemaker_session, output_path="s3://<your-output-bucket>/example-tenant"
, enable_session_tag_chaining=True
) estimator.fit(inputs=trainingInput, job_name="abac-demo"
)
SageMaker AI hanya dapat membaca tag yang disediakan dalam permintaan pekerjaan pelatihan dan tidak menambahkan tag apa pun ke sumber daya atas nama Anda.
ABAC untuk SageMaker pelatihan kompatibel dengan kolam hangat yang dikelola SageMaker AI. Untuk menggunakan ABAC dengan kolam hangat, pekerjaan pelatihan yang cocok harus memiliki tag sesi yang identik. Untuk informasi selengkapnya, lihat Lowongan kerja pelatihan yang cocok.