Menyiapkan metode Amazon API Gateway sebagai penyedia identitas kustom - AWS Transfer Family

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

Menyiapkan metode Amazon API Gateway sebagai penyedia identitas kustom

Tutorial ini menggambarkan cara menyiapkan metode Amazon API Gateway dan menggunakannya sebagai penyedia identitas khusus untuk mengunggah file ke AWS Transfer Family server. Tutorial ini menggunakan template stack Dasar, dan fungsionalitas dasar lainnya sebagai contoh saja.

Prasyarat

Sebelum Anda membuat resource Transfer Family di AWS CloudFormation, buat penyimpanan dan peran pengguna Anda.

Untuk menentukan penyimpanan dan membuat peran pengguna
  1. Bergantung pada penyimpanan yang Anda gunakan, lihat dokumentasi berikut:

  2. Untuk membuat peran pengguna, lihat Buat peran dan kebijakan IAM

Anda memasukkan detail untuk penyimpanan Anda dan peran pengguna Anda ketika Anda membuat AWS CloudFormation tumpukan Anda di bagian berikutnya.

Langkah 1: Buat CloudFormation tumpukan

Untuk membuat AWS CloudFormation tumpukan dari template yang disediakan
  1. Buka AWS CloudFormation konsol di https://console.aws.amazon.com/cloudformation.

  2. Pilih Buat tumpukan, dan pilih Dengan sumber daya baru (standar).

  3. Di panel Prasyarat - Siapkan templat, pilih Template sudah siap.

  4. Salin tautan ini, template tumpukan dasar, dan tempel ke bidang URL Amazon S3.

  5. Klik Berikutnya.

  6. Tentukan parameter, termasuk nama untuk tumpukan Anda. Pastikan untuk melakukan hal berikut:

    • Ganti nilai default untuk UserNamedan UserPassword.

    • Untuk UserHomeDirectory, masukkan detail penyimpanan (baik bucket Amazon S3 atau sistem file Amazon EFS) yang Anda buat sebelumnya.

    • Ganti default UserRoleArndengan peran pengguna yang Anda buat sebelumnya. Peran AWS Identity and Access Management (IAM) harus memiliki izin yang sesuai. Untuk contoh peran IAM dan kebijakan bucket, lihatLangkah 6: Batasi akses ke ember.

    • Jika Anda ingin mengautentikasi menggunakan kunci publik alih-alih kata sandi, masukkan kunci publik Anda di bidang UserPublicKey1. Pertama kali Anda terhubung ke server menggunakan SFTP, Anda kemudian memberikan kunci pribadi alih-alih kata sandi.

  7. Pilih Berikutnya, lalu pilih Berikutnya lagi di halaman Configure stack options.

  8. Tinjau detail tumpukan yang Anda buat, lalu pilih Buat tumpukan.

    catatan

    Di bagian bawah halaman, di bawah Kemampuan, Anda harus mengakui bahwa AWS CloudFormation mungkin membuat sumber daya IAM.

Langkah 2: Periksa konfigurasi metode API Gateway untuk server Anda

catatan

Untuk meningkatkan keamanan, Anda dapat mengkonfigurasi firewall aplikasi web. AWS WAF adalah firewall aplikasi web yang memungkinkan Anda memantau permintaan HTTP dan HTTPS yang diteruskan ke Amazon API Gateway. Lihat perinciannya di Tambahkan firewall aplikasi web.

Untuk memeriksa konfigurasi metode API Gateway untuk server Anda dan menerapkannya
  1. Buka konsol API Gateway di https://console.aws.amazon.com/apigateway/.

  2. Pilih API template dasar Transfer Custom Identity Provider yang dihasilkan AWS CloudFormation template.

  3. Di panel Resources, pilih GET, lalu pilih Method Request.

  4. Untuk Tindakan, pilih Deploy API. Untuk tahap Deployment, pilih prod, lalu pilih Deploy.

    Setelah metode API Gateway berhasil diterapkan, lihat kinerjanya di bagian Editor Panggung.

    catatan

    Salin alamat URL Invoke yang muncul di bagian atas halaman. Anda akan membutuhkannya untuk langkah selanjutnya.

