Menggunakan Kredenensial AWS - AWS Tools for PowerShell

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

Menggunakan Kredenensial AWS

Setiap perintah AWS Tools for PowerShell harus menyertakan satu set kredensial AWS, yang digunakan untuk menandatangani permintaan layanan web yang sesuai secara kriptografi. Anda dapat menentukan kredensial per perintah, per sesi, atau untuk semua sesi.

Awas

Untuk menghindari risiko keamanan, jangan gunakan pengguna IAM untuk otentikasi saat mengembangkan perangkat lunak yang dibuat khusus atau bekerja dengan data nyata. Sebaliknya, gunakan federasi dengan penyedia identitas seperti AWS IAM Identity Center.

catatan

Informasi dalam topik ini adalah untuk keadaan di mana Anda perlu memperoleh dan mengelola kredensi jangka pendek atau jangka panjang secara manual. Untuk informasi tambahan tentang kredensi jangka pendek dan jangka panjang, lihat Cara lain untuk mengautentikasi dalam Panduan Referensi AWSSDK dan Alat.

Untuk praktik keamanan terbaik, gunakanAWS IAM Identity Center, seperti yang dijelaskan dalamKonfigurasikan otentikasi alat.

Sebagai praktik terbaik, agar kredensial Anda tidak terlihat, jangan menempatkan kredensial literal dalam perintah. Sebaiknya, buat profil untuk setiap set kredensial yang ingin Anda gunakan, dan simpan profil di salah satu dari dua penyimpanan kredensial. Tentukan profil yang benar berdasarkan nama dalam perintah Anda, dan ambil kredensial AWS Tools for PowerShell terkait. Untuk diskusi umum tentang cara mengelola AWS kredensional dengan aman, lihat Praktik Terbaik untuk Mengelola Kunci AWS Akses di. Referensi Umum Amazon Web Services

catatan

Anda memerlukan akun AWS untuk mendapatkan kredensial dan menggunakan AWS Tools for PowerShell. Untuk membuat AWS akun, lihat Memulai: Apakah Anda AWS pengguna pertama kali? dalam Panduan AWS Account Management Referensi.

Lokasi Penyimpanan Kredensial

AWS Tools for PowerShell dapat menggunakan salah satu dari dua penyimpanan kredensial:

  • Penyimpanan SDK AWS, yang mengenkripsi kredensial Anda dan menyimpannya di folder beranda Anda. Di Windows, penyimpanan ini terletak di: C:\Users\username\AppData\Local\AWSToolkit\RegisteredAccounts.json.

    AWS SDK for .NET dan Toolkit for Visual Studio Juga dapat menggunakan penyimpanan SDK AWS.

  • File kredensial bersama, yang juga terletak di folder beranda Anda, tetapi menyimpan kredensial sebagai teks biasa.

    Secara default, file kredensial tersebut disimpan di sini:

    • Di Windows: C:\Users\username\.aws\credentials

    • Di Mac/Linux: ~/.aws/credentials

    SDK AWS dan AWS Command Line Interface dapat juga menggunakan file kredensial. Jika Anda menjalankan skrip di luar konteks pengguna AWS, pastikan bahwa file yang berisi kredensial Anda disalin ke lokasi di mana semua akun pengguna (sistem lokal dan pengguna) dapat mengakses kredensial Anda.

Mengelola Profil

Profil memungkinkan Anda untuk merujuk set kredensial yang berbeda dengan AWS Tools for PowerShell. Anda dapat menggunakan cmdlet AWS Tools for PowerShell untuk mengelola profil Anda di penyimpanan SDK AWS. Anda juga dapat mengelola profil di penyimpanan SDK AWS dengan menggunakan Toolkit for Visual Studio atau secara pemrograman dengan menggunakan AWS SDK for .NET. Untuk petunjuk tentang cara mengelola profil di file kredensial, lihat Praktik Terbaik untuk Mengelola AWS Access Key.

Menambahkan Profil Baru

Untuk menambahkan profil baru ke penyimpanan SDK AWS, jalankan perintah Set-AWSCredential. Tindakan ini akan menyimpan access key dan secret key Anda dalam file kredensial default Anda dengan nama profil yang Anda tentukan.

