背景情報
Cloud Assistant スクリプトを作成し、1 つ以上の Elastic Compute Service (ECS) インスタンスでスクリプトを実行する場合、パスワードが必要です。スクリプトをプレーンテキストで記述すると、パスワードが漏洩する可能性があります。Key Management Service (KMS) を使用してパスワードを暗号化する場合、スクリプトで暗号化された値を維持する必要があります。
この問題を解決するために、CloudOps Orchestration Service (OOS) はよりシンプルなソリューションを提供します。パラメーターストア で暗号化パラメーターを作成してパスワードを維持し、Cloud Assistant スクリプトで暗号化パラメーターを使用できます。このソリューションには、次の利点があります。
暗号化パラメーターでパスワードを維持することによって、パスワードの漏洩を防ぐことができます。
スクリプトでプレーンテキストパスワードまたは暗号化されたパスワード値を維持する必要はありません。スクリプトで参照される暗号化パラメーターの名前を指定するだけで済みます。
パスワードが変更された場合、Cloud Assistant スクリプトまたは OOS テンプレートを変更することなく、対応する暗号化パラメーターのみを更新できます。
前提条件
スクリプトを実行する ECS インスタンスに Alibaba Cloud CLI がインストールされていること。ECS インスタンスにインストールされている Alibaba Cloud CLI が OOS の GetSecretParameter 操作をサポートしていない場合は、Alibaba Cloud CLI を最新バージョンにアップグレードしてください。詳細については、「Linux」をご参照ください。
ECS インスタンスに jq プロセッサがインストールされていること。こちらをクリックして jq をダウンロードします。
必要な Resource Access Management (RAM) ロールが ECS インスタンスにアタッチされていること。RAM ロールには、OOS の GetSecretParameter 操作と KMS の GetSecretValue 操作を呼び出す権限が付与されている必要があります。
手順
手順 1: 暗号化パラメーターを作成する
パラメータストア の OOS コンソールで、または Alibaba Cloud CLI を使用して、暗号化パラメータを作成できます。
OOS コンソールのパラメーターストアで暗号化パラメーターを作成する
暗号化パラメーターを作成するには、次の手順を実行します。
OOS コンソールにログインします。左側のナビゲーションウィンドウで、[パラメーターストア] をクリックします。[パラメーターストア] ページで、[暗号化パラメーター] タブをクリックします。暗号化パラメーターを管理するKMSキー ID付録 1:KMS キーを作成する
タブで、 をクリックします。詳細については、「暗号化パラメーターを管理する」をご参照ください。カスタムキーを使用する場合は、 ドロップダウンリストからカスタマーマスターキー (CMK) の ID を選択します。KMS キーの作成方法の詳細については、このトピックの「付録 1: KMS キーを作成する」セクションを参照してください。
Alibaba Cloud CLI を使用して暗号化パラメーターを作成する
次のサンプルスクリプトは例を示しています。
aliyun oos CreateSecretParameter --Name mysql-password --Description "データベースパスワードの暗号化パラメーター" -- Value "SecretMySQLPassword" -- RegionId cn-hangzhou
手順 2: Cloud Assistant スクリプトで暗号化パラメーターを使用する
RunCommand 操作で、Alibaba Cloud CLI と jq を使用して、スクリプトから暗号化パラメーターの値を取得します。
Linux に Alibaba Cloud CLI をインストールする。ECS インスタンスにインストールされている Alibaba Cloud CLI が OOS の GetSecretParameter 操作をサポートしていない場合は、Alibaba Cloud CLI を最新バージョンにアップグレードしてください。
jq をインストールします。
ECS インスタンスにインストールされた Alibaba Cloud CLI 上で RAM ロールとしてスクリプトを実行することをお勧めします。 ECS インスタンスの RAM ロールの構成方法の詳細については、このトピックの付録 2 をご参照ください。
暗号化パラメーターの値を使用して、スクリプトで他の操作を実行します。
重要暗号化データの漏洩を防ぐために、スクリプトに暗号化パラメーターの値を表示するコードを記述しないでください。
次のサンプルスクリプトを使用します。
# パラメーターストアから暗号化パラメーターの mysql-password の値を取得し、db_password 変数に格納します。
db_password=`aliyun oos GetSecretParameter --Name mysql-password --WithDecryption true --mode EcsRamRole --ram-role-name secret-parameter-instance-role --region cn-hangzhou |jq .Parameter.Value -r`
# db_password 変数を使用して後続の操作を実行します。たとえば、本番データベースを作成できます。
mysql -u$db_user -p$db_password -e "create database database;"
OOS の[バッチインスタンス操作] 機能を使用して、上記のスクリプトを実行します。
付録 1: KMS キーを作成する
付録 2: RAM ロールを作成し、ECS インスタンスにアタッチする
RAM コンソール にログインします。
左側のナビゲーションウィンドウで、[権限] > 権限ポリシーポリシーの作成 を選択します。 ページで、 をクリックします。
[ポリシーの作成] ページで、[JSON] タブをクリックします。ポリシーエディターに次のサンプルコードを入力して、最小限の権限を付与するポリシーを作成し、[OK] をクリックします。
{ "Version": "1", "Statement": [ { "Action": [ "kms:GetSecretValue" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "oos:GetSecretParameter" ], "Effect": "Allow", "Resource": "*" } ] }
ポリシーが作成された後、左側のナビゲーションウィンドウで [ID] > [ロール] を選択します。[ロール] ページで、[ロールの作成] をクリックします。[RAM ロールの作成] ページで、信頼できるエンティティとして Alibaba Cloud サービスを選択し、[次へ] をクリックします。
ロール名を入力し、信頼できるサービスとして [Elastic Compute Service] を選択します。
RAM ロールが作成されたら、RAM ロールに権限を追加する をクリックします。
[ポリシーの選択] セクションで、[カスタムポリシー] をクリックします。手順 3 で作成したポリシーを選択し、カスタム ポリシー をクリックします。
1 つ以上の ECS インスタンスに RAM ロールをアタッチします。
ECS インスタンスに RAM ロールを割り当てるには、ECS コンソールにログインし、ECS インスタンスを見つけ、[アクション] 列で [その他] > [インスタンス設定] > [RAM ロールの割り当て/割り当て解除] を選択します。[RAM ロールの割り当て/割り当て解除] ダイアログボックスで、[アクション] に [割り当て] を選択し、手順 6 で作成した RAM ロールを選択して、[OK] をクリックします。
複数の ECS インスタンスに RAM ロールをアタッチするには、ACS-ECS-BulkyAttachInstanceRamRole テンプレート で RAM ロールと ECS インスタンスを指定します。