クラスターへのアクセス - Amazon MemoryDB

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

クラスターへのアクセス

MemoryDB インスタンスは、Amazon EC2 インスタンスを介してアクセスするように設計されています。

同じ Amazon VPC 内の Amazon EC2 インスタンスから MemoryDB ノードにアクセスできます。または、VPC ピアリングを使用して、異なる Amazon VPC 内の Amazon EC2 から MemoryDB ノードにアクセスできます。

すべてのクラスターに対するアクセスを許可する

同じ Amazon VPC で実行されている Amazon EC2 インスタンスからのみ MemoryDB クラスターに接続できます。この場合、クラスターに対するネットワーク進入を許可する必要があります。

Amazon VPC セキュリティグループからクラスターへのネットワーク進入を許可するには
  1. にサインイン AWS Management Console し、https://console.aws.amazon.com/ec2/ で Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインで、[ネットワークとセキュリティ] の下にある [セキュリティグループ] を選択します。

  3. セキュリティグループのリストから、Amazon VPC のセキュリティグループを選択します。MemoryDB 用のセキュリティグループを作成した場合を除き、このセキュリティグループは、デフォルトという名前になります。

  4. Inbound タブを選択し、次の操作を行います。

    1. Edit (編集) を選択します。

    2. ルールの追加 を選択します。

    3. Type 列で Custom TCP rule を選択します。

    4. Port range ボックスに、クラスターノードのポート番号を入力します。この番号は、クラスターの起動時に指定した番号と同じ番号である必要があります。Redis OSS のデフォルトポートは です6379

    5. [ソース] ボックスで [任意の場所] を選択します。ポート範囲が 0.0.0.0/0 になるため、Amazon VPC 内で起動したすべての Amazon EC2 インスタンスを MemoryDB ノードに接続できます。

      重要

      MemoryDBクラスターを0.0.0.0/0にオープンしても、クラスターはパブリックIPアドレスを持たないためインターネットに公開されず、VPC外からアクセスすることはできません。ただし、お客様のアカウントの他の Amazon EC2 インスタンスにデフォルトのセキュリティグループが適用され、そのインスタンスにパブリック IP アドレスが付与される場合があります。それがデフォルトポートで何かを実行している場合、そのサービスが意図せず公開されることがあります。そのため、MemoryDB専用にVPCセキュリティグループを作成することをお勧めします。詳細については、「 カスタムセキュリティグループ」を参照してください。

    6. Save (保存) を選択します。

Amazon VPCにAmazon EC2インスタンスを起動すると、そのインスタンスはMemoryDBクラスターに接続できるようになります。

外部から MemoryDB リソースにアクセスする AWS

MemoryDBは、VPC内部で使用するために設計されたサービスです。インターネットトラフィックの遅延やセキュリティ上の懸念により、外部アクセスは推奨されません。ただし、テストや開発目的でMemoryDBへの外部アクセスが必要な場合は、VPNを介してアクセスすることができます。

AWS クライアント VPN を使用すると、MemoryDB ノードへの外部アクセスを許可できますが、次の利点があります。

  • 承認されたユーザーまたは認証キーへのアクセスの制限

  • VPN クライアントと AWS VPN エンドポイント間の暗号化されたトラフィック

  • 特定のサブネットまたはノードへのアクセスの制限

  • ユーザーまたは認証キーからのアクセスの容易な取り消し

  • 接続の監査

次に、以下の方法について手順を示します。

認証局の作成