Langkah 3: Lihat detail server Transfer Family

Saat Anda menggunakan template untuk membuat AWS CloudFormation tumpukan, server Transfer Family dibuat secara otomatis.

Untuk melihat detail server Transfer Family
  1. Buka AWS CloudFormation konsol di https://console.aws.amazon.com/cloudformation.

  2. Pilih tumpukan yang Anda buat.

  3. Pilih tab Sumber Daya.

    Layar yang menampilkan daftar sumber daya yang dibuat selama pembuatan AWS CloudFormation tumpukan, dengan detail untuk server Transfer Family disorot.

    Server ARN ditampilkan di kolom Physical ID untuk baris. TransferServer ID server terkandung dalam ARN, misalnya s-11112222333344445.

  4. Buka AWS Transfer Family konsol di https://console.aws.amazon.com/transfer/, dan di halaman Server, pilih server baru.

    ID server cocok dengan ID yang ditampilkan untuk TransferServersumber daya di AWS CloudFormation.

Langkah 4: Uji apakah pengguna Anda dapat terhubung ke server

Untuk menguji apakah pengguna Anda dapat terhubung ke server, menggunakan konsol Transfer Family
  1. Buka AWS Transfer Family konsol di https://console.aws.amazon.com/transfer/.

  2. Pada halaman Server, pilih server baru Anda, pilih Tindakan, lalu pilih Uji.

  3. Masukkan teks untuk kredensi login Anda ke dalam bidang Nama Pengguna, dan ke bidang Kata Sandi. Ini adalah nilai yang Anda tetapkan saat Anda menerapkan AWS CloudFormation tumpukan.

  4. Untuk Protokol Server, pilih SFTP, dan untuk IP Sumber, masukkan. 127.0.0.1

  5. Pilih Uji.

    Jika otentikasi pengguna berhasil, pengujian mengembalikan respons StatusCode: 200 HTML dan objek JSON yang berisi rincian peran dan izin pengguna. Sebagai contoh:

    { "Response": "{\"Role\": \"arn:aws:iam::123456789012:role/my-user-role\",\"HomeDirectory\": \"/${transfer:HomeBucket}/\"}", "StatusCode": 200, "Message": "", "Url": "https://1a2b3c4d5e.execute-api.us-east-2.amazonaws.com/prod/servers/s-1234abcd5678efgh0/users/myuser/config" }

    Jika pengujian gagal, tambahkan salah satu kebijakan yang AWS dikelola API Gateway ke peran yang Anda gunakan untuk API Anda.

Langkah 5: Uji koneksi SFTP dan transfer file

Untuk menguji koneksi SFTP
  1. Pada perangkat Linux atau macOS, buka terminal perintah.

  2. Masukkan salah satu perintah berikut, tergantung pada apakah Anda menggunakan kata sandi atau key pair untuk otentikasi.

    • Jika Anda menggunakan kata sandi, masukkan perintah ini:

      sftp -o PubkeyAuthentication=no myuser@server-ID.server.transfer.region-code.amazonaws.com

      Saat diminta, masukkan kata sandi Anda.

    • Jika Anda menggunakan key pair, masukkan perintah ini:

      sftp -i private-key-file myuser@server-ID.server.transfer.region-code.amazonaws.com

    catatan

    Untuk sftp perintah ini, masukkan kode Wilayah AWS tempat server Transfer Family Anda berada. Misalnya, jika server Anda berada di AS Timur (Ohio), masukkanus-east-2.

  3. Pada sftp> prompt, pastikan bahwa Anda dapat meng-upload (put), download (get), dan melihat direktori dan file (pwddanls).

Langkah 6: Batasi akses ke ember

Anda dapat membatasi siapa yang dapat mengakses bucket Amazon S3 tertentu. Contoh berikut menunjukkan setelan yang akan digunakan di CloudFormation tumpukan Anda dan dalam kebijakan yang Anda pilih untuk pengguna Anda.

