Skip to content

Commit bae88c4

Browse files
committed
Add privileged flag for internal / dev use
Some usages of agent will require the agent container to have permissions elevated beyond cap NET_ADMIN. This can now be accessed by modifying the following environment variable and invoking ecs-init: ` export ECS_AGENT_RUN_PRIVILEGED=true ` This is not recommended for general use and may be removed in future versions of ecs-init.
1 parent c5e1cce commit bae88c4

File tree

12 files changed

+50
-10
lines changed

12 files changed

+50
-10
lines changed

ecs-init/cache/dependencies_mocks.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ecs-init/config/common.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,13 @@ func InstanceConfigFile() string {
228228
return InstanceConfigDirectory() + "/ecs.config"
229229
}
230230

231+
// RunPrivileged returns if agent should be invoked with '--privileged'. This is not
232+
// recommended and may be removed in future versions of amazon-ecs-init.
233+
func RunPrivileged() bool {
234+
envVar := os.Getenv("ECS_AGENT_RUN_PRIVILEGED")
235+
return envVar == "true"
236+
}
237+
231238
func agentArtifactName(version string, arch string) (string, error) {
232239
var interpose string
233240
switch arch {

ecs-init/config/common_test.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,3 +177,30 @@ func TestAgentRemoteTarballKey(t *testing.T) {
177177
})
178178
}
179179
}
180+
181+
func TestAgentPrivileged(t *testing.T) {
182+
os.Setenv("ECS_AGENT_RUN_PRIVILEGED", "true")
183+
defer os.Unsetenv("ECS_AGENT_RUN_PRIVILEGED")
184+
185+
if !RunPrivileged() {
186+
t.Fatalf("Agent was expected to be running with privileged mode")
187+
}
188+
}
189+
190+
func TestAgentPrivilegedNotConfigured(t *testing.T) {
191+
defer os.Unsetenv("ECS_AGENT_RUN_PRIVILEGED")
192+
cases := []string{
193+
"false",
194+
"unrelated_word",
195+
"1",
196+
"",
197+
}
198+
199+
for _, test := range cases {
200+
os.Setenv("ECS_AGENT_RUN_PRIVILEGED", test)
201+
202+
if RunPrivileged() {
203+
t.Errorf("Agent was expected to be running without privileged mode. Testcase (%s)", test)
204+
}
205+
}
206+
}

ecs-init/docker/backoff_mocks.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ecs-init/docker/dependencies_mocks.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ecs-init/docker/docker_unspecified.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,18 @@ func createHostConfig(binds []string) *godocker.HostConfig {
4444

4545
logConfig := config.AgentDockerLogDriverConfiguration()
4646

47-
return &godocker.HostConfig{
47+
hostConfig := &godocker.HostConfig{
4848
LogConfig: logConfig,
4949
Binds: binds,
5050
NetworkMode: networkMode,
5151
UsernsMode: usernsMode,
5252
CapAdd: []string{CapNetAdmin, CapSysAdmin},
5353
Init: true,
5454
}
55+
56+
if config.RunPrivileged() {
57+
hostConfig.Privileged = true
58+
}
59+
60+
return hostConfig
5561
}

ecs-init/engine/dependencies_mocks.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ecs-init/exec/iptables/cmd_mocks.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ecs-init/exec/iptables/exec_mocks.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ecs-init/exec/sysctl/cmd_mocks.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)