Kebijakan Kontrol Akses - AWS SDK for Java 1.x

Kami mengumumkan yang akan datang end-of-support untuk AWS SDK for Java (v1). Kami menyarankan Anda bermigrasi ke AWS SDK for Java v2. Untuk tanggal, detail tambahan, dan informasi tentang cara bermigrasi, silakan merujuk ke pengumuman tertaut.

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

Kebijakan Kontrol Akses

AWS Kebijakan kontrol akses memungkinkan Anda menentukan kontrol akses berbutir halus pada sumber daya Anda. AWS Kebijakan kontrol akses terdiri dari kumpulan pernyataan, yang berbentuk:

Akun A memiliki izin untuk melakukan tindakan B pada sumber daya C di mana kondisi D berlaku.

Di mana:

  • A adalah prinsipal - Akun AWS Yang membuat permintaan untuk mengakses atau memodifikasi salah satu AWS sumber daya Anda.

  • B adalah tindakan - Cara di mana AWS sumber daya Anda sedang diakses atau dimodifikasi, seperti mengirim pesan ke Amazon SQS antrian, atau menyimpan objek dalam Amazon S3 ember.

  • C adalah sumber daya - AWS Entitas yang prinsipal ingin mengakses, seperti Amazon SQS antrian, atau objek yang disimpan di Amazon S3.

  • D adalah sekumpulan kondisi - Kendala opsional yang menentukan kapan harus mengizinkan atau menolak akses bagi prinsipal untuk mengakses sumber daya Anda. Banyak kondisi ekspresif tersedia, beberapa khusus untuk setiap layanan. Misalnya, Anda dapat menggunakan ketentuan tanggal untuk mengizinkan akses ke sumber daya Anda hanya setelah atau sebelum waktu tertentu.

Amazon S3 Contoh

Contoh berikut menunjukkan kebijakan yang memungkinkan siapa pun mengakses untuk membaca semua objek dalam bucket, tetapi membatasi akses untuk mengunggah objek ke bucket tersebut ke dua Akun AWS s tertentu (selain akun pemilik bucket).

Statement allowPublicReadStatement = new Statement(Effect.Allow) .withPrincipals(Principal.AllUsers) .withActions(S3Actions.GetObject) .withResources(new S3ObjectResource(myBucketName, "*")); Statement allowRestrictedWriteStatement = new Statement(Effect.Allow) .withPrincipals(new Principal("123456789"), new Principal("876543210")) .withActions(S3Actions.PutObject) .withResources(new S3ObjectResource(myBucketName, "*")); Policy policy = new Policy() .withStatements(allowPublicReadStatement, allowRestrictedWriteStatement); AmazonS3 s3 = AmazonS3ClientBuilder.defaultClient(); s3.setBucketPolicy(myBucketName, policy.toJson());

Amazon SQS Contoh

Salah satu penggunaan kebijakan yang umum adalah untuk mengotorisasi Amazon SQS antrian untuk menerima pesan dari topik Amazon SNS.

Policy policy = new Policy().withStatements( new Statement(Effect.Allow) .withPrincipals(Principal.AllUsers) .withActions(SQSActions.SendMessage) .withConditions(ConditionFactory.newSourceArnCondition(myTopicArn))); Map queueAttributes = new HashMap(); queueAttributes.put(QueueAttributeName.Policy.toString(), policy.toJson()); AmazonSQS sqs = AmazonSQSClientBuilder.defaultClient(); sqs.setQueueAttributes(new SetQueueAttributesRequest(myQueueUrl, queueAttributes));

Contoh Amazon SNS

Beberapa layanan menawarkan ketentuan tambahan yang dapat digunakan dalam kebijakan. Amazon SNS menyediakan ketentuan untuk mengizinkan atau menolak langganan ke topik SNS berdasarkan protokol (misalnya, email, HTTP, HTTPS, Amazon SQS) dan titik akhir (misalnya, alamat email, URL, Amazon SQS ARN) dari permintaan untuk berlangganan topik.

Condition endpointCondition = SNSConditionFactory.newEndpointCondition("*@mycompany.com"); Policy policy = new Policy().withStatements( new Statement(Effect.Allow) .withPrincipals(Principal.AllUsers) .withActions(SNSActions.Subscribe) .withConditions(endpointCondition)); AmazonSNS sns = AmazonSNSClientBuilder.defaultClient(); sns.setTopicAttributes( new SetTopicAttributesRequest(myTopicArn, "Policy", policy.toJson()));