

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# コンテナジョブのセキュリティとベストプラクティス
<a name="containers-security"></a>

## ルートレスランタイム
<a name="containers-security-rootless"></a>

Deadline Cloud Dockerはルートレスモードで実行されます。コンテナアクションは、権限のない `job-user` ID として実行され、ワーカーにルートアクセスを付与しません。マネージドDocker設定では、 `no-new-privileges`設定も有効にし、GPU アクセスに CDI を使用します。

特権コンテナオプション、パスワードレス `sudo`、またはルート所有Dockerソケットへのアクセスを追加しないでください。ワークロードコンテナ内にDockerソケットをマウントしないでください。

## コマンドの構築とエスケープ
<a name="containers-security-command-construction"></a>

argument-vector 転送を優先します。デフォルトのラップ環境は `WrappedAction.Command`と の各値を個別の引数`WrappedAction.Args`として に渡します`docker container exec`。これらの値を 2 回解析するシェルはありません。

raw ラップされた値を などのコマンドに補間しないでください`bash -c "{{WrappedAction.Command}} {{WrappedAction.Args}}"`。コマンドまたは引数のシェルメタ文字は、シェルがそのコマンドを解析する方法を変更できます。

別の言語が解析するテキストに値を埋め込む必要がある場合は、その言語の 表現関数を使用します。


| [パーサー] | 関数 | 使用アイテム | 
| --- | --- | --- | 
| POSIX シェル | repr\_sh | シェル引数とパス。 | 
| Python | repr\_py | Python ソースに埋め込まれた Python リテラル。 | 
| JSON | repr\_json | JSON ドキュメントに埋め込まれた値。 | 
| PowerShell | repr\_pwsh | PowerShell リテラル。 | 
| Windows コマンドスクリプト | repr\_cmd | によって解析された値cmd.exe。 | 

表現関数は、それがターゲットとする言語のみを保護します。たとえば、 はシェル引数ではなく Python リテラル`repr_py`を生成します。アプリケーションが引数ベクトルを既に受け入れている場合、ジョブパラメータをアクション引数として渡します。

ラップフックの `command`または `WrappedAction.*`でのみ参照します`args`。埋め込みファイルは、ラップされたアクション値がスコープに含まれていない `onEnter`や など`onExit`、環境内のすべてのアクションによって共有されます。埋め込みラップスクリプトを静的に保ち、ラップされたアクションを引数として渡します。

## イメージ、アクセス許可、データ
<a name="containers-security-images"></a>
+ 固定イメージバージョンまたはダイジェストを使用して、すべてのセッションが目的のイメージコンテンツを受信できるようにします。
+ ビルド ID にイメージをプッシュするアクセス許可を付与します。キューロールとフリートロールに読み取り専用の Amazon ECR アクセスを許可します。
+  AWS 認証情報、ライセンスシークレット、またはプライベートキーをイメージに保存しないでください。
+ ワークロードに必要な環境変数のみを転送します。デフォルトのキュー環境は、使用ベースのライセンス変数の許可リストを転送し、ホストの AWS 認証情報は転送しません。
+ ワークロードに必要なディレクトリのみをマウントします。変更するアクションがない場合、入力データには読み取り専用マウントを使用します。
+ 現在のセッション用に作成されたコンテナのみを停止します。ワーカーの無関係なコンテナをプルーニングまたは停止しないでください。