Security Context を設定して、Pod またはコンテナーの権限とアクセスの制御をカスタマイズできます。
背景情報
Security Context は、Elastic Container Instance (ECI) またはコンテナーの権限とアクセスの制御設定を定義します。Security Context 設定の例としては、任意アクセス制御 (DAC)、Security Enhanced Linux (SELinux)、Linux Capabilities などがあります。詳細については、「Pod またはコンテナーの Security Context を設定する」をご参照ください。
以下のレベルで Security Context を設定できます:
Pod の Security Context
ECI では、Pod レベル (インスタンスレベル) の Security Context を設定することで、sysctl パラメーターを変更できます。これらの設定は、インスタンス内のすべてのコンテナーとボリュームに適用されます。
コンテナーの Security Context
ECI では、コンテナーレベルの Security Context を設定することで、runAsUser および capabilities パラメーターを変更できます。これらの設定は、指定されたコンテナーにのみ適用されます。
インスタンスの Security Context を設定する
機能の説明
Linux システムでは、sysctl インターフェイスを使用して、ランタイムカーネルパラメーターを変更できます。次のコマンドを実行すると、Elastic Container Instance (ECI) のカーネルパラメーターを表示できます。詳細については、「sysctl.sh」をご参照ください。
sysctl -aPod の Security Context を設定することで、sysctl および runAsUser パラメーターを変更できます。
オペレーティングシステムが不安定になるのを避けるため、続行する前に sysctl パラメーターの変更による影響を十分に理解する必要があります。詳細については、「sysctl」をご参照ください。
Elastic Container Instance (ECI) では、次の sysctl パラメーターを変更できます:
kernel.shm*
kernel.msg*
kernel.sem
fs.mqueue.*
net.* (net.ipv4.tcp_syncookies を除く)
vm.min_free_kbytes
vm.min_free_kbytes には、合計メモリサイズの 20% 以下の値を指定することを推奨します。
設定の説明
CreateContainerGroup 操作を呼び出して ECI インスタンスを作成する際に、SecurityContext.Sysctl または HostSecurityContext.Sysctl パラメーターを使用してインスタンスの Security Context を設定できます。SecurityContext.Sysctl は安全な sysctl パラメーターの変更に使用され、HostSecurityContext.Sysctl は安全でない sysctl パラメーターの変更に使用されます。次の表に、これらのパラメーターを示します。詳細については、「CreateContainerGroup」をご参照ください。
名前 | タイプ | 例 | 説明 |
SecurityContext.Sysctl.N.Name | 文字列 | net.ipv4.ping_group_range | Security Context を設定して sysctl を変更する場合の、安全な sysctl の名前。有効値:
|
SecurityContext.Sysctl.N.Value | 文字列 | 1 | Security Context を設定して sysctl を変更する場合の、安全な sysctl の値。 |
HostSecurityContext.Sysctl.N.Name | 文字列 | kernel.msgmax | Security Context を設定して sysctl を変更する場合の、安全でない sysctl の名前。有効値:
|
HostSecurityContext.Sysctl.N.Value | 文字列 | 65536 | Security Context を設定して sysctl を変更する場合の、安全でない sysctl の値。 |
コンテナーの Security Context を設定する
機能の説明
コンテナーレベルでは、特定のコンテナーに対して Security Context を設定できます。次の表に、ECI がサポートするパラメーターを示します。
パラメーター | 説明 |
runAsUser | コンテナーを実行するユーザーの ID。パラメーター設定は、Dockerfile の USER コマンドをオーバーライドします。 |
runAsGroup | コンテナーを実行するユーザーグループ。 |
runAsNonRoot | ユーザーがコンテナーを非ルートユーザーとして実行するかどうかを指定します。有効値: true または false。デフォルト値: false。 |
privileged | コンテナーを特権モードで実行するかどうかを指定します。値が true の場合、コンテナーは特権モードで実行されます。デフォルト値: false。 説明 特権コンテナー機能は内部プレビュー段階です。この機能を使用するには、チケットを送信してください。 |
capabilities | コンテナー内のプロセスに付与される権限。詳細については、「Linux capabilities」をご参照ください。 以下の権限を設定できます:
説明 プロセスに SYS_RAWIO 権限を付与することはできません。SYS_RAWIO を使用するには、チケットを送信してください。 |
次の表に、サポートされていないパラメーターと、それらのパラメーターのデフォルト値を示します。
サポートされていないパラメーター | 説明 |
AllowedProcMountTypes | コンテナーで許可される proc マウントタイプ。デフォルト値: DefaultProcMount。 |
readOnlyRootFilesystem | コンテナーが実行されるルートファイルシステムが読み取り専用かどうかを指定します。デフォルト値: true。 |
設定の説明
CreateContainerGroup API 操作を呼び出して Elastic Container Instance (ECI) を作成する際に、Container.N.SecurityContext 関連のパラメーターを使用してコンテナーの Security Context を設定できます。次の表に、関連するパラメーターを示します。詳細については、「CreateContainerGroup」をご参照ください。
名前 | タイプ | 例 | 説明 |
Container.N.SecurityContext.Capability.Add.N | 配列 | NET_ADMIN | コンテナー内のプロセスに付与される権限。 |
Container.N.SecurityContext.ReadOnlyRootFilesystem | boolean | true | コンテナーが実行されるルートファイルシステムが読み取り専用かどうかを指定します。値を true に設定します。 |
Container.N.SecurityContext.RunAsUser | long | 1000 | コンテナーを実行するユーザーの ID。 |
Container.N.SecurityContextRunAsGroup | long | 3000 | コンテナーを実行するユーザーグループ。 |
Container.N.SecurityContextRunAsNonRoot | boolean | true | コンテナーを非ルートユーザーとして実行するかどうかを指定します。デフォルト値: false。有効値:
|
Container.N.SecurityContextPrivileged | boolean | true | コンテナーの特権モードを有効にするかどうかを指定します。つまり、コンテナーを特権モードで実行するかどうかです。デフォルト値: false。有効値:
説明 特権コンテナー機能は内部プレビュー段階です。この機能を使用するには、チケットを送信してください。 |
init コンテナーの Security Context を設定することもできます。パラメーターは前の表のパラメーターと似ていますが、SecurityContextRunAsGroup と SecurityContextRunAsNonRoot はサポートされていません。