PS > Set-AWSCredential ` -AccessKey AKIA0123456787EXAMPLE ` -SecretKey wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY ` -StoreAs MyNewProfile
  • -AccessKey- Access key ID.

  • -SecretKey- Secret key.

  • -StoreAs- Nama profil, yang harus unik. Untuk menetapkan profil default, gunakan nama default.

Memperbarui Profil

Penyimpanan SDK AWS harus dikelola secara manual. Jika selanjutnya Anda mengubah kredensial di layanan—misalnya, dengan menggunakan Konsol IAM—menjalankan perintah dengan kredensial yang disimpan secara lokal gagal dengan pesan galat berikut:

The Access Key Id you provided does not exist in our records.

Anda dapat memperbarui profil dengan mengulangi perintah Set-AWSCredential untuk profil tersebut, dan memberikan access key dan secret key baru.

Membuat Daftar Profil

Anda dapat memeriksa daftar nama terkini dengan perintah berikut. Dalam contoh ini, pengguna bernama Shirley memiliki akses ke tiga profil yang semuanya disimpan dalam file kredensial bersama (~/.aws/credentials).

PS > Get-AWSCredential -ListProfileDetail ProfileName StoreTypeName ProfileLocation ----------- ------------- --------------- default SharedCredentialsFile /Users/shirley/.aws/credentials production SharedCredentialsFile /Users/shirley/.aws/credentials test SharedCredentialsFile /Users/shirley/.aws/credentials

Menghapus Profil

Untuk menghapus profil yang tidak lagi Anda perlukan, gunakan perintah berikut.

PS > Remove-AWSCredentialProfile -ProfileName an-old-profile-I-do-not-need

Parameter -ProfileName menentukan profil yang ingin Anda hapus.

Perintah Clear- yang tidak digunakan lagi masih AWSCredential tersedia untuk kompatibilitas mundur, tetapi lebih disukai. Remove-AWSCredentialProfile

Menentukan Kredensial

Ada beberapa cara untuk menentukan kredensial. Cara yang disarankan adalah dengan mengidentifikasi profil bukannya menggabungkan kredensial literal ke baris perintah Anda. AWS Tools for PowerShell menempatkan profil menggunakan urutan pencarian yang dijelaskan di Urutan Pencarian Kredensial.

Pada Windows, kredensial AWS yang disimpan dalam penyimpanan SDK AWS dienkripsi dengan identitas pengguna Windows untuk masuk. Kredensial-kredensial tersebut tidak dapat didekripsi dengan menggunakan akun lain, atau digunakan di perangkat yang berbeda dari akun yang awalnya dibuat. Untuk melakukan tugas-tugas yang memerlukan kredensial pengguna lain, seperti akun pengguna yang akan menjalankan suatu tugas terjadwal, atur profil kredensial, seperti yang dijelaskan di bagian sebelumnya, yang dapat Anda gunakan ketika Anda log in ke komputer sebagai pengguna. Log in sebagai pengguna yang melaksanakan tugas untuk menyelesaikan langkah-langkah pengaturan kredensial, dan buat profil yang berfungsi untuk pengguna tersebut. Kemudian log out dan log in kembali dengan kredensial Anda sendiri untuk mengatur tugas terjadwal tersebut.

catatan

Menggunakan parameter umum -ProfileName untuk menentukan profil. Parameter ini setara dengan parameter -StoredCredentials di rilis AWS Tools for PowerShell sebelumnya. Untuk kompatibilitas balik, -StoredCredentials masih didukung.

Semua SDK dan alat pengelolaan AWS dapat menemukan kredensial Anda secara otomatis di komputer lokal Anda jika kredensialnya disimpan dalam profil bernama default. Misalnya, jika Anda memiliki profil bernama default di komputer lokal, Anda tidak perlu menjalankan cmdlet Initialize-AWSDefaultConfiguration atau cmdlet Set-AWSCredential. Alat secara otomatis menggunakan data access key dan secret key yang tersimpan dalam profil tersebut. Untuk menggunakan Wilayah AWS selain Wilayah default Anda (hasil dari Get-DefaultAWSRegion), Anda dapat menjalankan Set-DefaultAWSRegion dan menentukan Wilayah.

Jika profil Anda tidak diberi nama default, tetapi Anda ingin menggunakannya sebagai profil default untuk sesi saat ini, jalankan Set-AWSCredential untuk menetapkannya sebagai profil default.

Meskipun menjalankan Initialize-AWSDefaultConfiguration memungkinkan Anda menentukan profil default untuk setiap PowerShell sesi, cmdlet memuat kredensi dari profil yang diberi nama khusus, tetapi menimpa profil dengan profil bernama. default

Kami menyarankan agar Anda tidak menjalankan Initialize-AWSDefaultConfiguration kecuali Anda menjalankan PowerShell sesi pada instans Amazon EC2 yang tidak diluncurkan dengan profil instans, dan Anda ingin mengatur profil kredensialnya secara manual. Perhatikan bahwa profil kredensial dalam skenario ini tidak akan berisi kredensial. Profil kredensial yang dihasilkan dari menjalankan Initialize-AWSDefaultConfiguration pada instans EC2 tidak secara langsung menyimpan kredensial, tetapi sebaliknya menunjuk ke metadata instans (yang menyediakan kredensial sementara yang secara otomatis berputar). Namun, tindakan ini tidak akan menyimpan Wilayah instans. Skenario lain yang mungkin harus menjalankan Initialize-AWSDefaultConfiguration terjadi jika Anda ingin menjalankan panggilan terhadap sebuah Wilayah selain dari Wilayah di mana instans tersebut berjalan. Menjalankan perintah tersebut akan secara permanen menimpa Wilayah yang disimpan dalam metadata instans.

PS > Initialize-AWSDefaultConfiguration -ProfileName MyProfileName -Region us-west-2
catatan

Kredensial default termasuk dalam penyimpanan SDK AWS di bawah nama profil default. Perintah tersebut akan menimpa profil yang ada dengan nama itu.

Jika instans EC2 Anda diluncurkan dengan profil instans, PowerShell secara otomatis mendapatkan AWS kredensi dan informasi Wilayah dari profil instans. Anda tidak perlu menjalankan Initialize-AWSDefaultConfiguration. Menjalankan Initialize-AWSDefaultConfiguration cmdlet pada instans EC2 yang diluncurkan dengan profil instans tidak diperlukan, karena menggunakan data profil instance yang sama yang PowerShell sudah digunakan secara default.

Profil Sesi

Gunakan Set-AWSCredential untuk menentukan profil default untuk sesi tertentu. Profil ini menimpa profil default apapun selama sesi berlangsung. Kami merekomendasikan hal ini jika Anda ingin menggunakan profil yang diberi nama khusus di sesi Anda, bukan profil default saat ini.

PS > Set-AWSCredential -ProfileName MyProfileName
catatan

Dalam versi Tools untuk Windows PowerShell yang lebih awal dari 1.1, Set-AWSCredential cmdlet tidak berfungsi dengan benar, dan akan menimpa profil yang ditentukan oleh "”. MyProfileName Sebaiknya gunakan versi Tools for Windows yang lebih baru PowerShell.

Profil Perintah

Pada perintah individual, Anda dapat menambahkan parameter -ProfileName untuk menentukan profil yang berlaku untuk hanya satu perintah tersebut. Profil ini menimpa profil default atau sesi, seperti yang ditunjukkan dalam contoh berikut.

PS > Get-EC2Instance -ProfileName MyProfileName
catatan

Bila Anda menentukan profil default atau sesi, Anda juga dapat menambahkan parameter -Region untuk menimpa Wilayah default atau sesi. Untuk informasi lebih lanjut, lihat Tentukan AWS Wilayah. Contoh berikut menentukan profil dan Wilayah default.

PS > Initialize-AWSDefaultConfiguration -ProfileName MyProfileName -Region us-west-2

Secara default, file kredensial bersama AWS diasumsikan berada di folder beranda pengguna (C:\Users\username\.aws di Windows, atau ~/.aws di Linux). Untuk menentukan file kredensial di lokasi yang berbeda, masukkan parameter -ProfileLocation dan tentukan jalur file kredensial. Contoh berikut menentukan file kredensial non default untuk perintah tertentu.

PS > Get-EC2Instance -ProfileName MyProfileName -ProfileLocation C:\aws_service_credentials\credentials
catatan

Jika Anda menjalankan PowerShell skrip selama waktu yang biasanya tidak masuk ke AWS —misalnya, Anda menjalankan PowerShell skrip sebagai tugas terjadwal di luar jam kerja normal Anda—tambahkan -ProfileLocation parameter saat Anda menentukan profil yang ingin Anda gunakan, dan setel nilainya ke jalur file yang menyimpan kredensialnya. Untuk memastikan bahwa skrip AWS Tools for PowerShell Anda berjalan dengan kredensial akun yang benar, Anda harus menambahkan parameter -ProfileLocation setiap kali skrip Anda berjalan dalam konteks atau proses yang tidak menggunakan akun AWS. Anda juga dapat menyalin file kredensial Anda ke lokasi yang dapat diakses oleh sistem lokal atau akun lain yang digunakan skrip Anda untuk melakukan tugas.

Urutan Pencarian Kredensial

Ketika Anda menjalankan perintah, AWS Tools for PowerShell mencari kredensial dengan urutan berikut. Pencarian berhenti ketika menemukan kredensial yang dapat digunakan.

  1. Kredensial literal yang melekat sebagai parameter di baris perintah.

    Kami sangat menyarankan untuk menggunakan profil bukan menempatkan kredensial literal di baris perintah Anda.

  2. Nama profil atau lokasi profil tertentu.

    • Jika Anda hanya menyebutkan nama profil, perintah mencari profil tertentu di penyimpanan SDK AWS dan, jika tidak ada, maka akan mencari profil yang disebutkan dari file kredensial bersama AWS di lokasi default.

    • Jika Anda hanya menyebutkan lokasi profil, perintah akan mencari profil default dari file kredensial tersebut.

    • Jika Anda hanya menyebutkan nama dan lokasi, perintah akan mencari profil yang disebutkan dari file kredensial tersebut.

    Jika profil atau lokasi yang disebutkan tidak ditemukan, perintah akan menunjukkan pengecualian. Pencarian akan dilanjutkan ke langkah-langkah berikut hanya jika Anda tidak menyebutkan profil atau lokasi.

  3. Kredensial yang disebutkan oleh parameter -Credential.

  4. Profil sesi, jika ada.

  5. Profil default, dalam urutan sebagai berikut:

    1. Profil default di penyimpanan SDK AWS.

    2. Profil default di file kredensial bersama AWS.

    3. Profil AWS PS Default di penyimpanan SDK AWS.

  6. Jika perintah berjalan pada instans Amazon EC2 yang dikonfigurasi untuk menggunakan IAM role, kredensial sementara instans EC2 yang diakses dari profil instans.

    Untuk informasi lebih lanjut tentang cara menggunakan peran IAM untuk instans Amazon EC2, lihat AWS SDK for .NET.

Jika pencarian ini gagal menemukan kredensial yang disebutkan, perintah akan menunjukkan pengecualian.

Penanganan Kredensial di AWS Tools for PowerShell Core

Cmdlet di AWS Tools for PowerShell Core menerima akses dan secret key atau nama-nama profil kredensial AWS ketika berjalan, begitu juga dengan AWS Tools for Windows PowerShell. Ketika berjalan di Windows, kedua modul memiliki akses ke file penyimpanan kredensial AWS SDK for .NET (yang disimpan di file AppData\Local\AWSToolkit\RegisteredAccounts.json per-pengguna).

File ini menyimpan kunci Anda dalam format terenkripsi, dan tidak dapat digunakan pada komputer yang berbeda. Ini adalah file pertama yang dituju AWS Tools for PowerShell untuk mencari profil kredensial, dan juga file di mana AWS Tools for PowerShell menyimpan profil kredensialnya. Untuk informasi lebih lanjut tentang file penyimpanan kredensial AWS SDK for .NET, lihat Mengkonfigurasi Kredensial AWS. PowerShellModul Tools for Windows saat ini tidak mendukung kredensi penulisan ke file atau lokasi lain.

Kedua modul dapat membaca profil dari file kredensial berbagi AWS yang digunakan oleh SDK AWS dan AWS CLI. Pada Windows, lokasi default untuk file ini adalah C:\Users\<userid>\.aws\credentials. Pada platform selain Windows, file ini disimpan di ~/.aws/credentials. Parameter -ProfileLocation dapat digunakan untuk menunjuk ke nama file non default atau lokasi file.

Penyimpanan kredensial SDK memegang kredensial Anda dalam bentuk terenkripsi dengan menggunakan API kriptografi Windows . API ini tidak tersedia pada platform lain, jadi modul AWS Tools for PowerShell Core menggunakan file kredensial bersama AWS secara eksklusif, dan mendukung penulisan profil kredensial baru untuk file kredensial bersama.

Contoh skrip berikut yang menggunakan Set-AWSCredential cmdlet menunjukkan opsi untuk menangani profil kredensi di Windows dengan atau. AWSPowerShellAWSPowerShell NetCoremodul.

# Writes a new (or updates existing) profile with name "myProfileName" # in the encrypted SDK store file Set-AWSCredential -AccessKey akey -SecretKey skey -StoreAs myProfileName # Checks the encrypted SDK credential store for the profile and then # falls back to the shared credentials file in the default location Set-AWSCredential -ProfileName myProfileName # Bypasses the encrypted SDK credential store and attempts to load the # profile from the ini-format credentials file "mycredentials" in the # folder C:\MyCustomPath Set-AWSCredential -ProfileName myProfileName -ProfileLocation C:\MyCustomPath\mycredentials

Contoh-contoh berikut menunjukkan perilaku AWSPowerShell. NetCoremodul pada sistem operasi Linux atau macOS.

# Writes a new (or updates existing) profile with name "myProfileName" # in the default shared credentials file ~/.aws/credentials Set-AWSCredential -AccessKey akey -SecretKey skey -StoreAs myProfileName # Writes a new (or updates existing) profile with name "myProfileName" # into an ini-format credentials file "~/mycustompath/mycredentials" Set-AWSCredential -AccessKey akey -SecretKey skey -StoreAs myProfileName -ProfileLocation ~/mycustompath/mycredentials # Reads the default shared credential file looking for the profile "myProfileName" Set-AWSCredential -ProfileName myProfileName # Reads the specified credential file looking for the profile "myProfileName" Set-AWSCredential -ProfileName myProfileName -ProfileLocation ~/mycustompath/mycredentials