Cassandra 認証を有効にする

デフォルトでは、Cassandra は認証が有効になっていない状態でインストールされます。つまり、誰でも Cassandra にアクセスできます。認証は、Edge のインストール後、またはインストール プロセスの一部として有効にできます。

ロールを追加、削除、変更するには、Cassandra の CREATE/ALTER/DROP ROLES ステートメントを使用します。詳しくは以下をご覧ください。

一般的な考慮事項

  • Cassandra 認証を有効にすると、デフォルトのスーパー ユーザー cassandra(パスワード cassandra)が Cassandra によって自動的に作成されます。これは広く知られているスーパー ユーザーであり、本番環境のニーズには使用しないでください。また、このスーパー ユーザーを介して認証するには、クォーラムの一貫性が必要です。そのため、このユーザーを介して認証を行う Cassandra へのすべての接続で、より厳密な整合性が必要となり、パフォーマンスが低下し、フォールト トレラント性が低下します。
  • 一般的なワークフローでは、構成ファイルでカスタムのユーザー名とパスワードを渡しながら、Cassandra で認証を有効にします。これにより、ニーズに合わせて安全に使用できるカスタム ユーザーとパスワードが作成されます。このようなユーザーを介した認証には、クォーラム整合性に関する制限はありません。
  • カスタム ユーザーが作成されていても、Cassandra はデフォルトの cassandra スーパー ユーザーを作成し、Cassandra クラスタはスーパー ユーザーを介してアクセスできることに注意してください。通常、Apigee 全体で Cassandra 認証が正常に有効になったら、ALTER ROLE コマンドを使用して、この cassandra ユーザーのパスワードをデフォルトの cassandra 以外のものに変更する必要があります。このパスワードは後で参照できるように記録しておいてください。
  • edge-* コンポーネントが認証に使用しているロールのパスワードは変更しないでください。変更すると、サービスが直ちに中断されます。代わりに、新規ユーザーを作成し、新規ユーザーを使用するように edge-* コンポーネントを変更します。完了したら、DROP ROLE コマンドを使用して古いユーザーを削除します。
  • Cassandra 認証に edge-* コンポーネントで使用されるロールを変更する手順は次のとおりです。
    1. 認証を有効にするの手順に沿って、新しいユーザーを作成します。クラスタで認証がすでに有効になっていて、cassandra ユーザーのパスワードを変更した場合は、CASS_EXISTING_USERNAME と CASS_EXISTING_PASSWORD を介して既存のユーザーのユーザー名とパスワードの組み合わせを渡す必要があります。
    2. 完了したら、cqlsh を使用して、古いユーザーと新しいユーザーの両方で Cassandra に接続できることを確認します。
    3. Cassandra に接続する Edge コンポーネントを更新するの手順に沿って、新しく作成したユーザーを使用して Cassandra に接続するようにすべての edge-* コンポーネントを設定します。
    4. 最後に、すべてのコンポーネントが新しいユーザーを使用して Cassandra と通信している場合は、DROP ROLE コマンドを使用して古いユーザーを削除できます。デフォルトの cassandra ロールは削除しないでください。edge-* コンポーネントが Cassandra との通信に使用していないカスタム作成ロールは削除できます。
  • Edge コンポーネントのインストールまたはアップグレードに使用する構成ファイルで、Cassandra の機能的なユーザー名とパスワードを更新してください。これにより、エッジ オペレーション中の中断を解消または最小限に抑えることができます。

インストール時に Cassandra 認証を有効にする

Cassandra 認証はインストール時に有効にできます。

インストール時に Cassandra 認証を有効にするには、すべての Cassandra ノードの構成ファイルに CASS_AUTH プロパティを含めます。

CASS_AUTH=y # The default value is n.

次の Edge コンポーネントが Cassandra にアクセスします。

  • 管理サーバー
  • Message Processor
  • ルーター
  • Qpid サーバー
  • Postgres サーバー

これらのコンポーネントをインストールするときに、構成ファイルでユーザー名とパスワードを設定する必要があります。

CASS_USERNAME=cassandra_username
CASS_PASSWORD=cassandra_password

Cassandra の認証情報は、Cassandra のインストール後に変更できます。ただし、管理サーバー、Message Processor、ルーター、Qpid サーバー、Postgres サーバーをすでにインストールしている場合は、新しい認証情報を使用するために、これらのコンポーネントも更新する必要があります。

Cassandra のインストール後に Cassandra の認証情報を変更するには:

  1. cqlsh ツールとデフォルトの認証情報を使用して、任意の Cassandra ノードにログインします。1 つのノードでパスワードを変更するだけで、リング内のすべての Cassandra ノードにブロードキャストされます。
    /opt/apigee/apigee-cassandra/bin/cqlsh cassIP 9042 -u cassandra_username -p cassandra_password

    ここで

    1. cassIP は Cassandra ノードの IP アドレスです。
    2. 9042 はデフォルトの Cassandra ポートです。
  2. cqlsh> プロンプトで次のコマンドを実行して、パスワードを更新します。
    ALTER ROLE <username> WITH PASSWORD='';
  3. 次の例のように、cqlsh ツールを終了します。
    exit
  4. Management Server、Message Processor、Router、Qpid サーバー、Postgres サーバーをまだインストールしていない場合は、構成ファイルで次のプロパティを設定してから、これらのコンポーネントをインストールします。
    CASS_USERNAME=cassandra_username
    CASS_PASSWORD=new_cassandra_password
  5. 管理サーバー、メッセージ プロセッサ、ルーター、Qpid サーバー、Postgres サーバーをすでにインストールしている場合は、Edge パスワードのリセットで、新しいパスワードを使用するようにこれらのコンポーネントを更新する手順を確認してください。

