

 AWS SDK for Java 1.x は 2025 年 12 月 31 日にend-of-supportしました。新しい機能、可用性の向上、セキュリティ更新のために、[AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/home.html) に移行することをお勧めします。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# アクセスコントロールポリシー
<a name="java-dg-access-control"></a>

 AWS *アクセスコントロールポリシー*を使用すると、 AWS リソースにきめ細かなアクセスコントロールを指定できます。アクセスコントロールポリシーは、次のフォームを持つ*ステートメント*のコレクションで構成されます。

 *アカウント A* は、*アクション B* を*リソース C* に対して実行する権限があります (*条件 D* に該当する場合)。

コードの説明は以下のとおりです。
+  ** はプリン*シパル* - AWS リソースの 1 つへのアクセスまたは変更をリクエスト AWS アカウント している です。
+  *B* は*アクション* - Amazon SQS キューへのメッセージの送信や Amazon S3 バケットへのオブジェクトの保存など、 AWS リソースにアクセスまたは変更する方法。
+  *C* は*リソース* - Amazon SQS キューや保存されているオブジェクトなど、プリンシパルがアクセスする AWS エンティティ Amazon S3です。
+  *D* は*一連の条件* - プリンシパルがリソースにアクセスすることを許可または拒否するタイミングを指定するオプションの制約。さまざまな表記の条件を使用できます。条件によっては、サービスごとに固有な条件もあります。たとえば、日付条件を使用して、特定の時刻の前または後でのみリソースへのアクセスを許可することができます。

## Amazon S3 例
<a name="s3-example"></a>

次の例は、バケット内のすべてのオブジェクトを読み取るアクセスをすべてのユーザーに許可するが、そのバケットへのオブジェクトのアップロードへのアクセスを (バケット所有者のアカウントに加えて) 2 AWS アカウントつの特定の に制限するポリシーを示しています。

```
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 例
<a name="sqs-example"></a>

ポリシーの一般的な用途の 1 つは、Amazon SNS トピックからメッセージを受信することを Amazon SQS キューに許可することです。

```
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));
```

## Amazon SNS の例
<a name="sns-example"></a>

一部のサービスには、ポリシーで使用できる追加条件があります。Amazon SNS は、トピックへのサブスクライブリクエストのプロトコル (E メール、HTTP、HTTPS など Amazon SQS) とエンドポイント (E メールアドレス、URL、 Amazon SQS ARN など) に基づいて、SNS トピックへのサブスクリプションを許可または拒否するための条件を提供します。

```
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()));
```