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

Restringir o acesso a parâmetros do Parameter Store usando políticas do IAM

Restrinja o acesso aos parâmetros AWS 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 políticas do IAM para restringir o acesso a parâmetros do Systems Manager, recomendamos a criação e o uso de políticas restritivas do IAM. 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 um caminho /a, ele também pode acessar /a/b. Mesmo se o acesso de um usuário tiver sido explicitamente negado no IAM para o parâmetro /a/b, ele ainda poderá chamar a operação de API GetParametersByPath 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": [ { "Effect": "Allow", "Action": [ "ssm:PutParameter", "ssm:DeleteParameter", "ssm:GetParameterHistory", "ssm:GetParametersByPath", "ssm:GetParameters", "ssm:GetParameter", "ssm:DeleteParameters" ], "Resource": "arn:aws:ssm:us-east-2:123456789012:parameter/dbserver-prod-*" }, { "Effect": "Allow", "Action": "ssm:DescribeParameters", "Resource": "*" } ] }

Negar permissões

Cada API é exclusiva e tem operações e permissões distintas que você pode permitir ou negar individualmente. Uma negação explícita em qualquer política substitui a permissão.

nota

O valorAWS Key Management Service(AWS KMS) temDecryptpermissão para todos os principais do IAM dentro doConta da AWS. Se você quiser ter níveis de acesso diferentes aoSecureStringNa conta, não recomendamos que você use a chave padrão.

Se você quiser que todas as operações de API que recuperam valores de parâmetro tenham o mesmo comportamento, então você pode usar um padrão comoGetParameter*em uma política. O exemplo a seguir mostra como negarGetParameter,GetParameters,GetParameterHistory, eGetParametersByPathpara todos os parâmetros que começam comprod-*.

{ "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 enquanto permite que o usuário execute outros comandos em todos os parâmetros que começam comprod-*.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "ssm:PutParameter", "ssm:DeleteParameter", "ssm:DeleteParameters", "ssm:DescribeParameters" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:GetParametersByPath", "ssm:GetParameters", "ssm:GetParameter", "ssm:GetParameterHistory" ], "Resource": "arn:aws:ssm:us-east-2:123456789012: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 paraGetParameter,GetParameters, eGetParameterByPathmas é permitido permissão paraGetParameterHistory, eles podem ver o parâmetro atual, incluindoSecureStringParâmetros, usandoGetParameterHistory.

Permitir que apenas parâmetros específicos sejam executados em nós

Você pode controlar o acesso para que os nós gerenciados só possam executar os parâmetros especificados.

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

Você pode visualizar a Chave gerenciada pela AWS executando o comando a seguir na AWS CLI.

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

O exemplo a seguir permite que os nós obtenham um valor de parâmetro somente para parâmetros que começam com prod-. Se o parâmetro for um parâmetro SecureString, o nó descriptografará a string usando o 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 Gerenciar instâncias do EC2 com o Systems Manager.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameters" ], "Resource": [ "arn:aws:ssm:us-east-2:123456789012:parameter/prod-*" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-east-2:123456789012:key/4914ec06-e888-4ea5-a371-5b88eEXAMPLE" ] } ] }

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

Os parâmetros Parameter Store SecureString são criptografados e descriptografados usando as chaves do AWS KMS. É possível optar por criptografar os parâmetros SecureString usando uma AWS KMS key ou a chave KMS padrão fornecida pela AWS.

Ao usar uma chave gerenciada pelo cliente, a política do IAM que concede a um usuário acesso a um parâmetro ou um caminho de parâmetro deve fornecer permissões kms:Encrypt explícitas para a chave. Por exemplo, a política a seguir permite que um usuário crie, atualize e visualize parâmetros SecureString que começam com prod- na Região da AWS e Conta da AWS 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" Footnote callout 1 to explain a line in a JSON policy ], "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 padrão gerenciada da AWS. Se você usar essa chave padrão para criptografar parâmetros SecureString e não quiser que os usuários trabalhem com parâmetros SecureString, suas políticas do IAM devem negar explicitamente o acesso à chave padrão, conforme demonstrado no exemplo de política a seguir.

nota

É possível localizar o nome do recurso da Amazon (ARN) da chave padrão no console do AWS KMS na página AWS managed keys (chaves gerenciadas). 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": [ "arn:aws:kms:us-east-2:111122223333:key/abcd1234-ab12-cd34-ef56-abcdeEXAMPLE" ] } ] }

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.