Berikan instans SageMaker notebook akses sementara ke CodeCommit repositori di akun AWS lain - AWS Prescriptive Guidance

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Berikan instans SageMaker notebook akses sementara ke CodeCommit repositori di akun AWS lain

Healge Aufderheide, Amazon Web Services

Ringkasan

Pemberitahuan: AWS CodeCommit tidak lagi tersedia untuk pelanggan baru. Pelanggan yang sudah ada AWS CodeCommit dapat terus menggunakan layanan seperti biasa. Pelajari selengkapnya

Pola ini menunjukkan cara memberikan instans SageMaker notebook Amazon dan pengguna akses sementara ke CodeCommit repositori AWS yang ada di akun AWS lain. Pola ini juga menunjukkan bagaimana Anda dapat memberikan izin granular untuk tindakan tertentu yang dapat dilakukan setiap entitas pada setiap repositori.

Organizations sering menyimpan CodeCommit repositori di akun AWS yang berbeda dari akun yang menampung lingkungan pengembangannya. Pengaturan multi-akun ini membantu mengontrol akses ke repositori dan mengurangi risiko penghapusan yang tidak disengaja. Untuk memberikan izin lintas akun ini, merupakan praktik terbaik untuk menggunakan peran AWS Identity and Access Management (IAM). Kemudian, identitas IAM yang telah ditentukan sebelumnya di setiap akun AWS dapat mengambil peran sementara untuk membuat rantai kepercayaan yang terkontrol di seluruh akun.

catatan

Anda dapat menerapkan prosedur serupa untuk memberikan identitas IAM lainnya akses lintas akun ke repositori. CodeCommit Untuk informasi selengkapnya, lihat Mengonfigurasi akses lintas akun ke CodeCommit repositori AWS menggunakan peran dalam Panduan Pengguna CodeCommit AWS.

Prasyarat dan batasan

Prasyarat

  • Akun AWS aktif dengan CodeCommit repositori (akun A)

  • Akun AWS aktif kedua dengan instance SageMaker notebook (akun B)

  • Pengguna AWS dengan izin yang memadai untuk membuat dan memodifikasi peran IAM di akun A

  • Pengguna AWS kedua dengan izin yang cukup untuk membuat dan memodifikasi peran IAM di akun B

Arsitektur

Diagram berikut menunjukkan contoh alur kerja untuk memberikan instance SageMaker notebook dan pengguna dalam satu akun AWS akses lintas akun ke repositori: CodeCommit

Alur kerja untuk akses lintas akun CodeCommit

Diagram menunjukkan alur kerja berikut:

  1. Peran pengguna AWS dan peran instans SageMaker notebook di akun B mengasumsikan profil bernama.

  2. Kebijakan izin profil bernama menentukan peran CodeCommit akses di akun A yang kemudian diasumsikan oleh profil.

  3. Kebijakan kepercayaan peran CodeCommit akses di akun A memungkinkan profil bernama di akun B untuk mengambil peran CodeCommit akses.

  4. Kebijakan izin IAM CodeCommit repositori di akun A memungkinkan peran CodeCommit akses untuk mengakses repositori. CodeCommit

Tumpukan teknologi

  • CodeCommit

  • Git

  • IAM

  • pip

  • SageMaker

Alat

  • AWS CodeCommit adalah layanan kontrol versi yang membantu Anda menyimpan dan mengelola repositori Git secara pribadi, tanpa perlu mengelola sistem kontrol sumber Anda sendiri.

  • AWS Identity and Access Management (IAM) membantu Anda mengelola akses ke sumber daya AWS dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.

  • Git adalah sistem kontrol versi terdistribusi untuk melacak perubahan kode sumber selama pengembangan perangkat lunak.

  • git-remote-codecommitadalah utilitas yang membantu Anda mendorong dan menarik kode dari CodeCommit repositori dengan memperluas Git.

  • pip adalah penginstal paket untuk Python. Anda dapat menggunakan pip untuk menginstal paket dari Indeks Paket Python dan indeks lainnya.

Praktik terbaik

