この記事では、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 を使って、スクリプト アクションを実行します。