Restringir o acesso a parâmetros do Systems Manager usando políticas do IAM - AWS Systems Manager

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Restringir o acesso a parâmetros do Systems Manager usando políticas do IAM

Restrinja o acesso aos parâmetros Systems Manager usando o AWS Identity and Access Management (IAM). Mais especificamente, você cria políticas do IAM que restringem o acesso às seguintes operações de API:

Ao usar IAM políticas do para restringir o acesso a Systems Manager parâmetros do , recomendamos que você crie e use políticas restritivas doIAM . Por exemplo, a seguinte política permite que um usuário chame as operações de API DescribeParameters e GetParameters para um conjunto limitado de recursos. Isso significa que o usuário pode obter informações e usar todos os parâmetros que começam com prod-*.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:DescribeParameters" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:GetParameters" ], "Resource": "arn:aws:ssm:us-east-2:123456789012:parameter/prod-*" } ] }
Importante

Se um usuário tiver acesso a um caminho, o usuário poderá acessar todos os níveis desse caminho. Por exemplo, se um usuário tiver permissão para acessar o caminho /a, ele também poderá acessar /a/b. Mesmo que o acesso de um usuário tenha sido explicitamente negado no IAM para o parâmetro /a/b, ele ainda pode chamar a ação de GetParametersByPath API recursivamente para /a e visualizar /a/b.

Para administradores confiáveis, é possível fornecer acesso a todas as operações de API de parâmetros do Systems Manager usando uma política semelhante ao exemplo a seguir. Esta política fornece ao usuário o acesso total a todos os parâmetros de produção que começam com dbserver-prod-*.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "ssm:PutParameter", "ssm:DeleteParameter", "ssm:GetParameterHistory", "ssm:GetParametersByPath", "ssm:GetParameters", "ssm:GetParameter", "ssm:DeleteParameters" ], "Resource": "arn:aws:ssm:region:account-id:parameter/dbserver-prod-*" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "ssm:DescribeParameters", "Resource": "*" } ] }

Permissões de negação

Cada API é exclusiva e tem operações e permissões distintas que podem ser permitidas ou negadas individualmente. Uma negação explícita em qualquer política substitui a permissão.

nota

A chave padrão do AWS Key Management Service (AWS KMS) tem Decrypt permissão para todas as IAM entidades principais na AWS conta. Se você quiser ter diferentes níveis de acesso a SecureString parâmetros em sua conta, não recomendamos usar a chave padrão.

Se você quiser que todas as operações de API do recuperem valores de parâmetro com o mesmo comportamento, use um padrão como GetParameter* em uma política. O exemplo a seguir mostra como negar GetParameter, GetParameters GetParameterHistory, e GetParametersByPath para todos os parâmetros começando com prod-*.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "ssm:GetParameter*" ], "Resource": "arn:aws:ssm:us-east-2:123456789012:parameter/prod-*" } ] }

O exemplo a seguir mostra como negar alguns comandos e, ao mesmo tempo, permitir que o usuário execute outros comandos em todos os parâmetros que começam com prod-*.

{ "Version": "2012-10-17", "Statement": [ "Effect": "Deny", "Action": [ "ssm:PutParameter", "ssm:DeleteParameter", "ssm:DeleteParameters" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:GetParametersByPath", "ssm:GetParameters", "ssm:GetParameter", "ssm:GetParameterHistory" "ssm:DescribeParameters" ], "Resource": "arn:aws:ssm:region:account-id:parameter/prod-*" } ] }
nota

O histórico de parâmetros inclui todas as versões de parâmetros, incluindo a atual. Portanto, se um usuário tiver permissão negada para GetParameter, e GetParameters, GetParameterByPath mas tiver permissão para GetParameterHistory, ele poderá ver o parâmetro atual, incluindo SecureString parâmetros , usando GetParameterHistory.

Permitir que apenas parâmetros específicos sejam executados em instâncias

Você pode controlar o acesso para que as instâncias só possam executar os parâmetros especificados.

Se você escolher o tipo de SecureString parâmetro ao criar seu parâmetro, o Systems Manager usará o AWS Key Management Service (AWS KMS) para criptografar o valor do parâmetro. O AWS KMS criptografa o valor usando uma chave mestra do cliente (CMK) AWS gerenciada pela ou uma CMK gerenciada pelo cliente. Para obter mais informações sobre AWS KMS o e o CMKs, consulte o AWS Key Management Service Developer Guide.

Você pode visualizar a CMK AWS gerenciada pela executando o seguinte comando na AWS CLI.

aws kms describe-key --key-id alias/aws/ssm

O exemplo a seguir permite que as instâncias obtenham um valor de parâmetro somente para parâmetros que começam com prod-. Se o parâmetro for um SecureString parâmetro , a instância descriptografará a string usando AWS KMS.

nota

As políticas de instâncias, como no exemplo a seguir, são atribuídas à função de instância no IAM. Para obter mais informações sobre como configurar o acesso a recursos do Systems Manager, incluindo como atribuir políticas a usuários e instâncias, consulte Configurar o AWS Systems Manager.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ssm:GetParameters" ], "Resource":[ "arn:aws:ssm:region:account-id:parameter/prod-*" ] }, { "Effect":"Allow", "Action":[ "kms:Decrypt" ], "Resource":[ "arn:aws:kms:region:account-id:key/CMK" ] } ] }

Permissões do IAM para usar chaves padrão da AWS e chaves gerenciadas pelo cliente

Parameter Store SecureString são criptografados e descriptografados usando as chaves do AWS Key Management ServiceAWS KMS Você pode optar por criptografar seus SecureString parâmetros usando uma chave mestra de cliente (CMK) ou a chave KMS padrão fornecida pelo AWS.

Ao usar uma chave gerenciada pelo cliente, a IAM política que concede a um usuário acesso a um parâmetro ou caminho de parâmetro deve fornecer kms:Encrypt permissões explícitas para a chave. Por exemplo, a política a seguir permite que um usuário crie, atualize e visualize SecureString parâmetros que começam com prod- na AWS região e na conta especificadas.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:PutParameter", "ssm:GetParameter", "ssm:GetParameters" ], "Resource": [ "arn:aws:ssm:us-east-2:111122223333:parameter/prod-*" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-12345EXAMPLE" ] } ] }

1A permissão kms:GenerateDataKey é necessária para criar parâmetros avançados criptografados usando a chave específica gerenciada pelo cliente.

Por outro lado, todos os usuários da conta do cliente têm acesso à chave AWS gerenciada padrão do . Se você usar essa chave padrão para criptografar SecureString parâmetros e não quiser que os usuários trabalhem com SecureString parâmetros, suas IAM políticas do deverão negar explicitamente o acesso à chave padrão, conforme demonstrado no exemplo de política a seguir.

nota

Você pode localizar o nome de recurso da Amazon (ARN) da chave padrão no AWS KMS console do na página AWS managed keys (Chaves gerenciadas pela AWS). A chave padrão é aquela identificada com aws/ssm na coluna Alias.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "kms:Decrypt", "kms:GenerateDataKey " ], "Resource": [ "default-key-ARN" ] } ] }

Se você precisar de controle de acesso minucioso sobre os parâmetros SecureString em sua conta, será necessário usar uma CMK gerenciada pelo cliente para proteger e restringir o acesso a esses parâmetros. Também recomendamos o uso do AWS CloudTrail para monitorar atividades de parâmetros SecureString

Para obter mais informações, consulte os tópicos a seguir: