sql >> データベース >  >> RDS >> Mysql

ハイブリッドクラウドデータベーストラフィックを暗号化する方法

    安全なデータベース環境を実現するのは困難ですが、データ侵害、ランサムウェア、その他の悪意のある活動を回避するために非常に重要です。データのセキュリティは、ビジネスの観点から最優先事項です。プライベートデータセンターで実行している場合、通常、ネットワークは防御の第1層です。ただし、データベーストポロジの内部部分とアプリケーションがデータセンター全体に分散している分散ハイブリッドデータベースクラウド環境では、ネットワークはより大きな接続対象領域を表します。転送中のデータトラフィックの暗号化は、ネットワークの盗聴から保護するための一般的な手段の1つです。このブログでは、ハイブリッドクラウドのmysqlデータベーストラフィックを暗号化する方法を説明します。

    データベーストラフィックを暗号化する必要があるのはなぜですか?

    主な理由は、データベースインスタンスとクライアントアプリケーション間の接続を暗号化し、許可された通信のみを確保する必要があることです。このセキュリティレイヤーは、不要な機密データの漏洩を防止したり、SQLインジェクション攻撃などの可能性を排除したりできます。転送中のデータは、データベースノード間のレプリケーショントラフィック、またはロードバランサー/プロキシとデータベースインスタンス間のトラフィックを意味する場合もあります。

    MySQLノードでSSLをアクティブ化する

    MySQLの新しいバージョンには、自己署名証明書とSSLが有効になっています。一方、セキュリティの別のレイヤーを追加する場合は、独自の証明書を使用することをお勧めします。ClusterControlではSSL証明書を変更できます。このブログでは、ClusterControlを使用してこれを行う方法を説明しました。

    クライアントでSSLを有効にする

    MySQLは接続ごとに暗号化を実行し、特定のユーザーに対する暗号化の使用はオプションまたは必須にすることができます。 SSLを介してmysqlノードに接続するには、以下のような「REQUIRESSL」構文を使用してユーザーの許可を設定していることを確認してください。

    mysql> create user 'app_user'@'192.168.%.%' identified by '[email protected]' REQUIRE SSL;
    
    Query OK, 0 rows affected (0.00 sec)
    
    
    
    mysql> grant all on *.* to 'app_user'@'192.168.%.%';
    
    Query OK, 0 rows affected (0.00 sec)

    これにより、個々のアプリケーションの要件に応じて、暗号化された接続または暗号化されていない接続を選択できます。

    クライアントが暗号化された接続を使用する必要があることを確認するには、my.cnfファイルで「require_secure_transport」パラメータを有効にする必要があります。デフォルトでは、このパラメータはオフです。

    DB接続の確認

    デフォルトでは、サーバーが暗号化された接続をサポートしている場合、mysqlクライアントは暗号化された接続を確立しようとします。たとえば、-ssl-modeオプションを使用してさらに制御できます。

    [[email protected] vagrant]# mysql -u app_user -p -h 192.168.xx.xx -P3306 --ssl=1 -e "status;" | grep -i SSL
    SSL: Cipher in use is ECDHE-RSA-AES256-GCM-SHA384

    SSLプロトコルは、さまざまな暗号化アルゴリズムを使用して、パブリックネットワークとプライベートネットワークを介してデータを確実に受信します。データの変更や損失を検出するメカニズムがあります。

    [[email protected] vagrant]# mysql -u app_user -p -h 192.168.xx.xx -P3306 --ssl=1 
    Welcome to the MariaDB monitor.  Commands end with ; or \g.
    Your MySQL connection id is 12656
    Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    MySQL [(none)]> SHOW SESSION STATUS LIKE 'Ssl_cipher';
    +---------------+-----------------------------+
    | Variable_name | Value                       |
    +---------------+-----------------------------+
    | Ssl_cipher    | ECDHE-RSA-AES256-GCM-SHA384 |
    +---------------+-----------------------------+
    1 row in set (0.00 sec)
    
    MySQL [(none)]> show  status like 'Ssl_version';
    +---------------+---------+
    | Variable_name | Value   |
    +---------------+---------+
    | Ssl_version   | TLSv1.2 |
    +---------------+---------+
    1 row in set (0.00 sec)
    結論

    データベース接続の暗号化は大したことではなく、大したことではありません。一部の新しいバージョンのMySQLではデフォルトで暗号化されています。データベースのセキュリティがますますビジネスおよび規制上の懸念事項になるにつれて、ハイブリッドクラウド環境を保護するための転送中のデータ暗号化だけでなく、考慮すべきことがたくさんあります。ネットワークやオペレーティングシステムのセキュリティなど、データベースをホストする場合は、他のセキュリティ層が適用されることに注意してください。


    1. Mysqlの行サイズの変更制限が大きすぎます

    2. Postgresは手動でシーケンスを変更します

    3. Oracleの既存のテーブルに自動インクリメントの主キーを追加します

    4. AmazonRDSマスターユーザーパスワードをリセットする方法