ワークスペースでの AWS Instance Metadata サービス v2 の適用
サーバーレスコンピュートリソースは自動的にIMDSv2を適用するため、この設定はサーバーレスコンピュートリソースには適用されません。
インスタンスメタデータサービス(IMDS)は、AWSのコンピュートインスタンス上でローカルに実行され、インスタンスメタデータを取得するために使用されるサービスです。セキュリティ上の重要事項として、インスタンスのメタデータには、インスタンスに関連付けられたロールの資格情報も含まれます。「インスタンスメタデータとユーザーデータ」を参照してください。
IMDSに関するセキュリティ上の懸念に対応して、AWSは一般的な攻撃パターンによるリスクを軽減し、リクエストとレスポンスのフローをセッション指向のフローに置き換える IMDSv2(バージョン2)を作成しました。改善の詳細については、こちらのAWSブログ記事を参照してください。
ワークスペース管理者は、管理者設定ページの [ コンピュート ] タブで [AWS インスタンス メタデータ v2 を強制する] を有効にすることで、クラスターでの IMDSv2 の使用を強制できます。Databricks では、IMDSv2 を適用するようにワークスペースを構成することをお勧めします。 ワークスペースが 2022 年 10 月 1 日以降に作成された場合、ワークスペースではこの管理者設定がデフォルトで有効になっています。
必要条件
- IMDSv2 の強制は、分離された AWS Glue カタログの使用をサポートしていません。 分離を無効にするには、「 すべてのクラスターに対して IMDSv2 を移行して適用する方法」を参照してください。
- IMDSv2の施行には、Databricks Runtime Databricks Runtimeリリースノートバージョンと互換性 に記載されているサポートされている バージョンを使用する必要がありますが、Light 2.4延長サポートバージョンはサポートされていません。
IMDSv2を移行してすべてのクラスターに適用する方法
IMDSv2を適用すると、既存のワークロードがインスタンスメタデータのフェッチにIMDSv1を使用している場合、失敗します。
新しい非サーバーレスクラスターにIMDSv2を適用するには、以下の手順を実行します。
-
IMDSv2の適用では、分離されたAWS Glueカタログの使用はサポートされていません。Glueカタログを使用するには、クラスターにSpark confを1行追加し、分離モードを無効にします。
spark.databricks.hive.metastore.glueCatalog.isolation.enabled false
-
IMDSv2を使用するようにコードをアップグレードします。
-
ワークロードが使用する既存のAWS CLIとSDKをアップグレードします。Databricks RuntimeにデフォルトでインストールされるSDKは、Databricksによってすでにアップグレードされていることに注意してください。Databricksでは、安全な移行を実現するためにAWSのアップグレードガイドに従うことをお勧めしています。
ワークスペース内のすべてのノートブックを変更して、IMDSv1を使用している既存の部分を削除し、IMDSv2を使用するように置き換えます。
たとえば、以下はIMDSv1 APIクライアントのコードです。
Bashcurl http://169.254.169.254/latest/meta-data/
この例では、これをIMDSv2 APIクライアントコードに変更します。
BashTOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" \
-H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` && \
\
curl -H "X-aws-ec2-metadata-token: $TOKEN" \
-v http://169.254.169.254/latest/meta-data/詳細なガイダンスと例については、AWSの記事「インスタンスメタデータを取得する」を参照してください。
-
変更したコードをテストして、IMDSv2で正しく動作することを確認します。
-
-
ワークスペースに対するIMDSv2の適用を有効にします。
- ワークスペース管理者として、 設定ページに移動します。
- 「 コンピュート 」タブをクリックします。
- [AWS インスタンス メタデータ v2 の強制 ] をクリックします。
- ページを更新して、設定が有効になったことを確認します。
-
稼働中のクラスターを再起動し、すべてのEC2インスタンスにIMDSv2が適用されていることを確認します。クラスターがフリートインスタンスプールに接続されている場合は、新しいフリートインスタンスプールを作成し、新しいフリートインスタンスプールを使用してクラスターを再作成します。
-
CloudWatchのメトリクス
MetadataNoToken
を監視して、ワークスペースがアクティブなIMDSv1コールを行っていないことを確認します。