認証局 (CA) は、さまざまな手法やツールを使用して作成できます。ここでは、OpenVPN プロジェクトが提供する easy-rsa ユーティリティをお勧めします。選択するオプションにかかわらず、キーは安全に保管してください。次の手順では、easy-rsa スクリプトをダウンロードし、最初の VPN クライアントを認証するための認証局とキーを作成します。

  • 初期証明書を作成するには、ターミナルを開き、次の操作を行います。

    • git clone https://github.com/OpenVPN/easy-rsa

    • cd easy-rsa

    • ./easyrsa3/easyrsa init-pki

    • ./easyrsa3/easyrsa build-ca nopass

    • ./easyrsa3/easyrsa build-server-full server nopass

    • ./easyrsa3/easyrsa build-client-full client1.domain.tld nopass

    証明書を含む pki サブディレクトリが easy-rsa の下に作成されます。

  • サーバー証明書を AWS Certificate Manager (ACM) に送信します。

    • ACM コンソールで、Certificate Manager を選択します。

    • 証明書のインポート を選択します。

    • easy-rsa/pki/issued/server.crt ファイルにあるパブリックキー証明書を 証明書本文 フィールドに入力します。

    • easy-rsa/pki/private/server.key にあるプライベートキーを 証明書のプライベートキー フィールドに貼り付けます。BEGIN AND END PRIVATE KEY 間にあるすべての行 (BEGIN 行と END 行を含む) を選択してください。

    • easy-rsa/pki/ca.crt ファイルにある CA パブリックキーを 証明書チェーン フィールドに貼り付けます。

    • レビューとインポート を選択します。

    • インポート を選択します。

    AWS CLI を使用してサーバーの証明書を ACM に送信するには、次のコマンドを実行します。 aws acm import-certificate --certificate fileb://easy-rsa/pki/issued/server.crt --private-key file://easy-rsa/pki/private/server.key --certificate-chain file://easy-rsa/pki/ca.crt --region region

    後で使用するために証明書 ARN を書き留めます。

AWS クライアント VPN コンポーネントの設定

AWS コンソールの使用

AWS コンソールで、サービス を選択し、次に VPC を選択します。

仮想プライベートネットワーク で、クライアント VPN エンドポイント を選択し、次の操作を行います。

AWS クライアント VPN コンポーネントの設定

  • クライアント VPN エンドポイントの作成 を選択します。

  • 以下のオプションを指定します。

    • クライアント IPv4 CIDR: /22 以上の範囲のネットマスクを持つプライベートネットワークを使用します。選択したサブネットが VPC ネットワークのアドレスと競合していないことを確認します。例: 10.0.0.0/22。

    • サーバー証明書 ARN で、以前にインポートした証明書の ARN を選択します。

    • 相互認証の使用 を選択します。

    • クライアント証明書 ARN で、以前にインポートした証明書の ARN を選択します。

    • クライアント VPN エンドポイントの作成 を選択します。

の使用 AWS CLI

次のコマンドを実行します。

aws ec2 create-client-vpn-endpoint --client-cidr-block "10.0.0.0/22" --server-certificate-arn arn:aws:acm:us-east-1:012345678912:certificate/0123abcd-ab12-01a0-123a-123456abcdef --authentication-options Type=certificate-authentication,,MutualAuthentication={ClientRootCertificateChainArn=arn:aws:acm:us-east-1:012345678912:certificate/123abcd-ab12-01a0-123a-123456abcdef} --connection-log-options Enabled=false

出力例:

"ClientVpnEndpointId": "cvpn-endpoint-0123456789abcdefg", "Status": { "Code": "pending-associate" }, "DnsName": "cvpn-endpoint-0123456789abcdefg.prod.clientvpn.us-east-1.amazonaws.com" }

ターゲットネットワークと VPN エンドポイントの関連付け

  • 新しい VPN エンドポイントを選択し、関連付け タブを選択します。

  • 関連付け を選択し、以下のオプションを指定します。

    • [VPC]: メモリーDB クラスターの VPC を選択します。

    • MemoryDB クラスターのネットワークの 1 つを選択します。不確かな場合は、MemoryDB ダッシュボードの [サブネットグループ] でネットワークを確認します。

    • 関連付け を選択します。必要に応じて、残りのネットワークについても同じ手順を繰り返します。

の使用 AWS CLI

次のコマンドを実行します。

aws ec2 associate-client-vpn-target-network --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdefg --subnet-id subnet-0123456789abdcdef

出力例:

"Status": { "Code": "associating" }, "AssociationId": "cvpn-assoc-0123456789abdcdef" }

VPN セキュリティグループの確認

VPN エンドポイントは、VPC のデフォルトのセキュリティグループを自動的に採用します。インバウンドルールとアウトバウンドルールを確認し、セキュリティグループがサービスポート(デフォルトではRedisの6379)でVPNネットワーク(VPNエンドポイント設定で定義)からMemoryDBネットワークへのトラフィックを許可しているかどうかを確認します。

VPN エンドポイントに割り当てられたセキュリティグループを変更する必要がある場合は、次の手順を実行します。

  • 現在のセキュリティグループを選択します。

  • セキュリティグループの適用 を選択します。

  • 新しいセキュリティグループを選択します。

