

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

# Amazon SQS の属性ベースのアクセス制御
<a name="sqs-abac"></a>

## ABAC とは
<a name="sqs-abac-whatis"></a>

属性ベースのアクセス制御 (ABAC) は、ユーザーおよび AWS リソースにアタッチされたタグに基づいてアクセス許可を定義する認可プロセスです。ABAC は、属性と値に基づいてきめ細かく柔軟なアクセス制御を実現し、再構成されたロールベースのポリシーに関連するセキュリティリスクを軽減し、監査とアクセスポリシー管理を一元化します。ABAC の詳細については、「IAM ユーザーガイド**」の「[AWSの ABAC とは](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)」を参照してください。

Amazon SQS は、Amazon SQS キューに関連付けられているタグとエイリアスに基づいて Amazon SQS キューへのアクセスを制御できるようにすることで、ABAC をサポートしています。Amazon SQS の ABAC を有効にするタグおよびエイリアスの条件キーは、ポリシーを編集したりグラントを管理することなく、IAM プリンシパルが Amazon SQS キューを使用することを許可します。ABAC の条件キーの詳細については、「*サービス認可リファレンス*」の「[Amazon SQS の条件キー](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonsqs.html#amazonsqs-policy-keys)」を参照してください。

ABAC では、タグを使用して Amazon SQS キューの IAM アクセス許可とポリシーを設定できます。これにより、アクセス許可管理をスケールできます。各ビジネスロールに追加するタグを使用して、IAM で単一のアクセス許可ポリシーを作成できます。新しいリソースを追加するたびにポリシーを更新する必要はありません。IAM プリンシパルにタグをアタッチして ABAC ポリシーを作成することもできます。呼び出しを行う IAM ユーザーロールのタグが Amazon SQS キュータグと一致した場合に Amazon SQS オペレーションを許可するように ABAC ポリシーを設計できます。でのタグ付けの詳細については AWS、[AWS 「タグ付け戦略](https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html)」と「」を参照してください[Amazon SQSコスト配分タグ](sqs-queue-tags.md)。

**注記**  
Amazon SQS の ABAC は現在、Amazon SQS が利用可能なすべての AWS 商用リージョンで使用できますが、以下の例外があります。  
アジアパシフィック (ハイデラバード)
アジアパシフィック (メルボルン)
欧州 (スペイン) 
欧州 (チューリッヒ)

## Amazon SQS で ABAC を使用すべき理由は何ですか。
<a name="sqs-abac-benefits"></a>

Amazon SQS で ABAC を使用すると、以下のようなメリットがあります。
+ Amazon SQS 用 ABAC では、必要なアクセス許可ポリシーが少なくて済みます。職務機能ごとに異なるポリシーを作成する必要はありません。複数のキューに適用されるリソースタグとリクエストタグを使用できるため、運用上のオーバーヘッドが軽減できます。
+ ABAC を使用すると、チームを迅速にスケールできます。リソースの作成時に適切なタグが付けられると、新しいリソースのアクセス許可はタグに基づいて自動的に付与されます。
+ IAM プリンシパルのアクセス許可を使用して、リソースへのアクセスを制限します。IAM プリンシパルのタグを作成し、そのタグを使用して IAM プリンシパルのタグと一致する特定のアクションへのアクセスを制限できます。これにより、リクエストのアクセス許可を付与するプロセスを自動化できます。
+ リソースにアクセスしているユーザーを追跡できます。セッションの ID は、 AWS CloudTrailのユーザー属性を調べることで判断できます。

**Topics**
+ [ABAC とは](#sqs-abac-whatis)
+ [Amazon SQS で ABAC を使用すべき理由は何ですか。](#sqs-abac-benefits)
+ [アクセス制御のタグ付け](sqs-abac-tagging-resource-control.md)
+ [IAM ユーザーと Amazon SQS キューの作成](sqs-abac-creating-queues.md)
+ [属性ベースのアクセス制御のテスト](sqs-abac-testing-access-control.md)

# Amazon SQS でのアクセス制御のタグ付け
<a name="sqs-abac-tagging-resource-control"></a>

以下は、Amazon SQS におけるアクセス制御のためにタグを使用する例です。IAM ポリシーは、キー environment および値 production のタグを持つリソースタグを含むすべてのキューに対して、IAM ユーザーにすべての Amazon SQS アクションを制限します。詳細については、[「タグを使用した属性ベースのアクセスコントロール」と AWS 「Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_tagging_abac.html)」を参照してください。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowAccessForProd",
      "Effect": "Allow",
      "Action": "sqs:*",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/environment": "prod"
        }
      }
    }
  ]
}
```

------

# IAM ユーザーと Amazon SQS キューの作成
<a name="sqs-abac-creating-queues"></a>

次の例では、 AWS マネジメントコンソール と を使用して Amazon SQS へのアクセスを制御する ABAC ポリシーを作成する方法について説明します CloudFormation。

## の使用 AWS マネジメントコンソール
<a name="sqs-abac-creating-queues-console"></a>

**IAM ユーザーの作成**

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) で IAM コンソールを開きます。

1. 左側のナビゲーションペインで **[ユーザー]** を選択します。

1. **[ユーザーを追加]** を選択し、**[ユーザー名]** テキストボックスに名前を入力します。

1. **[アクセスキー - プログラムによるアクセス]** ボックスを選択し、**[次へ: 許可]** を選びます。

1. **[Next:Tags]** (次のステップ: タグ) を選択します。

1. タグのキーを `environment`、タグの値を `beta` として追加します。

1. **[次の手順: 確認]**、**[作成]** の順に選択します。

1. アクセスキー ID とシークレットアクセスキーを安全な場所にコピーして保存します。

**IAM ユーザーのアクセス許可を追加する**

1. 作成した IAM ユーザーを選択します。

1. [**Add inline policy**] (インラインポリシーの追加) を選択します。

1. [JSON] タブに、以下のポリシーを貼り付けます。

1. **[ポリシーの確認]** を選択します。

1. [**Create policy**] (ポリシーの作成) を選択します。

## の使用 AWS CloudFormation
<a name="sqs-abac-creating-queues-cf"></a>

次のサンプル CloudFormation テンプレートを使用して、インラインポリシーと Amazon SQS キューがアタッチされた IAM ユーザーを作成します。

```
AWSTemplateFormatVersion: "2010-09-09"
Description: "CloudFormation template to create IAM user with custom inline policy"
Resources:
    IAMPolicy:
        Type: "AWS::IAM::Policy"
        Properties:
            PolicyDocument: |
                {
                    "Version": "2012-10-17",		 	 	 
                    "Statement": [
                        {
                            "Sid": "AllowAccessForSameResTag",
                            "Effect": "Allow",
                            "Action": [
                                "sqs:SendMessage",
                                "sqs:ReceiveMessage",
                                "sqs:DeleteMessage"
                            ],
                            "Resource": "*",
                            "Condition": {
                                "StringEquals": {
                                    "aws:ResourceTag/environment": "${aws:PrincipalTag/environment}"
                                }
                            }
                        },
                        {
                            "Sid": "AllowAccessForSameReqTag",
                            "Effect": "Allow",
                            "Action": [
                                "sqs:CreateQueue",
                                "sqs:DeleteQueue",
                                "sqs:SetQueueAttributes",
                                "sqs:tagqueue"
                            ],
                            "Resource": "*",
                            "Condition": {
                                "StringEquals": {
                                    "aws:RequestTag/environment": "${aws:PrincipalTag/environment}"
                                }
                            }
                        },
                        {
                            "Sid": "DenyAccessForProd",
                            "Effect": "Deny",
                            "Action": "sqs:*",
                            "Resource": "*",
                            "Condition": {
                                "StringEquals": {
                                    "aws:ResourceTag/stage": "prod"
                                }
                            }
                        }
                    ]
                }
                
            Users: 
              - "testUser"
            PolicyName: tagQueuePolicy

    IAMUser:
        Type: "AWS::IAM::User"
        Properties:
            Path: "/"
            UserName: "testUser"
            Tags: 
              - 
                Key: "environment"
                Value: "beta"