Saat Anda menetapkan izin dengan kebijakan IAM, pastikan Anda hanya memberikan izin yang diperlukan untuk melakukan tugas. Untuk informasi selengkapnya, lihat Menerapkan izin hak istimewa paling sedikit dalam dokumentasi IAM.

Saat menerapkan pola ini, pastikan Anda melakukan hal berikut:

  • Konfirmasikan bahwa prinsip IAM hanya memiliki izin yang diperlukan untuk melakukan tindakan spesifik yang diperlukan dalam setiap repositori. Misalnya, disarankan untuk mengizinkan prinsip IAM yang disetujui untuk mendorong dan menggabungkan perubahan ke cabang repositori tertentu, tetapi hanya meminta penggabungan ke cabang yang dilindungi.

  • Konfirmasikan bahwa prinsip-prinsip IAM diberi peran IAM yang berbeda berdasarkan peran dan tanggung jawab masing-masing untuk setiap proyek. Misalnya, pengembang akan memiliki izin akses yang berbeda dari manajer rilis atau AWS Administrator.

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Konfigurasikan kebijakan peran CodeCommit akses dan izin.

catatan

Untuk mengotomatiskan proses penyiapan manual yang didokumentasikan dalam epik ini, Anda dapat menggunakan CloudFormation template AWS.

Di akun yang berisi CodeCommit repositori (akun A), lakukan hal berikut:

  1. Buat peran IAM yang dapat diasumsikan oleh peran instance SageMaker notebook di akun B.

  2. Buat kebijakan IAM yang memberikan akses ke repositori dan lampirkan kebijakan ke peran tersebut. Hanya untuk tujuan pengujian, pilih kebijakan terkelola AWSCodeCommitPowerUserAWS. Kebijakan ini memberikan semua CodeCommit izin kecuali kemampuan untuk menghapus sumber daya.

  3. Ubah kebijakan kepercayaan peran sehingga akun B terdaftar sebagai entitas tepercaya.

penting

Sebelum memindahkan penyiapan ini ke lingkungan produksi Anda, sebaiknya tulis kebijakan IAM Anda sendiri yang menerapkan izin hak istimewa paling sedikit. Untuk informasi selengkapnya, lihat bagian Informasi tambahan dari pola ini.

AWS Umum, AWS DevOps

Berikan peran instans SageMaker notebook dalam izin akun B untuk mengambil peran CodeCommit akses di akun A.

