Farhin が IAM 資格情報を
使用して RDS インスタンスに認証する方法を
説明します

farhin_authenticate_rds

ネイティブの認証方法を使用せずに、AWS Identity and Access Management (IAM) 認証情報を使用して、Amazon Relational Database Service (Amazon RDS) DB インスタンスに接続します。その方法を教えてください。

Amazon RDS ユーザーは、IAM ユーザーまたはロールの認証情報と認証トークンを使用して、RDS DB インスタンスまたはクラスターに接続することができます。IAM データベース認証は、ネイティブの認証方法よりも、次の点で安全です。

  • IAM データベース認証トークンは、AWS アクセスキーを使用して生成されている。データベースのユーザー認証情報を保存する必要はありません。
  • 認証トークンには 15 分の有効期間があるため、パスワードをリセットする必要はありません。
  • IAM データベース認証では、SSL 接続を使用する必要があるため、RDS DB インスタンス間で送受信されるデータはすべて暗号化されます。
  • アプリケーションが Amazon Elastic Compute Cloud (Amazon EC2) で実行されている場合は、EC2 インスタンスプロファイルの認証情報を使用して、データベースにアクセスできます。データベースのパスワードをインスタンスに保存する必要はありません。

IAM ロールを使用して IAM データベース認証をセットアップするには、以下のステップを行います。

  1. RDS DB インスタンスで IAM DB 認証を有効にします。
  2. AWS 認証トークンを使用するデータベースユーザーアカウントを作成します。
  3. データベースユーザーを IAM ロールにマッピングする IAM ポリシーを追加します。
  4. IAM ロールを EC2 インスタンスにアタッチします。
  5. AWS 認証トークンを生成して、IAM ロールを識別します。
  6. SSL ルート証明書ファイルまたは証明書バンドルファイルをダウンロードします。
  7. IAM ロール認証情報および認証トークンを使用して、RDS DB インスタンスに接続します。

注: IAM データベース認証は、特定のデータベースエンジンとインスタンスタイプでのみ使用できます。サポートされているエンジンとインスタンスのリストについては、「IAM データベース認証の可用性」を参照してください。

この手順を開始する前に、以下を起動済みであることを確認します。

RDS DB インスタンスで IAM DB 認証を有効にする

IAM データベース認証を有効にするには、AWS マネジメントコンソール、AWS コマンドラインインターフェイス (AWS CLI)、または Amazon RDS API を使用します。

手順については、「IAM データベース認証の有効化と無効化」を参照してください。

注: DB インスタンスの変更ページの [メンテナンス] で、[すぐに適用] を選択して、IAM データベース認証をただちに有効にします。その他の保留中の変更によっては、[Apply Immediately (すぐに適用)] によってダウンタイムが発生する原因になります。

AWS 認証トークンを使用するデータベースユーザーアカウントを作成する

1.    次のコマンドを実行して、インスタンスまたはクラスターのエンドポイントに接続します。マスターパスワードを入力してログインします。

$ mysql -h {database or cluster endpoint} -P {port number database is listening on} -u {master db username} -p

2.    このコマンドを実行して、パスワードではなく、AWS 認証トークンを使用するデータベースユーザーアカウントを作成します。

CREATE USER {db username} IDENTIFIED WITH AWSAuthenticationPlugin as 'RDS';

3.    オプションで、このコマンドを実行して、データベースの接続時にユーザーに SSL 接続を求めます。  

GRANT USAGE ON *.* TO '{dbusername2}'@'%'REQUIRE SSL;

4.    exit コマンドを実行して、MySQL を終了します。続いて、インスタンスからログアウトします。

Amazon RDS へのアクセスを許可する IAM ロールを作成する

1.    IAM コンソールを開きます。次に、ナビゲーションペインから [ロール] を選択します。

2.    [ロールの作成] を選択します。

3.    [AWS service (AWS のサービス)]、[EC2] の順に選択します。

4.    [ユースケースの選択] で、[EC2]、[Next: Permissions (次へ: アクセス許可)] の順に選択します。

5.    検索バーに「RDS」と入力します。次に、[AmazonRDSFullAccess]、またはそれより低いアクセス許可を付与するカスタムの RDS IAM ポリシーを選択します。

6.    [次へ: レビュー] を選択します。

7.     [ロール名] に、この IAM ロールの名前を入力します。

8.    [ロールの作成] を選択します。

データベースユーザーを IAM ロールにマッピングする IAM ポリシーを追加する

1.    IAM ロールのリストから、新しく作成した IAM ロールを開きます。

2.    [Add inline policy] を選択します。

3.    [Creating and Using an IAM Policy for IAM Database Access (IAM データベースアクセス用の IAM ポリシーの作成と使用)] からポリシーを入力します。
注: [Resource (リソース)] 値は、データベースリソースの詳細 (例: DB インスタンス識別子やデータベースユーザー名) を使用して編集してください。

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

5.    [名前]: ポリシー名を入力します。

6.    [Create policy] を選択します。

IAM ロールを EC2 インスタンスにアタッチする

1.    Amazon EC2 コンソールを開きます。

2.    使用する EC2 インスタンスを選択して、Amazon RDS に接続します。

3.    新しく作成した IAM ロールを EC2 インスタンスにアタッチします。

4.    SSH を使用して、EC2 インスタンスに再接続します。

AWS 認証トークンを生成して、IAM ロールを識別する

EC2 インスタンスに接続したら、次の AWS Command Line Interface (AWS CLI) コマンドを実行して、認証トークンを生成します。後で使用できるように、認証トークンをコピーして保存します。

注: このトークンは、作成後 15 分以内に失効します。

$ aws rds generate-db-auth-token --hostname {db or cluster endpoint} --port 3306 --username {db username}

SSL ルート証明書ファイルまたは証明書バンドルファイルをダウンロードする

すべてのリージョンで使用できるルート証明書をダウンロードするには、このコマンドを実行します。

$ wget https://s3.amazonaws.com/rds-downloads/rds-ca-2015-root.pem

アプリケーションで証明書チェーンが受け入れられない場合は、次のコマンドを実行して、新旧のルート証明書のいずれも含む証明書バンドルをダウンロードします。  

$ wget https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem

RDSHOST="rdsmysql.abcdefghijk.us-west-2.rds.amazonaws.com"
TOKEN="$(aws rds generate-db-auth-token --hostname $RDSHOST --port 3306 --region us-west-2 --username jane_doe )"

mysql --host=$RDSHOST --port=3306 --ssl-ca=/sample_dir/rds-combined-ca-bundle.pem --enable-cleartext-plugin --user=jane_doe --password=$TOK

注: PKCS7 ファイルが必要な Windows プラットフォームアプリケーションについては、「SSL を使用した DB インスタンスへの接続の暗号化」を参照して、適切な証明書をダウンロードします。

IAM ロール認証情報および認証トークンを使用して、RDS DB インスタンスに接続する

証明書ファイルをダウンロードしたら、次のコマンドを実行し、SSL で MySQL ユーティリティを使用して、RDS DB インスタンスに接続します。


このページは役に立ちましたか? はい | いいえ

AWS サポート ナレッジ センターに戻る

サポートが必要ですか? AWS サポートセンターをご覧ください。

公開日: 2018 年 03 月 13 日

更新: 2018 年 11 月 16 日