Anda dapat menyiapkan akses ke bucket Amazon S3 menggunakan salah satu dari dua metode:
Region yang didukung
Storage Transfer Service mendukung region Amazon S3 berikut:
af-south-1ap-east-1ap-northeast-1ap-northeast-2ap-northeast-3ap-south-1ap-south-2ap-southeast-1ap-southeast-2ap-southeast-3 |
ap-southeast-4ca-central-1ca-west-1eu-central-1eu-central-2eu-north-1eu-south-1eu-south-2eu-west-1eu-west-2
|
eu-west-3il-central-1me-central-1me-south-1sa-east-1us-east-1us-east-2us-west-1us-west-2
|
us-gov-east-1us-gov-west-1
|
ap-east-1ap-northeast-1ap-northeast-2ap-northeast-3ap-south-1ap-south-2ap-southeast-1ca-central-1ca-west-1eu-central-1eu-central-2 |
eu-north-1eu-south-1eu-south-2eu-west-1eu-west-2eu-west-3us-east-1us-east-2us-west-1us-west-2
|
Izin yang diperlukan
Agar dapat menggunakan Storage Transfer Service untuk memindahkan data dari bucket Amazon S3, akun pengguna atau peran identitas gabungan Anda harus memiliki izin yang sesuai untuk bucket tersebut:
| Izin | Deskripsi | Gunakan |
|---|---|---|
s3:ListBucket |
Memungkinkan Storage Transfer Service mencantumkan objek dalam bucket. | Selalu diperlukan. |
s3:GetObject |
Memungkinkan Storage Transfer Service membaca objek dalam bucket. | Diperlukan jika Anda mentransfer versi saat ini dari semua objek. Jika manifes Anda menentukan versi objek, gunakan s3:GetObjectVersion sebagai gantinya. |
s3:GetObjectVersion |
Memungkinkan Storage Transfer Service membaca versi objek tertentu dalam bucket. | Diperlukan jika manifes Anda menentukan versi objek. Jika tidak, gunakan s3:GetObject. |
s3:DeleteObject |
Memungkinkan Storage Transfer Service menghapus objek dalam bucket. | Diperlukan jika Anda menetapkan deleteObjectsFromSourceAfterTransfer ke true. |
Melakukan autentikasi menggunakan kredensial akses
Untuk menggunakan ID kunci akses dan kunci rahasia untuk melakukan autentikasi ke AWS:
Buat pengguna AWS Identity and Access Management (AWS IAM) dengan nama yang dapat Anda kenali, seperti
transfer-user.Untuk jenis akses AWS, pilih Access key - programmatic access.
Berikan salah satu peran berikut kepada pengguna:
- AmazonS3ReadOnlyAccess untuk memberikan akses hanya baca ke sumber. Hal ini memungkinkan transfer, tetapi tidak mendukung penghapusan objek di sumber setelah transfer selesai.
- AmazonS3FullAccess jika transfer Anda dikonfigurasi untuk menghapus objek di sumber.
Peran khusus dengan izin yang sesuai dari tabel Izin yang diperlukan. JSON untuk izin minimum terlihat seperti contoh berikut:
Region AWS standar
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::S3_BUCKET_NAME/*", "arn:aws:s3:::S3_BUCKET_NAME" ] } ] }
Region AWS GovCloud
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws-us-gov:s3:::S3_BUCKET_NAME/*", "arn:aws-us-gov:s3:::S3_BUCKET_NAME" ] } ] }
Catat ID kunci akses dan kunci akses rahasia saat pengguna berhasil dibuat.
Cara Anda meneruskan ID kunci akses dan kunci akses rahasia ke Storage Transfer Service bergantung pada antarmuka yang Anda gunakan untuk memulai transfer.
Google Cloud Konsol
Masukkan nilai langsung ke dalam formulir pembuatan tugas transfer.
Lihat Membuat transfer untuk memulai.
gcloud CLI
Buat file JSON dengan format berikut:
{
"accessKeyId": "AWS_ACCESS_KEY_ID",
"secretAccessKey": "AWS_SECRET_ACCESS_KEY"
}
Teruskan lokasi file ke perintah gcloud transfer jobs create menggunakan flag source-creds-file:
gcloud transfer jobs create s3://S3_BUCKET_NAME gs://GCS_BUCKET_NAME \
--source-creds-file=PATH/TO/KEYFILE.JSON
REST API
Objek transferSpec Anda harus berisi info kunci sebagai bagian dari objek awsS3DataSource:
"transferSpec": {
"awsS3DataSource": {
"bucketName": "S3_BUCKET_NAME",
"awsAccessKey": {
"accessKeyId": "AWS_ACCESS_KEY_ID",
"secretAccessKey": "AWS_SECRET_ACCESS_KEY"
}
},
"gcsDataSink": {
"bucketName": "GCS_BUCKET_NAME"
}
}
Library klien
Lihat contoh di halaman Membuat transfer.
Menyimpan kredensial akses di Secret Manager
Secret Manager adalah layanan aman yang menyimpan dan mengelola data sensitif seperti sandi. Layanan ini menggunakan enkripsi yang kuat, kontrol akses berbasis peran, dan logging audit untuk melindungi secret Anda.
Storage Transfer Service dapat memanfaatkan Secret Manager untuk melindungi kredensial akses AWS Anda. Anda memuat kredensial ke Secret Manager, lalu meneruskan nama resource secret ke Storage Transfer Service.
Mengaktifkan API
Mengaktifkan Secret Manager API.
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin serviceusage.services.enable. Jika Anda
membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Admin Penggunaan Layanan (roles/serviceusage.serviceUsageAdmin).
Pelajari cara memberikan peran.
Mengonfigurasi izin tambahan
Izin pengguna
Pengguna yang membuat secret memerlukan peran berikut:
- Admin Secret Manager (
roles/secretmanager.admin)
Pelajari cara memberikan peran.
Izin agen layanan
Agen layanan Storage Transfer Service memerlukan peran IAM berikut:
- Secret Manager Secret Accessor (
roles/secretmanager.secretAccessor)
Untuk memberikan peran kepada agen layanan Anda:
Google Cloud Konsol
Ikuti petunjuk untuk mengambil email agen layanan Anda.
Buka halaman IAM di Google Cloud konsol.
Klik Grant access.
Di kolom New principals, masukkan email agen layanan.
Di drop-down Select a role, cari dan pilih Secret Manager Secret Accessor.
Klik Save.
gcloud CLI
Gunakan perintah gcloud projects add-iam-policy-binding untuk menambahkan peran IAM ke agen layanan Anda.
Ikuti petunjuk untuk mengambil email agen layanan Anda.
Dari command line, masukkan perintah berikut:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:SERVICE_AGENT_EMAIL' \ --role='roles/secretmanager.secretAccessor'
Membuat secret
Buat secret dengan Secret Manager:
Google Cloud Konsol
Buka halaman Secret Manager di Google Cloud konsol.
Klik Create secret.
Masukkan nama.
Di kolom Secret value, masukkan kredensial Anda dalam format berikut:
{ "accessKeyId": "AWS_ACCESS_KEY_ID", "secretAccessKey": "AWS_SECRET_ACCESS_KEY" }Klik Create secret.
Setelah secret dibuat, catat nama lengkap resource secret:
Pilih tab Overview.
Salin nilai Resource ID. Nilai ini menggunakan format berikut:
projects/1234567890/secrets/SECRET_NAME
gcloud CLI
Untuk membuat secret baru menggunakan gcloud CLI, teruskan kredensial berformat JSON ke perintah gcloud secrets create:
printf '{
"accessKeyId": "AWS_ACCESS_KEY_ID",
"secretAccessKey": "AWS_SECRET_ACCESS_KEY"
}' | gcloud secrets create SECRET_NAME --data-file=-
Ambil nama lengkap resource secret:
gcloud secrets describe SECRET_NAME
Catat nilai name dalam respons. Nilai ini menggunakan format berikut:
projects/1234567890/secrets/SECRET_NAME
Untuk mengetahui detail selengkapnya tentang cara membuat dan mengelola secret, lihat dokumentasi Secret Manager.
Meneruskan secret ke perintah pembuatan tugas
Menggunakan Secret Manager dengan Storage Transfer Service mengharuskan penggunaan REST API untuk membuat tugas transfer.
Teruskan nama resource Secret Manager sebagai nilai kolom transferSpec.awsS3DataSource.credentialsSecret:
POST https://storagetransfer.googleapis.com/v1/transferJobs
{
"description": "Transfer with Secret Manager",
"status": "ENABLED",
"projectId": "PROJECT_ID",
"transferSpec": {
"awsS3DataSource": {
"bucketName": "S3_BUCKET_NAME",
"credentialsSecret": "SECRET_RESOURCE_ID",
},
"gcsDataSink": {
"bucketName": "GCS_BUCKET_NAME"
}
}
}
Melakukan autentikasi menggunakan identitas gabungan
Untuk menggunakan identitas gabungan untuk melakukan autentikasi ke AWS:
Buat peran IAM baru di AWS.
Pilih Custom trust policy sebagai jenis entitas tepercaya.
Salin dan tempel kebijakan kepercayaan berikut:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "accounts.google.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "accounts.google.com:sub": "SUBJECT_ID" } } } ] }Ganti SUBJECT_ID dengan
subjectIDakun layanan yang dikelola Google yang dibuat secara otomatis saat Anda mulai menggunakan Storage Transfer Service. Untuk mengambilsubjectID:Buka halaman referensi
googleServiceAccounts.get.Panel interaktif akan terbuka, berjudul Try this method.
Di panel, di bagian Request parameters, masukkan project ID Anda. Project yang Anda tentukan di sini harus merupakan project yang Anda gunakan untuk mengelola Storage Transfer Service.
Klik Execute.
subjectIddisertakan dalam respons.
Berikan salah satu kebijakan izin berikut ke peran:
- AmazonS3ReadOnlyAccess memberikan akses hanya baca ke sumber. Hal ini memungkinkan transfer, tetapi tidak mendukung penghapusan objek di sumber setelah transfer selesai.
- AmazonS3FullAccess jika transfer Anda dikonfigurasi untuk menghapus objek di sumber.
Peran khusus dengan izin yang sesuai dari tabel Izin yang diperlukan. JSON untuk izin minimum terlihat seperti contoh berikut:
Region AWS standar
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::S3_BUCKET_NAME/*", "arn:aws:s3:::S3_BUCKET_NAME" ] } ] }
Region AWS GovCloud
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws-us-gov:s3:::S3_BUCKET_NAME/*", "arn:aws-us-gov:s3:::S3_BUCKET_NAME" ] } ] }
Tetapkan nama ke peran dan buat peran.
Setelah dibuat, lihat detail peran untuk mengambil Amazon Resource Name (ARN) peran. Catat nilai ini; nilai ini memiliki salah satu format berikut:
- Untuk region AWS standar:
arn:aws:iam::AWS_ACCOUNT:role/AWS_ROLE_NAME - Untuk region AWS GovCloud:
arn:aws-us-gov:iam::AWS_ACCOUNT:role/AWS_ROLE_NAME
Cara Anda meneruskan ARN peran ke Storage Transfer Service bergantung pada antarmuka yang Anda gunakan untuk memulai transfer.
Google Cloud Konsol
Masukkan ARN peran langsung ke dalam formulir pembuatan tugas transfer.
Lihat Membuat transfer untuk memulai.
gcloud CLI
Buat file JSON dengan format berikut:
{
"roleArn": "AWS_ROLE_ARN"
}
Teruskan lokasi file ke perintah gcloud transfer jobs create menggunakan flag source-creds-file:
gcloud transfer jobs create s3://S3_BUCKET_NAME gs://GCS_BUCKET_NAME \
--source-creds-file=PATH/TO/ARNFILE.JSON
REST API
Objek transferSpec Anda harus berisi info ARN peran sebagai bagian dari objek awsS3DataSource:
"transferSpec": {
"awsS3DataSource": {
"bucketName": "AWS_SOURCE_NAME",
"roleArn": "AWS_ROLE_ARN"
},
"gcsDataSink": {
"bucketName": "GCS_BUCKET_NAME"
}
}
Library klien
Lihat contoh di halaman Membuat transfer.
Pembatasan IP
Jika project AWS Anda menggunakan pembatasan IP untuk akses ke penyimpanan, Anda harus menambahkan rentang IP yang digunakan oleh pekerja Storage Transfer Service ke daftar IP yang diizinkan.
Karena rentang IP ini dapat berubah, kami memublikasikan nilai saat ini sebagai file JSON di alamat permanen:
https://www.gstatic.com/storage-transfer-service/ipranges.json
Saat rentang baru ditambahkan ke file, kami akan menunggu setidaknya 7 hari sebelum menggunakan rentang tersebut untuk permintaan dari Storage Transfer Service.
Sebaiknya ambil data dari dokumen ini setidaknya setiap minggu untuk menjaga konfigurasi keamanan Anda tetap terbaru. Untuk contoh skrip Python yang mengambil rentang IP dari file JSON, lihat artikel ini dari dokumentasi Virtual Private Cloud documentation.
Untuk menambahkan rentang ini sebagai IP yang diizinkan, gunakan bidang Condition dalam kebijakan bucket, seperti yang dijelaskan dalam dokumentasi AWS S3:
Mengelola akses berdasarkan alamat IP tertentu.