Di akun yang berisi peran IAM instance SageMaker notebook (akun B), lakukan hal berikut:

  1. Buat kebijakan IAM yang memungkinkan peran IAM atau pengguna untuk mengambil peran CodeCommit akses di akun A.

    Contoh kebijakan izin IAM yang memungkinkan peran IAM atau pengguna untuk mengambil peran lintas akun

    {   "Version": "2012-10-17",   "Statement": [       {     "Sid": "VisualEditor0",     "Effect": "Allow",     "Action": "sts:AssumeRole",     "Resource": "arn:aws:iam:::accountA_ID:role/accountArole_ID"   } }
  2. Lampirkan kebijakan ke peran instans SageMaker buku catatan Anda di akun B.

  3. Mintalah peran instance SageMaker notebook di akun B mengasumsikan peran CodeCommit akses di akun A.

catatan

Untuk melihat Nama Sumber Daya Amazon (ARN) repositori Anda, lihat Melihat detail CodeCommit repositori di Panduan Pengguna AWS. CodeCommit

AWS Umum, AWS DevOps
TugasDeskripsiKeterampilan yang dibutuhkan

Siapkan profil pengguna pada instans SageMaker notebook AWS untuk mengambil peran dalam akun A.

Di akun yang berisi instance SageMaker notebook (akun B), lakukan hal berikut:

  1. Masuk ke AWS Management Console dan buka SageMaker konsol.

  2. Akses instance SageMaker notebook Anda. Antarmuka Jupyter terbuka.

  3. Pilih Baru, lalu pilih Terminal. Jendela terminal baru terbuka di lingkungan Jupyter Anda.

  4. Arahkan ke file ~/.aws/config instance SageMaker notebook. Kemudian, tambahkan profil pengguna ke file dengan memasukkan pernyataan berikut:

------.aws/config-------------- [profile remoterepouser] role_arn = arn:aws:iam::<ID of Account A>:role/<rolename> role_session_name = remoteaccesssession region = eu-west-1 credential_source = Ec2InstanceMetadata ----------------------------------
AWS Umum, AWS DevOps

Instal git-remote-codecommit utilitas.

Ikuti petunjuk di Langkah 2: Instal git-remote-codecommit di Panduan CodeCommit Pengguna AWS.

Ilmuwan data
TugasDeskripsiKeterampilan yang dibutuhkan

Akses CodeCommit repositori dengan menggunakan perintah Git atau. SageMaker

Untuk menggunakan Git

Prinsipal IAM yang mengasumsikan peran instance SageMaker notebook di akun B sekarang dapat menjalankan perintah Git untuk mengakses CodeCommit repositori di akun A. Misalnya, pengguna dapat menjalankan perintah seperti,, dan. git clone git pull git push

Untuk petunjuk, lihat Connect ke CodeCommit repositori AWS di CodeCommit Panduan Pengguna AWS.

Untuk informasi tentang cara menggunakan Git CodeCommit, lihat Memulai AWS CodeCommit di Panduan CodeCommit Pengguna AWS.

Untuk menggunakan SageMaker

Untuk menggunakan Git dari SageMaker konsol, Anda harus mengizinkan Git untuk mengambil kredensi dari repositori Anda. CodeCommit Untuk petunjuknya, lihat Mengaitkan CodeCommit repositori di akun AWS yang berbeda dengan instans notebook dalam dokumentasi. SageMaker

Git, konsol bash

Sumber daya terkait

Informasi tambahan

Membatasi CodeCommit izin untuk tindakan tertentu

Untuk membatasi tindakan yang dapat dilakukan oleh kepala sekolah IAM di CodeCommit repositori, ubah tindakan yang diizinkan dalam kebijakan akses. CodeCommit

Untuk informasi selengkapnya tentang operasi CodeCommit API, lihat referensi CodeCommit izin di Panduan CodeCommit Pengguna AWS.

catatan

Anda juga dapat mengedit kebijakan terkelola AWSCodeCommitPowerUserAWS agar sesuai dengan kasus penggunaan Anda.

Membatasi CodeCommit izin ke repositori tertentu

Untuk membuat lingkungan multitenant di mana lebih dari satu repositori kode hanya dapat diakses oleh pengguna tertentu, lakukan hal berikut:

  1. Buat beberapa peran CodeCommit akses di akun A. Kemudian, konfigurasikan kebijakan kepercayaan setiap peran akses agar pengguna tertentu di akun B dapat mengambil peran tersebut.

  2. Batasi repositori kode apa yang dapat diasumsikan oleh setiap peran dengan menambahkan kondisi “Sumber Daya” ke kebijakan setiap peran CodeCommit akses.

Contoh kondisi “Sumber Daya” yang membatasi akses prinsipal IAM ke repositori tertentu CodeCommit

"Resource" : [<REPOSITORY_ARN>,<REPOSITORY_ARN> ]
catatan

Untuk membantu mengidentifikasi dan membedakan beberapa repositori kode di akun AWS yang sama, Anda dapat menetapkan awalan yang berbeda ke nama repositori. Misalnya, Anda dapat memberi nama repositori kode dengan awalan yang sejajar dengan grup pengembang yang berbeda, seperti myproject-subproject1-repo1 dan myproject-subproject2-repo1. Kemudian, Anda dapat membuat peran IAM untuk setiap grup pengembang berdasarkan awalan yang ditetapkan. Misalnya, Anda dapat membuat peran bernama myproject-subproject1-repoaccess dan memberikannya akses ke semua repositori kode yang menyertakan awalan myproject-subproject1.

Contoh kondisi “Resource” yang mengacu pada ARN repositori kode yang menyertakan awalan tertentu

"Resource" : arn:aws:codecommit:<region>:<account-id>:myproject-subproject1-*