インストール後に Cassandra 認証を有効にする

インストール後に認証を有効にするには:

  • Cassandra に接続するすべての Edge コンポーネントを Cassandra のユーザー名とパスワードで更新します。
  • すべての Cassandra ノードで 認証を有効にし、いずれかのノードで Cassandra のユーザー名とパスワードを設定します。1 つの Cassandra ノードで認証情報を変更するだけで、リング内のすべての Cassandra ノードにブロードキャストされます。

Cassandra に接続する Edge コンポーネントを更新する

次の手順に沿って、Cassandra と通信するすべての Edge コンポーネントを新しい認証情報で更新します。この手順は、Cassandra 認証情報を実際に更新する前に行います。

  1. Management Server ノードで、次のコマンドを実行します。
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server
      store_cassandra_credentials -u cassandra_username -p cassandra_password

    必要に応じて、新しいユーザー名とパスワードを含むファイルをコマンドに渡すことができます。

    apigee-service edge-management-server store_cassandra_credentials  -f configFile

    ここで、configFile には次のものが含まれます。

    CASS_USERNAME=cassandra_username # Default is cassandra
    CASS_PASSWORD='cassandra_password' # Default is cassandra; wrap in single quotes if it includes special chars

    このコマンドは、管理サーバーを自動的に再起動します。

  2. 次の各サービスについて、ステップ 1 を繰り返します。
    • すべての Message Processor
    • すべてのルーター
    • すべての Qpid サーバー(edge-qpid-server)
    • Postgres サーバー(edge-postgres-server)

    サービスごとにステップ 1 を繰り返す場合は、上記のコマンドの edge-management-server を適切なサービス名に置き換えます。たとえば、Router サービスのステップを実行する場合は、次のコマンドを使用します。

    /opt/apigee/apigee-service/bin/apigee-service edge-router
      store_cassandra_credentials -u cassandra -p cassandra

認証を有効にする

Cassandra 認証を有効にしてユーザー名とパスワードを設定する手順は次のとおりです。

  1. 次の内容のサイレント構成ファイルを作成します。
    # Specify IP address or DNS name of cassandra node
    IP1=192.168.1.1
    IP2=192.168.1.2
    IP3=192.168.1.3
    # Must resolve to IP address or DNS name of host
    HOSTIP=$(hostname -i)
    # Set to ‘y’ to enable Cassandra authentication.
    CASS_AUTH=y # Possible values are ‘y/n’
    # Cassandra username. If it does not exist, this user would be created as a SUPERUSER
    CASS_USERNAME=cassandra_username # Default value is cassandra - don't use for production
    # Cassandra Password. If CASS_USERNAME does not exist, create SUPERUSER with this as password
    CASS_PASSWORD=cassandra_password # Default value is cassandra - don't use for production
    # Space-separated IP/DNS names of the Cassandra hosts
    CASS_HOSTS="$IP1:1,1 $IP2:1,1 $IP3:1,1"
    
    # Username of an existing C* user. Only needed if you have disabled or changed details of the default cassandra user(‘cassandra’)
    CASS_EXISTING_USERNAME=existing_cassandra_username
    # Password of an existing C* user. Only needed if you have disabled or change password of the default cassandra user(‘cassandra’)
    CASS_EXISTING_PASSWORD=existing_cassandra_password
    # Cassandra port
    CASS_PORT=9042 # The default port is 9042.
  2. 最初の Cassandra ノードにログインして、次のコマンドを実行します。

    apigee-service apigee-cassandra enable_cassandra_authentication -f CONFIG

    必要に応じて、次の例に示すように、プロパティをコマンド引数としてスクリプトに渡すことができます。

    CASS_AUTH=y HOSTIP=$(hostname -i) CASS_PORT=9042 CASS_EXISTING_USERNAME=existing_cassandra_username CASS_EXISTING_PASSWORD=existing_cassandra_password CASS_USERNAME=cassandra_username CASS_PASSWORD=cassandra_password  CASS_HOSTS="192.168.1.1:1,1 192.168.1.2:1,1 192.168.1.3:1,1" apigee-service apigee-cassandra enable_cassandra_authentication

    注:

    • デフォルトの Cassandra 認証情報の場合、上記のコマンドにより Cassandra 認証が有効になり、Cassandra が再起動されます。
    • デフォルト以外の認証情報の場合、このコマンドはレプリケーション係数を変更し、スーパーユーザーを作成して、system_auth keyspace で修復を実行します。
  3. すべての Cassandra ノードで手順 1 と 2 を繰り返します。