Dalam contoh ini, kami menetapkan parameter berikut untuk AWS CloudFormation tumpukan:

  • CreateServer: true

  • UserHomeDirectory: /DOC-EXAMPLE-BUCKET1

  • UserName: myuser

  • UserPassword: MySuperSecretPassword

    penting

    Ini adalah contoh kata sandi. Saat mengonfigurasi metode API Gateway, pastikan Anda memasukkan kata sandi yang kuat.

  • UserPublicKey1: your-public-key

  • UserRoleArn: arn:aws:iam::role-id:role/myuser-api-gateway-role

UserPublicKey1 adalah kunci publik yang telah Anda hasilkan sebagai bagian dari public/private key pair.

role-idIni unik untuk peran pengguna yang Anda buat. Kebijakan yang dilampirkan myuser-api-gateway-role adalah sebagai berikut:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET1" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObjectAcl", "s3:GetObject", "s3:DeleteObjectVersion", "s3:DeleteObject", "s3:PutObjectAcl", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET1/*" } ] }

Untuk terhubung ke server menggunakan SFTP, masukkan salah satu perintah berikut pada prompt.

  • Jika Anda menggunakan kata sandi untuk mengautentikasi, jalankan perintah berikut:

    sftp -o PubkeyAuthentication=no myuser@transfer-server-ID.server.transfer.region-id.amazonaws.com

    Saat diminta, masukkan kata sandi Anda.

  • Jika Anda menggunakan key pair untuk mengautentikasi, jalankan perintah berikut:

    sftp -i private-key-file myuser@transfer-server-ID.server.transfer.region-id.amazonaws.com

catatan

Untuk sftp perintah ini, gunakan ID Wilayah AWS tempat server Transfer Family Anda berada. Misalnya, jika server Anda berada di AS Timur (Ohio), gunakanus-east-2.

Pada sftp prompt, Anda diarahkan ke direktori home Anda, yang dapat Anda lihat dengan menjalankan pwd perintah. Sebagai contoh:

sftp> pwd Remote working directory: /DOC-EXAMPLE-BUCKET1

Pengguna tidak dapat melihat direktori apa pun di atas direktori home. Sebagai contoh:

sftp> pwd Remote working directory: /DOC-EXAMPLE-BUCKET1 sftp> cd .. sftp> ls Couldn't read directory: Permission denied

Perbarui Lambda jika menggunakan Amazon EFS

Jika Anda memilih Amazon EFS sebagai opsi penyimpanan untuk server Transfer Family, Anda perlu mengedit fungsi lambda untuk tumpukan Anda.

Untuk menambahkan profil Posix ke fungsi Lambda Anda
  1. Buka konsol Lambda di https://console.aws.amazon.com/lambda/.

  2. Pilih fungsi Lambda yang Anda buat sebelumnya. Fungsi Lambda memiliki format stack-name - GetUserConfigLambda - lambda-identifier, di mana stack-name adalah nama tumpukan dan lambda-identifier adalah pengidentifikasi untuk fungsi tersebut CloudFormation .

  3. Di tab Kode, pilih index.js untuk menampilkan kode untuk fungsi tersebut.

  4. Dalamresponse, tambahkan baris berikut antara Policy danHomeDirectory:

    PosixProfile: {"Uid": uid-value, "Gid": gid-value},

    Dimana nilai uid dan nilai gid adalah bilangan bulat, 0 atau lebih besar, yang mewakili ID Pengguna dan ID Grup masing-masing.

    Misalnya, setelah Anda menambahkan profil Posix, bidang respons mungkin terlihat seperti berikut:

    response = { Role: 'arn:aws:iam::123456789012:role/api-gateway-transfer-efs-role', // The user will be authenticated if and only if the Role field is not blank Policy: '', // Optional JSON blob to further restrict this user's permissions PosixProfile: {"Gid": 65534, "Uid": 65534}, HomeDirectory: '/fs-fab2c234' // Not required, defaults to '/' };