View a markdown version of this page

Gunakan kontrol akses berbasis atribut (ABAC) untuk pelatihan multi-tenancy - Amazon SageMaker AI

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 data setiap 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 kredentif hak istimewa terbatas sementara untuk pekerjaan pelatihan Anda guna mengakses penyewa tertentu. Untuk informasi selengkapnya tentang tag sesi, lihat M eneruskan tag sesi di AWS STS.

Saat membuat pekerjaan pelatihan, konfigurasi rantai sesi Anda digunakan AWS STS untuk meminta kredentif 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 SageMaker Python 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 adalahs3://your-input-s3-bucket/example-tenant, direktori Amazon FSx untuk penyewa yang sama seharusnya /fsx-train/train/example-tenant dan data keluaran URI Amazon S3 seharusnyas3://your-output-s3-bucket/example-tenant.

  • Peran penciptaan pekerjaan SageMaker AI. Anda dapat membuat peran penciptaan pekerjaan SageMaker AI menggunakan Amazon SageMaker AI Role Manager. Untuk selengkapnya, lihat Menggunakan manajer peran.

  • Per SageMaker an eksekusi AI yang memilikists:AssumeRole, dan sts:TagSession izin dalam kebijakan kepercayaannya. Untuk informasi selengkapnya tentang peran eksekusi SageMaker AI, lihat SageMaker Peran 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 A turan untuk penandaan di IAM dan STS.

    JSON
    { "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}/*", "Effect": "Allow" }, { "Action": "s3:ListBucket", "Resource": "*", "Effect": "Allow" } ] }

Buat pekerjaan pelatihan dengan rantai tag sesi diaktifkan

Prosedur berikut menunjukkan cara membuat pekerjaan pelatihan dengan rantai tag sesi menggunakan SageMaker Python SDK untuk pelatihan ABAC-enabled multi-tenancy.

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 yang Anda izinkan untuk dipanggil AI SageMaker

Aktifkan rantai tag sesi untuk ABAC
  1. Imp boto3 or dan SageMaker Python SDK. ABAC-enabled isolasi pekerjaan pelatihan hanya tersedia di versi 2.217 atau yang lebih baru dari SageMaker AI Python SDK.

    import boto3 from sagemaker.train import ModelTrainer from sagemaker.train.configs import InputData, CheckpointConfig from sagemaker.core.helper.session_helper import Session from sagemaker.core.shapes import OutputDataConfig from sagemaker.train.configs import Compute
  2. 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 = 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:

    JSON
    { "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/*", "Effect": "Allow" }, { "Action": "s3:ListBucket", "Resource": "*", "Effect": "Allow" } ] }
  3. Tentukan a ModelTrainer untuk membuat pekerjaan pelatihan menggunakan SageMaker Python SDK. Set enable_session_tag_chaining el True untuk mengizinkan peran eksekusi pelatihan SageMaker AI Anda mengambil tag dari peran penciptaan pekerjaan Anda.

    # Specify your training input trainingInput = InputData( channel_name='training', data_source='s3://<your-input-bucket>/example-tenant' ) # Specify your training job execution role execution_role_arn = "arn:aws:iam::<account-id>:role/<your-training-job-execution-role>" # Define your model trainer with session tag chaining enabled model_trainer = ModelTrainer( training_image="<your-training-image-uri>", role=execution_role_arn, compute=Compute( instance_type='ml.m4.xlarge', instance_count=1, volume_size_in_gb=20 ), sagemaker_session=sagemaker_session, output_data_config=OutputDataConfig(s3_output_path="s3://<your-output-bucket>/example-tenant"), tags=[{"Key": "sagemaker:EnableSessionTagChaining", "Value": "true"}] ) model_trainer.train(input_data_config=[trainingInput])

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 SageMaker yang dikelola AI. Untuk menggunakan ABAC dengan kolam hangat, pekerjaan pelatihan yang cocok harus memiliki tag sesi yang identik. Lihat informasi yang lebih lengkap di Mencocokkan pekerjaan pelatihan.