の使用 AWS CLI

次のコマンドを実行します。

aws ec2 apply-security-groups-to-client-vpn-target-network --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdefga  --vpc-id vpc-0123456789abdcdef --security-group-ids sg-0123456789abdcdef

出力例:

"SecurityGroupIds": [ "sg-0123456789abdcdef" ] }

注記

MemoryDBセキュリティグループは、VPNクライアントからのトラフィックも許可する必要がある。クライアントのアドレスは、VPC ネットワークに従って VPN エンドポイントアドレスでマスクされます。したがって、MemoryDBセキュリティグループの受信ルールを作成する際は、VPCネットワーク(VPNクライアントのネットワークではない)を考慮してください。

宛先ネットワークへの VPN アクセスの許可

認証 タブで 受信の承認 を選択し、以下を指定します。

  • アクセスを許可する宛先ネットワーク: 0.0.0.0/0を使用してあらゆるネットワーク(インターネットを含む)へのアクセスを許可するか、MemoryDBのネットワーク/ホストを制限する。

  • アクセスを付与する対象 で、すべてのユーザーにアクセスを許可する を選択します。

  • 認証ルールの追加 を選択します。

の使用 AWS CLI

次のコマンドを実行します。

aws ec2 authorize-client-vpn-ingress --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdefg --target-network-cidr 0.0.0.0/0 --authorize-all-groups

出力例:

{ "Status": { "Code": "authorizing" } }

VPN クライアントからインターネットへのアクセスの許可

VPN 経由でインターネットをブラウズする必要がある場合は、追加のルートを作成する必要があります。ルートテーブル タブを選択し、ルートの作成 を選択します。

  • ルート送信先: 0.0.0.0/0

  • ターゲット VPC サブネット ID: インターネットにアクセスできる、関連付けられたサブネットの 1 つを選択します。

  • ルートの作成 を選択します。

の使用 AWS CLI

次のコマンドを実行します。

aws ec2 create-client-vpn-route --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdefg --destination-cidr-block 0.0.0.0/0 --target-vpc-subnet-id subnet-0123456789abdcdef

出力例:

{ "Status": { "Code": "creating" } }

VPN クライアントの設定

AWS クライアント VPN ダッシュボードで、最近作成した VPN エンドポイントを選択し、クライアント設定のダウンロード を選択します。設定ファイル、easy-rsa/pki/issued/client1.domain.tld.crt ファイル、および easy-rsa/pki/private/client1.domain.tld.key ファイルをコピーします。設定ファイルを編集し、以下のパラメータを変更または追加します。

  • cert: client1.domain.tld.crt ファイルを指すパラメータ cert を使用して新しい行を追加します。ファイルへの完全なパスを使用します。例: cert /home/user/.cert/client1.domain.tld.crt

  • cert: key: client1.domain.tld.key ファイルを指すパラメータ key を使用して新しい行を追加します。ファイルへの完全なパスを使用します。例: key /home/user/.cert/client1.domain.tld.key

コマンド sudo openvpn --config downloaded-client-config.ovpnを使用して VPN 接続を確立します。

アクセスの取り消し

特定のクライアントキーからのアクセスを無効にする必要がある場合は、CA でキーを取り消します。次に、失効リストを AWS クライアント VPN に送信します。

easy-rsa でキーを取り消す方法は次のとおりです。

  • cd easy-rsa

  • ./easyrsa3/easyrsa revoke client1.domain.tld

  • 続行するには、「yes」と入力します。中止するには、その他を入力します。

    Continue with revocation: `yes` ... * `./easyrsa3/easyrsa gen-crl

  • 更新された CRL が作成されます。CRL ファイル: /home/user/easy-rsa/pki/crl.pem

AWS クライアント VPN への失効リストのインポート:

  • で AWS Management Console、サービス を選択し、次に VPC を選択します。

  • クライアント VPN エンドポイント を選択します。

  • クライアント VPN エンドポイントを選択し、アクションクライアント証明書 CRL のインポート の順に選択します。

  • crl.pem ファイルの内容を貼り付けます。

の使用 AWS CLI

次のコマンドを実行します。

aws ec2 import-client-vpn-client-certificate-revocation-list --certificate-revocation-list file://./easy-rsa/pki/crl.pem --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdefg

出力例:

Example output: { "Return": true }