```

# Amazon SQS での属性ベースのアクセス制御のテスト
<a name="sqs-abac-testing-access-control"></a>

以下の例は、Amazon SQS で属性ベースのアクセス制御をテストする方法について示しています。

## タグキーを environment に設定し、タグ値を prod に設定してキューを作成します。
<a name="sqs-abac-testing-access-control-create-queue"></a>

この AWS CLI コマンドを実行して、タグキーを環境に設定し、タグ値を prod に設定してキューの作成をテストします。 AWS CLI がない場合は、マシン用に[ダウンロードして設定できます](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。

```
aws sqs create-queue --queue-name prodQueue —region us-east-1 —tags "environment=prod"
```

Amazon SQS エンドポイントから `AccessDenied` エラーを受け取ります。

```
An error occurred (AccessDenied) when calling the CreateQueue operation: Access to the resource <queueUrl> is denied.
```

これは、IAM ユーザーのタグ値が [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_CreateQueue.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_CreateQueue.html) API コールで渡されたタグと一致しないためです。キーを `environment` に、値を `beta` に設定したタグを IAM ユーザーに適用したことを思い出してください。

## タグキーを environment に設定し、タグ値を beta に設定してキューを作成する
<a name="sqs-abac-testing-access-control-create-env"></a>

この CLI コマンドを実行して、タグキーを `environment` に設定し、タグ値を `beta` に設定したキューの作成をテストします。

```
aws sqs create-queue --queue-name betaQueue —region us-east-1 —tags "environment=beta"
```

キューが正常に作成されたことを確認する次のようなメッセージが表示されます。

```
{
"QueueUrl": "<queueUrl>“
}
```

## キューへメッセージを送信する
<a name="sqs-abac-testing-access-control-sending-message"></a>

この CLI コマンドを実行して、キューへのメッセージ送信をテストします。

```
aws sqs send-message --queue-url <queueUrl> --message-body testMessage
```

レスポンスには、Amazon SQS キューへのメッセージ配信が成功したことが示されます。IAM ユーザーアクセス許可により、`beta` タグを持つキューにメッセージを送信できます。レスポンスにはメッセージを含む `MD5OfMessageBody` と `MessageId` が含まれます。

```
{
"MD5OfMessageBody": "<MD5OfMessageBody>",
"MessageId": "<MessageId>"
}
```