ChefとPuppet用PAM360プラグイン
ChefはRubyベースの構成管理ツールであり、インフラストラクチャをコードとして定義する方法(IAC)を提供します。これにより、手動プロセスを使用するのではなく、コードを記述することでインフラストラクチャの管理が簡素化されます。Chefはクライアント/サーバーアーキテクチャを使用して動作します。Chef向けに開発されたPAM360ルックアッププラグインは、組織のDevOpsパイプラインにおけるパスワード管理のセキュリティと利便性を向上させるのに役立ちます。Chefにインポートされると、PAM360プラグインがChefのCookbookランタイム中にPAM360 Vaultから直接、認証情報とアカウント情報を取り込むため、ハードコードの認証情報を使う必要がなくなります。認証情報は、安全に取り込みが完了すると、リモートホストへの接続等の操作に使用できます。PAM360に保存されている認証情報は保管庫内で定期的にローテーションされ、それぞれのリモート装置でも更新されるため、Chefプラグインの呼び出し時に最新のパスワードまたはキーのみが保管庫から取り込まれるようになります。
Puppetは、Chefと同様、Rubyベースの構成管理ツールです。Puppetはクライアント/サーバーアーキテクチャを採用しており、マスターとスレーブはSSLを利用した安全な暗号化チャネルを介して通信します。Puppetは主にサーバーのデプロイ、設定、管理に使用されます。Chefと同様、PAM360ルックアッププラグインは、呼び出されたとき、PAM360のVaultから直接パスワードを取り込むことができます。
ChefとPuppetの詳細については、それぞれのリンクをクリックしてください。
この文書を読み終える頃には、以下のトピックについて理解しているはずです。
1.Chef 用の PAM360 プラグインの設定
以下は、PAM360でChefに秘密の認証情報をセットアップおよび管理する手順です。
1.1 PAM360でChef統合を有効化
- PAM360にログインし、[管理] >> [DevSecOps] >> [DevOps]に移動します。
- Chefオプションをクリックします。
- CI/CDプラットフォーム連携ウィンドウで、生成をクリックすると、認証トークンが自動的に生成されます。これは、Chef
Cookbookでプラグインを呼び出し中、後で必要になります。セットアップが完了すると、Chefからのすべての受信接続は、この認証トークンを使用して PAM360によって検証されます。
- アクティブPAM360ユーザーのユーザー名を入力します。PAM360は、このユーザーアカウントに認証トークンをマップし、PAM360の保管庫から必要なパスワードを取り込むのに使用します。PAM360がこのユーザーに認証トークンをマップしたら、このユーザーが所有/共有したリソースにこの認証トークンを使ってアクセスすることもできます。
- [有効にする]をクリックします。
メモ:
入力したPAM360ユーザーアカウントに、このワークフローに必要な最小限の権限(すなわち、Chefが接続する必要があるリソースのパスワードを表示/取得する権限)があることを確認してください。このユーザーが所有し共有しているリソースのパスワードは、ChefがPAM360 でアクセスできる唯一の認証情報です。
1.2 ChefでのPAM360プラグインの呼び出し
以下の手順を実行して、PAM360のRuby GemをChef クックブックにインポートしてください。
- 認証情報を使用してPAM360クラスオブジェクトを初期化します。
ここで、syntax:gemData = PAM360Gem.new("Hostname","Auth token",Path,port number) - PAM360プラグインを呼び出すためにChef クックブックに適用するメソッドは以下のとおりです。
この方法で、アカウントパスワードを文字列として取り込みます。gemData.getAccountPassword("resource name","account name")この方法は、リソースとアカウント詳細をJSON形式で戻します。gemData.getAccountDetails("resource name","account name")
2.Puppet 用の PAM360 プラグインの設定
以下は、PAM360でPuppetに秘密の認証情報をセットアップおよび管理する手順です。
2.1 PAM360でPuppet統合を有効化
- PAM360にログインし、[管理] >> [DevSecOps] >> [CI/CDプラットフォーム連携]に移動します。
- Puppetオプションをクリックします。
- CI/CDプラットフォーム連携ウィンドウで、生成をクリックすると、認証トークンが自動的に生成されます。これは、Puppetでプラグインを呼び出し中、後で必要になります。セットアップが完了すると、Puppetからのすべての受信接続は、この認証トークンを使用して
PAM360 によって検証されます。
- アクティブPAM360ユーザーのユーザー名を入力します。PAM360は、このユーザーアカウントに認証トークンをマップし、PAM360の保管庫から必要なパスワードを取り込むのに使用します。PAM360がこのユーザーに認証トークンをマップしたら、このユーザーが所有/共有したリソースにこの認証トークンを使ってアクセスすることもできます。
- [有効にする]をクリックします。
メモ:
入力したPAM360ユーザーアカウントに、このワークフローに必要な最小限の権限(すなわち、Puppetが接続する必要があるリソースのパスワードを表示/取得する権限)があることを確認してください。このユーザーが所有し共有しているリソースのパスワードは、PuppetがPAM360 でアクセスできる唯一の認証情報です。
2.2 PuppetでのPAM360プラグインの呼び出し
以下の手順を実行して、PAM360のRuby GemをPuppetにインポートします。
- 認証情報を使用してPAM360クラスオブジェクトを初期化します。
ここで、syntax:gemData = PAM360Gem.new("Hostname","Auth token",Path,port number) - PAM360プラグインを呼び出すには、Puppetに対して以下のメソッドを適用する必要があります。
この方法で、アカウントパスワードを文字列として取り込みます。getAccountPassword(resourceName,AccountName)
この方法は、リソースとアカウント詳細をJSON形式で戻します。getAccountDetails(resourceName,AccountName)
3.サンプルコード
3.1 PAM360プラグインを使用したリソースとアカウントの詳細の取得
以下は、PAM360プラグインを使ってアカウント詳細を取り込む、サンプル入出力コードと、その対応するサンプルレスポンスです。サンプルコードは、ChefとPuppetの両方で同じです。
サンプル入力
gem 'PAM360_Gem' require 'PAM360_Gem' gemData = PAM360Gem.new("localhost","060CCDB8-71A0-4B8B-AC57-XXXXX","/home/local/user/servercertificate") # resourcename = Windows accountname = useraccount1 puts("resourcedetails\n") result = gemData.getAccountDetails("Windows ","useraccount1")) puts(result[0]) puts("accountdetails\n") puts(result[1])
サンプル出力
resource details {"RESOURCE_ID":1,"RESOURCE_NAME":"Windows","RESOURCE_DESCRIPTION":"","OPERATINGSYSTEM":"Windows","DNSNAME":"","DEPARTMENT":"","LOCATION":"","RESOURCE_URL":""} account details {"ACCOUNTNAME":"useraccount1","PASSWORD":"Test@123"}
3.2 PAM360プラグインを使用したパスワードの取得
以下は、PAM360プラグインを使ってパスワードを取り込む、サンプル入出力コードと、その対応するサンプルレスポンスです。サンプルコードは、ChefとPuppetの両方で同じです。
サンプル入力
gem 'PAM360_Gem' require 'PAM360_Gem' gemData = PAM360Gem.new("localhost","060CCDB8-71A0-4B8B-AC57-XXXXX","/home/local/user/servercertificate") # resourcename = Windows accountname = useraccount1 puts("accountpassword\n") puts(gemData.getAccountPassword("Windows ","useraccount1"
サンプル出力
accountpassword Test@123
