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