HDInsight クラスターで Azure ストレージ アカウント アクセス キーを更新する
この記事では、Azure HDInsight でプライマリまたはセカンダリ ストレージ アカウントの Azure ストレージ アカウント アクセス キーをローテーションする方法について説明します。
注意事項
ストレージ側でアクセス キーを直接ローテーションすると、HDInsight クラスターにアクセスできなくなります。
前提条件
プロセス全体で HDInsight クラスターに確実にアクセスできるように、ストレージ アカウントのプライマリおよびセカンダリ アクセス キーを交互にずらしてローテーションするアプローチを使用します。
プライマリおよびセカンダリ ストレージ アクセス キーを使用し、それらに対してローテーション ポリシーを設定する方法の例を次に示します。
- HDInsight クラスターの作成時に、ストレージ アカウントでアクセス キー 1 を使用します。
- N 日ごとにアクセス キー 2 のローテーション ポリシーを設定します。 このローテーションの一環として、アクセス キー 1 を使用するように HDInsight を更新してから、ストレージ アカウントでアクセス キー 2 をローテーションします。
- N/2 日ごとにアクセス キー 1 のローテーション ポリシーを設定します。 このローテーションの一環として、アクセス キー 2 を使用するように HDInsight を更新してから、ストレージ アカウントでアクセス キー 1 をローテーションします。
- アプローチでは、アクセス キー 1 は N/2、3N/2 日などの間隔でローテーションされ、アクセス キー 2 は N、2N、3N 日などの間隔でローテーションされます。
ストレージ アカウント キーの定期的なローテーションを設定するには、シークレットのローテーションの自動化に関するページを参照してください。
ストレージ アカウント アクセス キーを更新する
スクリプト アクションを使用し、次の点を考慮して変更を適用します。
プロパティ | 値 |
---|---|
Bash スクリプト URI | https://hdiconfigactions.blob.core.windows.net/linuxaddstorageaccountv01/update-storage-account-v01.sh |
ノードの種類 | Head |
パラメーター | ACCOUNTNAME ACCOUNTKEY -p (省略可) |
ACCOUNTNAME
は HDInsight クラスター上のストレージ アカウントの名前です。ACCOUNTKEY
はACCOUNTNAME
のアクセス キーです。-p
はオプションです。 指定した場合、キーは暗号化されず、プレーンテキストとして core-site.xml ファイルに格納されます。
既知の問題
前のスクリプトでは、クラスター側でのみアクセス キーが直接更新され、HDInsight リソース プロバイダー側のコピーは更新されません。 そのため、ストレージ アカウントでホストされているスクリプト アクションは、アクセス キーがローテーションされた後に失敗します。
対処法:
同じリージョン内の別のストレージ アカウントを使用/作成します。
実行するスクリプトをこのストレージ アカウントにアップロードします。
読み取りアクセス権を持つスクリプトの SAS URI を作成しました。
クラスターが独自の仮想ネットワーク内にある場合は、仮想ネットワークでストレージ アカウント ファイル/スクリプトへのアクセスが許可されていることを確認します。
この SAS URI を使って、スクリプト アクションを実行します。