「ルートアクセス」が有効化された SageMaker ノートブックの作成を SCP で制限してみる
どうも、こんにちは kaz です。
はじめに
SageMaker ノートブックインスタンスを作成する際、以下の「ルートアクセス」というオプションがあります。
ちなみにデフォルトでは 有効
になっています。
この「ルートアクセス」が有効になっている場合、ノートブックインスタンスに接続するユーザーにはルートアクセス権が与えられます。
これによってさまざまなライブラリやツールをインストール・テストすることができる反面、ノートブックインスタンス上にあるすべてのファイルにアクセスできます。
検証や開発のためには一時的に有効化することもありますが、組織としてセキュリティ観点から制限をかけたい要望もあるかと思います。
今回はより安全に SageMaker ノートブックインスタンスを利用するために SCP を使った制限方法を紹介します。
前提条件
- AWS Organizations が有効になっており、SCP を利用できること
やってみた
Organizations や SCP の設定方法については割愛しますが、SageMaker ノートブックインスタンスのルートアクセスを制限してみます。
ルートアクセスを制限する SCP は以下の通りです。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenySageMakerNotebookOptionRootAccess",
"Effect": "Deny",
"Action": "sagemaker:CreateNotebookInstance",
"Resource": "*",
"Condition": {
"StringNotEquals": {
"sagemaker:RootAccess": "Disabled"
}
}
}
]
}
これは SageMaker ノートブックインスタンスの 作成時 に RootAccess
が Disabled
(つまり、無効化になっていない場合)でない場合に作成を拒否するものです。
この SCP を対象アカウントや OU に SCP をアタッチしましょう。
ノートブックインスタンス作成後にルートアクセスを有効にできてしまう!?
はい、ここで 1 つ注意事項があります。
上記の SCP は ノートブックインスタンス作成時 にのみ制限をかけるものです。
つまり、ユーザー側で作成後に設定変更から「ルートアクセス」を有効化できてしまいます。
「そもそもなぜこのような制限にしているのか」という理由について説明しておきます。
それは、「どうしてもユーザー側で開発中にルートアクセスが必要になる場合がある」ということです。
重要なのは、そういったセキュリティの意識付けだと思うので "作成時に考えなしに有効化しちゃえば OK!" ということを防止したい意図があります。
そのため、ノートブックインスタンス作成時には制限をかけるが、後から変更できるようにしておくアプローチを取り入れています。
もし、最初からノートブックインスタンスの設定変更も防ぎたい場合は下記の SCP を利用するといいでしょう。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenySageMakerNotebookOptionRootAccess",
"Effect": "Deny",
"Action": [
"sagemaker:CreateNotebookInstance",
"sagemaker:UpdateNotebookInstance"
],
"Resource": "*",
"Condition": {
"StringNotEquals": {
"sagemaker:RootAccess": "Disabled"
}
}
}
]
}
ただ、さきほども述べた通り開発をしていると、どうしてもルートアクセス権が必要な場面もあるので個人的にはここまでの制限は厳しいかなと思います。
そのため、以下の方法で制限をかけられないかを検討するといいかもしれません。
- 作成時・変更時も制限をかけるが、
Condition 句
を活用して管理者にはこれらの制限がかからないようにする(そして、管理者がルートアクセス有効化の実施を行う) - 作成時のみ制限をかけ、予防的統制と Security Hub コントロール SageMaker.3 を併用しながら発見的統制を行う
上記で言うと、私の場合は [2] のアプローチを取っていることになります。
実はライフサイクル設定でルートアクセス権を使ったカスタマイズができるよ!
SageMaker ノートブックインスタンスのルートアクセス権を使ったオプションとして「ライフサイクル設定」があります。
このライフサイクル設定はノートブックインスタンスの 作成時または起動時にのみ実行されるシェルスクリプト を指定できる機能です。
これを使うことで、以下のようなユースケースに役立てることができます。
- ノートブックインスタンスへのパッケージまたはサンプルノートブックをインストールする
- ノートブックインスタンスのネットワークとセキュリティを設定する
- シェルスクリプトを使用してノートブックインスタンスをカスタマイズする
また、ライフサイクル設定は ルートアクセスが無効化されている場合でも常に root ユーザー権限で実行される ため、うまく活用することでセキュリティを向上させることができます。
スクリプトの例については下記ドキュメントが参考になります。
動作確認
SCP をアタッチしたアカウントで SageMaker ノートブックインスタンスを作成してみます。
[ノートブックインスタンス作成時]ルートアクセス: 有効
想定通り、ルートアクセスが有効になっているため、ノートブックインスタンスの作成に 失敗 します。
[ノートブックインスタンス作成時]ルートアクセス: 無効
ルートアクセスが無効になっているため、ノートブックインスタンスの作成に 成功 します。
[ノートブックインスタンス設定変更時]ルートアクセス: 無効 → 有効
最後に、ノートブックインスタンスの設定変更からルートアクセスを有効にできることを確認してみます。
設定変更はノートブックインスタンスの停止が必要になるため、停止後に設定変更を行います。
停止したらルートアクセスを有効にしてみます。
少し反映には時間がかかりますが、無事にルートアクセスが有効になりました。
あとはノートブックインスタンスを起動して開発を進めることができますね!
まとめ
今回は SCP を使って SageMaker ノートブックインスタンスのルートアクセスを制限する方法を紹介しました。
上述の通り厳しく制限しすぎると開発がしにくくなるため、トレードオフを考えながら適切な制限をかけることが重要です。
個人的には予防的統制 + 発見的統制を組み合わせることで、よりセキュアな環境を構築することができると思うのでぜひ活用してみてください!
また、便利なライフサイクル設定の活用もお忘れなく!!
アノテーション株式会社について
アノテーション株式会社 は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。
「らしく働く、らしく生きる」のスローガンを掲げ、さまざまな背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けています。
現在当社では AWS の構築・運用経験があり、以下の業務に携わってくれるメンバーを募集中です。
- AWS 環境の運用設計支援や構築
- 運用監視とインシデント対応
- 定型業務などの自動化
AWS 関連資格をお持ちの方、クラウドネイティブな運用経験者は大歓迎です。
少しでもご興味がありましたら 募集職種 よりご応募ください!!
一緒に働ける日を心待ちにしています!