Amazon Web Services ブログ

Amazon RDSでのIAM multifactor authenticationの利用について

お客様からよく頂くご要望に、インスタンス、スナップショット、クラスタなどのリソースを予期しない、または悪意のあるユーザの削除から保護する方法です。これは、複数のユーザーやチームで共通のAWSアカウントを使用する場合に特に重要です。アカウント内の利用を効率的に行うことも重要ですが、重要なデータを失うことを防ぐためにセキュリティも必要です。

1つの選択肢は、AWS Identity and Access Management(IAM)ポリシーをmultifactor authentication (MFA)で使用することです。MFAでは、AWSリソースに関連した操作を行う際に、承認された認証デバイスまたはSMSテキストメッセージから取得した一意の認証コードを入力する必要があります。この記事はMFAを用いたAmzon RDSのリソースの保護についてご説明します。

たとえば、* prod *のような命名規則でタグ付けされ保護されたリソースの削除を制限するIAMポリシーを作成します。

次に、AWSマネージメントコンソールにアクセスするためにMFA認証が必要な2つ目のIAMポリシーを作成し、このアカウントに対して特定の削除権限を与えます。このようにして、アクセス権のあるすべてのユーザーを監査し、選択されたユーザーのみが必要な権限を持っていることを確認できます。

2つのポリシーを利用します。1つはAWS managed policyの、AmazonRDSFullAccessです。もう1つはcustomer managedポリシーの、RDSDenyDeleteというポリシーを作成します。このポリシーは、リソースを削除する可能性のあるコマンドの実行を制限します。

First step: Start in the IAM console

IAMコンソールを開きます。Create policyを選択し、次のJSONコードをポリシーエディタボックスに貼り付けます。

{
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "rds:DeleteDBClusterSnapshot",
                "rds:DeleteDBSnapshot",
                "rds:DeleteDBCluster",
                "rds:DeleteDBInstance"
            ],
            "Resource": "*"
        }
    ]
}

Review policyを選択し、ポリシーに名前と説明を付けます。

Create-Policy

次に、AmazonRDSFullAccessポリシーとRDSDenyDeleteポリシーを組み合わせたグループを作成します。

IAMコンソールのGroupsから、Create new groupを選択し、グループ名を設定します。この例ではAWSDevelopmentTeamを利用します。

Set-Group-Name

Next stepを選択します。AmazonRDSFullAccessおよびRDSDenyDeleteの横にあるチェックボックスをを選択します。

Next stepを選択し、Create groupを選択します。

AWSDevelopmentTeamグループに新しいユーザーを追加すると、Amazon RDSへの操作の全てのアクセス権がありますが、重要なリソースの削除は制限されています。

Next step: productionとタグのついたリソースのみ削除を制限する

これまでのポリシーは、開発チームにとって過度に制限されたと思われる可能性があります。productionとタグ付けされたリソースだけを保護するために、このポリシーを変更します。これにより、AWSDevelopmentTeamグループの開発者は、プロダクションリソースを保護しながらテストインスタンスを削除できます。これを行うには、ポリシーエディタのRDSDenyDeleteに戻り、次のJSONコードから11行目から16行目を追加します。

1 {
2     "Statement": [
3         {
4             "Effect": "Deny",
5             "Action": [
6                 "rds:DeleteDBClusterSnapshot",
7                 "rds:DeleteDBSnapshot",
8                 "rds:DeleteDBCluster",
9                 "rds:DeleteDBInstance"
10             ],
11            "Resource": "*",
12             "Condition": {
13                 "StringLikeIfExists": {
14                     "aws:TagKeys": "production"
15                  } 
16              }
17         }
18     ]
19 }

注意: これは簡単な例です。実働環境では、タグ自身がこれらのリソースを保護するため、AddTagsToResouceおよびRemoveTagsFromResounceの保護も含める必要があります。このアプローチは、AddTagToResource APIアクションで本番リソースにタグを付ける必要があることを意味します。

Next step: プロダクションリソースを削除する権限を持ったグループの作成

次に、本番リソースを削除するために使用する別のポリシーを作成する方法を紹介します。リソースを削除する必要がある場合にのみ、この権限を付与する必要があります。AWSセキュリティ担当者は、必要に応じてこの権限を付与することができます。

ここでも、ポリシーエディタで次のコードを追加してポリシーを作成します。

{
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "rds:DeleteDBClusterSnapshot",
                "rds:DeleteDBSnapshot",
                "rds:DeleteDBCluster",
                "rds:DeleteDBInstance"
            ],
            "Resource": "*"
        }
    ]
}

Review policyを選択し、ポリシーに名前と説明を付けます。

Create-Policy1

Final step: MFAを利用したポリシーの保護

MFAをRDSDeleteResourcesポリシーに追加するには、ポリシーエディタを再度開き、次のJSONコードから12〜17行目を追加してMFA認証を要求します。

1 {
2     "Version": "2012-10-17",
3     "Statement": [
4         {
5             "Effect": "Allow",
6             "Action": [
7                 "rds:DeleteDBClusterSnapshot",
8                 "rds:DeleteDBSnapshot",
9                 "rds:DeleteDBCluster",
10                 "rds:DeleteDBInstance"
11             ],
12             "Resource": "*",
13             "Condition": {
14                 "BoolIfExists": {
15                     "aws:MultiFactorAuthPresent": "true"
16                 }
17             }
18         }
19     ]
20 }

ポリシーがAWSセキュリティ担当者によってユーザーに適用されると、AWSマネージメントコンソールまたはAPIへのアクセス権が付与される前に、ユーザーはMFAで認証を行う必要があります。

MFAの設定

利用可能な無料のMFAアプリケーションがいくつかあります。たとえば、私はAuthyをダウンロードしました。AWSユーザーは、MFAをログインに利用するために、MFAデバイス(Authyがインストールされた携帯電話など)を登録する必要があります。

MFAデバイスの選択と設定方法については、IAMユーザーガイドEnabling a Virtual Multifactor Authentication (MFA) Deviceを参照してください。

作成したポリシーで作業する場合は、ユーザーのコンソールへのアクセスのみを制限することをお勧めします。したがって、削除権限を持ったユーザーには、AWSマネージメントコンソールへのアクセス権のみ付与します。

Summary

この記事では、重要なデータリソースを保護するためのメカニズムを提供すると同時に、アカウント内で柔軟なアカウント制御を提供するIAMセキュリティポリシーを設定する方法を紹介しました。また、MFAを使用して、破壊的な操作のための追加のセキュリティ層を提供する方法を示しました。特定のユーザーのみに破壊的な操作をを制限して、アクセス制御を行う方法を見ていただけたかと思います。

 


About the Author

Photo of Phil IntiharPhil Intihar is a database engineer at Amazon Web Services.

 

 

 

 

翻訳は星野が担当しました。原文はこちら