View a markdown version of this page

Usando permissões gerenciadas parametrizadas em AWS RAM - AWS Resource Access 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á.

Usando permissões gerenciadas parametrizadas em AWS RAM

Uma permissão gerenciada parametrizada é uma permissão gerenciada com espaços reservados em suas condições de política que você preenche com seus próprios valores. Esses espaços reservados são parâmetros do modelo. Eles não criam um novo tipo de permissão gerenciada. Eles adicionam variabilidade ao modelo de política de um modelo existente.

Em vez de criar uma permissão gerenciada pelo cliente separada para cada valor exclusivo da condição, você cria uma permissão gerenciada pelo cliente com parâmetros. Ao associá-lo a um compartilhamento de recursos, você fornece um valor para cada parâmetro. AWS RAM substitui seus valores no modelo de política e anexa a política baseada em recursos resultante aos recursos compartilhados.

Por exemplo, uma equipe de plataforma central cria uma permissão gerenciada pelo cliente para AWS Systems Manager Parâmetros de armazenamento de parâmetros (tipo de recurso) ssm:Parameter). Ele concede acesso de leitura somente aos diretores com uma aprovação team etiqueta. A equipe da plataforma compartilha essa permissão gerenciada pelo cliente com as contas de sua organização. Em seguida, cada conta o usa em seus próprios compartilhamentos de recursos, que podem conter um ou mais parâmetros do Parameter Store. Em cada compartilhamento de recursos, a conta fornece o team valores de tag dos principais que podem ler os parâmetros compartilhados do Parameter Store.

Tipos de parâmetros do modelo

AWS RAM suporta dois tipos de parâmetros. O tipo determina como AWS RAM substitui o valor na política renderizada. Na AWS RAM API e o AWS CLI, os tipos são STRING e STRING_LIST. O AWS RAM o console os mostra como Corda e StringList.

STRING

Aceita exatamente um valor de string.

  • Você pode usar um STRING parâmetro em uma chave de condição ou em um valor de condição.

  • Você pode incorporar um STRING parâmetro em outro texto. Por exemplo, ."arn:aws:iam::@{accountId}:role/Auditor"

  • O valor renderizado é sempre uma string. Como os operadores de condição do IAM convertem cadeias de caracteres no tipo que eles comparam, um STRING o parâmetro pode fornecer valores numéricos, booleanos, de data, endereço IP ou ARN.

STRING_LIST

Aceita de 1 a 100 valores de string.

  • Você pode usar um STRING_LIST parâmetro somente em um valor de condição, não em uma chave de condição.

  • Se o valor da condição for uma única string que contenha somente o parâmetro, por exemplo "@{teams}", AWS RAM renderiza uma matriz dos valores que você fornece. Se você fornecer um único valor, AWS RAM renderiza uma única string.

  • Se o valor da condição tiver texto antes ou depois do parâmetro, por exemplo "arn:aws:iam::@{accountIds}:role/ParameterReader", AWS RAM combina cada valor com esse texto.

  • Para combinar cada valor com mais de uma string, liste as strings em uma matriz de valores de condição. AWS RAM renderiza cada entrada de matriz para cada valor e remove resultados duplicados. O resultado é sempre uma matriz.

  • AWS RAM e o IAM não divide uma string em vírgulas. Uma string separada por vírgula é comparada como um valor.

Para obter exemplos, consulte LISTA_DE_SEQUÊNCIA exemplos de parâmetros.

Regras de sintaxe do modelo de política

Quando você adiciona parâmetros ao modelo de política de uma permissão gerenciada, as regras a seguir se aplicam. Se uma solicitação violar uma dessas regras, AWS RAM rejeita com um InvalidParameterException ou InvalidPolicyException erro.

  • Um espaço reservado para parâmetros usa a sintaxe @{parameterName}.

  • Os nomes dos parâmetros podem conter letras (a-z, A-Z), números (0-9), dois pontos (:), hífens (-) e sublinhados (_). Os nomes devem ser exclusivos em uma versão de permissão gerenciada, e a comparação ignora maiúsculas e minúsculas.

  • Você deve declarar cada parâmetro ao criar a permissão ou a versão da permissão. Cada declaração exige um nome, um tipo e uma descrição. A descrição pode ter até 255 caracteres.

  • Cada parâmetro declarado deve aparecer no modelo de política.

  • Os espaços reservados correspondem exatamente aos nomes declarados, incluindo maiúsculas e minúsculas. Texto no @{...} o formato que não corresponde exatamente a um nome declarado permanece na política como texto literal. Por exemplo, se você declarar teams mas escreva @{Teams}, AWS RAM guloseimas @{Teams} como texto e rejeita a solicitação porque teams não é usado.

  • Os parâmetros podem aparecer somente na Condition elemento, como chave de condição ou como valor de condição. AWS RAM rejeita parâmetros no Effect, Action, ou qualquer outro elemento.

  • Uma chave de condição pode conter no máximo um parâmetro e deve ser um STRING parâmetro. Um valor de condição pode conter mais de um parâmetro, por exemplo "@{project}-@{stage}". Quando um valor de condição combina STRING_LIST parâmetros, AWS RAM renderiza cada combinação de seus valores, até 100 strings para cada valor de condição.

  • Você pode declarar até 100 parâmetros para cada versão de permissão gerenciada.

  • Os parâmetros não têm valores padrão. Ao associar a permissão a um compartilhamento de recursos, você deve fornecer um valor não vazio para cada parâmetro declarado e não pode fornecer um nome que não esteja declarado ou fornecer o mesmo nome duas vezes.

Crie uma permissão gerenciada parametrizada

Você cria uma permissão gerenciada parametrizada da mesma forma que cria qualquer outra permissão gerenciada pelo cliente. A diferença é que você declara parâmetros e usa @{parameterName} espaços reservados nas condições do modelo de política.

Console
Para criar uma permissão gerenciada parametrizada
  1. Abra o Biblioteca de permissões gerenciadas e escolha Criar permissão gerenciada pelo cliente.

  2. Abaixo Detalhes da permissão gerenciada pelo cliente, insira um nome e escolha o tipo de recurso.

  3. Abaixo Modelo de política, insira a política. Uso @{parameterName} espaços reservados nas condições em que você deseja que cada compartilhamento de recursos forneça seu próprio valor.

  4. Abaixo Parâmetros do modelo, escolha Adicionar parâmetros da política para adicionar uma linha para cada espaço reservado na política ou escolher Adicionar parâmetro para adicionar uma linha por vez. Para cada parâmetro, insira o Nome do parâmetro, escolha o Tipo (Corda ou StringList) e insira um Descrição. A descrição é mostrada para qualquer pessoa que forneça um valor para o parâmetro.

  5. (Opcional) Adicione tags.

  6. Escolha Criar permissão gerenciada pelo cliente.

AWS CLI
Para criar uma permissão gerenciada parametrizada
  • Execute o permissão de criação comando com o --policy-template e --permission-template-parameters parâmetros.

    O exemplo a seguir cria uma permissão gerenciada pelo cliente para o ssm:Parameter tipo de recurso. Nesta política, os diretores podem ler parâmetros somente se o principal tiver um team tag cujo valor está no teams lista.

    $ aws ram create-permission \ --name ParameterReadByTeam \ --resource-type ssm:Parameter \ --permission-template-parameters '[{"name":"teams","type":"STRING_LIST","description":"Values of the team principal tag that can read the shared parameters"}]' \ --policy-template '{"Effect":"Allow","Action":["ssm:GetParameter","ssm:GetParameters"],"Condition":{"StringEquals":{"aws:PrincipalTag/team":"@{teams}"}}}' { "permission": { "arn": "arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam", "version": "1", "defaultVersion": true, "name": "ParameterReadByTeam", "resourceType": "ssm:Parameter", "status": "ATTACHABLE", "creationTime": 1763300000.000, "lastUpdatedTime": 1763300000.000, "permissionTemplateParameters": [ { "name": "teams", "type": "STRING_LIST", "description": "Values of the team principal tag that can read the shared parameters" } ] } }

Controle de versão de uma permissão gerenciada parametrizada

As permissões gerenciadas parametrizadas são versionadas da mesma forma que qualquer outra permissão gerenciada pelo cliente. Cada versão declara seus parâmetros de forma independente, portanto, uma nova versão pode declarar um conjunto de parâmetros diferente da versão anterior.

Para criar uma nova versão, execute o versão de permissão de criação comando com o --policy-template e --permission-template-parameters parâmetros. O exemplo a seguir adiciona uma segunda condição com um STRING parâmetro chamado environment.

$ aws ram create-permission-version \ --permission-arn arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam \ --permission-template-parameters '[{"name":"teams","type":"STRING_LIST","description":"Values of the team principal tag that can read the shared parameters"},{"name":"environment","type":"STRING","description":"Value of the environment principal tag that can read the shared parameters"}]' \ --policy-template '{"Effect":"Allow","Action":["ssm:GetParameter","ssm:GetParameters"],"Condition":{"StringEquals":{"aws:PrincipalTag/team":"@{teams}","aws:PrincipalTag/environment":"@{environment}"}}}'

Uma nova versão se torna a versão padrão assim que você a cria. Os compartilhamentos de recursos existentes mantêm a versão que eles usam. Quando o proprietário de um compartilhamento de recursos o atualiza para a nova versão, ele deve fornecer valores para os parâmetros que a nova versão declara. Para obter mais informações, consulte Atualização AWS permissões gerenciadas para uma versão mais recente.

Para obter mais informações sobre como as versões de permissão gerenciada pelo cliente e as versões padrão funcionam, consulte Criação e uso de permissões gerenciadas pelo cliente no AWS RAM.

Visualize um modelo de política renderizado

Antes de associar uma permissão gerenciada parametrizada a um compartilhamento de recursos, você pode visualizar a política que AWS RAM renderiza a partir de valores de parâmetros específicos.

Na AWS RAM console, ao criar ou atualizar um compartilhamento de recursos, insira os valores em Valores dos parâmetros do modelo e escolha Pré-visualização da política renderizada.

Na AWS CLI, execute o obter permissão comando com o --permission-template-parameters parâmetro. O permission O campo da resposta contém a política com seus valores no lugar dos espaços reservados.

$ aws ram get-permission \ --permission-arn arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam \ --permission-template-parameters '[{"name":"teams","values":["payments","analytics"]},{"name":"environment","values":["prod"]}]' { "permission": { "arn": "arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam", "version": "2", "defaultVersion": true, "name": "ParameterReadByTeam", "resourceType": "ssm:Parameter", "permission": "{\"Effect\":\"Allow\",\"Action\":[\"ssm:GetParameter\",\"ssm:GetParameters\"],\"Condition\":{\"StringEquals\":{\"aws:PrincipalTag/team\":[\"payments\",\"analytics\"],\"aws:PrincipalTag/environment\":\"prod\"}}}", "creationTime": 1763400000.000, "lastUpdatedTime": 1763400000.000, "isResourceTypeDefault": false, "permissionType": "CUSTOMER_MANAGED", "featureSet": "STANDARD", "status": "ATTACHABLE", "permissionTemplateParameters": [ { "name": "teams", "type": "STRING_LIST", "description": "Values of the team principal tag that can read the shared parameters" }, { "name": "environment", "type": "STRING", "description": "Value of the environment principal tag that can read the shared parameters" } ] } }

Sem o --permission-template-parameters parâmetro, o get-permission o comando retorna o modelo de política com o @{parameterName} espaços reservados. O permissionTemplateParameters O campo lista o nome, o tipo e a descrição de cada parâmetro declarado.

Associar uma permissão gerenciada parametrizada a um compartilhamento de recursos

Ao associar uma permissão gerenciada parametrizada a um compartilhamento de recursos, você deve fornecer valores para todos os parâmetros declarados pela versão. AWS RAM renderiza o modelo de política com seus valores e anexa a política baseada em recursos resultante aos recursos compartilhados desse tipo.

Console
Para associar uma permissão gerenciada parametrizada a um compartilhamento de recursos
  1. Quando você cria ou atualiza um compartilhamento de recursos, na Associar permissões gerenciadas na página, escolha a permissão gerenciada parametrizada para o tipo de recurso.

  2. Abaixo Valores dos parâmetros do modelo, insira um valor para cada parâmetro. Para um StringList parâmetro, pressione Enter após cada valor ou cole valores separados por novas linhas.

  3. (Opcional) Escolha Pré-visualização da política renderizada para verificar a política que AWS RAM será anexado.

  4. Complete o resto do mago. A página de revisão lista os valores em Valores dos parâmetros do modelo.

AWS CLI
Para associar uma permissão gerenciada parametrizada a um compartilhamento de recursos
  1. Corra criar compartilhamento de recursos ou associar permissão de compartilhamento de recursos com o --permission-template-parameters parâmetro.

    Para create-resource-share, o parâmetro é uma lista. Cada entrada contém um permissionArn e o permissionTemplateParameters valores para essa permissão. O exemplo a seguir cria um compartilhamento de recursos que compartilha um parâmetro de armazenamento de parâmetros com outro Conta da AWS. Diretores com o team marcar payments ou analytics e o environment marcar prod posso lê-lo.

    $ aws ram create-resource-share \ --name PaymentsConfig \ --resource-arns arn:aws:ssm:us-east-1:123456789012:parameter/payments/endpoint \ --principals 111122223333 \ --permission-arns arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam \ --permission-template-parameters '[{"permissionArn":"arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam","permissionTemplateParameters":[{"name":"teams","values":["payments","analytics"]},{"name":"environment","values":["prod"]}]}]' { "resourceShare": { "resourceShareArn": "arn:aws:ram:us-east-1:123456789012:resource-share/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "name": "PaymentsConfig", "owningAccountId": "123456789012", "allowExternalPrincipals": true, "status": "ACTIVE", "creationTime": 1763300000.000, "lastUpdatedTime": 1763300000.000, "featureSet": "STANDARD" } }

    create-resource-share sempre usa a versão padrão de cada permissão gerenciada. Você pode associar somente a versão padrão de uma permissão gerenciada a um compartilhamento de recursos.

  2. Para alterar os valores dos parâmetros em um compartilhamento de recursos existente ou movê-lo para a versão padrão da permissão, execute associar permissão de compartilhamento de recursos com o --replace parâmetro. Para esse comando, --permission-template-parameters pega os valores dos parâmetros diretamente.

    $ aws ram associate-resource-share-permission \ --resource-share-arn arn:aws:ram:us-east-1:123456789012:resource-share/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --permission-arn arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam \ --permission-template-parameters '[{"name":"teams","values":["payments"]},{"name":"environment","values":["prod"]}]' \ --replace { "returnValue": true }

Para mover vários compartilhamentos de recursos de uma versão ou permissão para outra, execute substituir associações de permissão. Se a versão de destino declarar parâmetros, inclua --permission-template-parameters. AWS RAM aplica os mesmos valores a cada compartilhamento de recursos que o comando atualiza.

Exibir parâmetros e valores do modelo

Você pode visualizar os parâmetros que uma permissão gerenciada declara e os valores que seus compartilhamentos de recursos fornecem.

Exibir os parâmetros que uma permissão gerenciada declara

Execute o obter permissão comando. O permissionTemplateParameters campo lista o nome, o tipo e a descrição de cada parâmetro. No console, a página de detalhes da permissão mostra as mesmas informações.

Exibir os valores que um compartilhamento de recursos fornece

Execute o liste permissões de compartilhamento de recursos comando. Para cada permissão gerenciada parametrizada associada, a permissionTemplateParameters O campo inclui os valores que o compartilhamento de recursos fornece.

$ aws ram list-resource-share-permissions \ --resource-share-arn arn:aws:ram:us-east-1:123456789012:resource-share/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 { "permissions": [ { "arn": "arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam", "version": "2", "defaultVersion": true, "name": "ParameterReadByTeam", "resourceType": "ssm:Parameter", "status": "ATTACHABLE", "creationTime": 1763400000.000, "lastUpdatedTime": 1763400000.000, "isResourceTypeDefault": false, "permissionType": "CUSTOMER_MANAGED", "featureSet": "STANDARD", "permissionTemplateParameters": [ { "name": "teams", "values": ["payments"] }, { "name": "environment", "values": ["prod"] } ] } ] }

O associações de permissão de lista O comando também retorna os valores dos compartilhamentos de recursos que você possui. Quando você lista os compartilhamentos de recursos em outros Contas da AWS que usam uma permissão gerenciada pelo cliente que você compartilhou, a resposta não inclui seus valores.

Compartilhamento de permissões gerenciadas parametrizadas entre contas

Você pode compartilhar uma permissão gerenciada parametrizada com outros Contas da AWS como qualquer outra permissão gerenciada pelo cliente. As contas receptoras podem ver o nome, o tipo e a descrição de cada parâmetro, portanto, escreva descrições que digam qual valor fornecer. Cada conta receptora fornece seus próprios valores ao associar a permissão gerenciada compartilhada a seus próprios compartilhamentos de recursos.

Para obter instruções sobre como compartilhar permissões gerenciadas pelo cliente, consulte Compartilhamento e uso de permissões gerenciadas pelo cliente em todas as contas no AWS RAM.

Controle os valores dos parâmetros do modelo com políticas do IAM

Você pode usar o ram:PermissionTemplateParameter/parameter-name chave de condição em uma política do IAM para controlar quais valores um principal pode fornecer para um parâmetro. A chave tem vários valores e contém os valores na solicitação do parâmetro nomeado. Ele está disponível no recurso de permissão do ram:CreateResourceShare, ram:AssociateResourceSharePermission, e ram:ReplacePermissionAssociations ações.

No exemplo de política a seguir, a primeira declaração concede as ações no ParameterReadByTeam permissão gerenciada pelo cliente. A segunda declaração os nega se algum valor for fornecido para teams é algo diferente de payments ou analytics. Como a chave tem vários valores, a política usa a ForAnyValue operador de conjunto. AWS RAM exige um valor para cada parâmetro declarado, portanto, uma solicitação que usa essa permissão gerenciada pelo cliente sempre inclui a chave.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ram:CreateResourceShare", "ram:AssociateResourceSharePermission", "ram:ReplacePermissionAssociations" ], "Resource": "arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam" }, { "Effect": "Deny", "Action": [ "ram:CreateResourceShare", "ram:AssociateResourceSharePermission", "ram:ReplacePermissionAssociations" ], "Resource": "arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam", "Condition": { "ForAnyValue:StringNotEquals": { "ram:PermissionTemplateParameter/teams": [ "payments", "analytics" ] } } } ] }

Essas declarações controlam somente o recurso de permissão. O diretor também precisa de permissão para os outros recursos na solicitação, como o compartilhamento de recursos e os recursos que ele compartilha. Para obter mais exemplos, consulte Exemplo de políticas de IAM para AWS RAM.

LISTA_DE_SEQUÊNCIA exemplos de parâmetros

Os exemplos a seguir mostram como AWS RAM renderiza STRING_LIST parâmetros.

exemplo UM LISTA_DE_SEQUÊNCIA parâmetro sozinho em um valor de condição

Modelo:

"Condition": { "StringEquals": { "aws:PrincipalTag/team": "@{teams}" } }

Valores: ["payments", "analytics"]

Política renderizada:

"Condition": { "StringEquals": { "aws:PrincipalTag/team": ["payments", "analytics"] } }

Com o valor único ["payments"], o valor renderizado é a string "payments".

exemplo UM LISTA_DE_SEQUÊNCIA parâmetro com texto ao redor

AWS RAM combina cada valor com o texto antes e depois do parâmetro.

Modelo:

"Condition": { "ArnLike": { "aws:PrincipalArn": "arn:aws:iam::@{accountIds}:role/ParameterReader" } }

Valores: ["111122223333", "444455556666"]

Política renderizada:

"Condition": { "ArnLike": { "aws:PrincipalArn": [ "arn:aws:iam::111122223333:role/ParameterReader", "arn:aws:iam::444455556666:role/ParameterReader" ] } }
exemplo UM LISTA_DE_SEQUÊNCIA parâmetro em uma matriz de valores de condição

AWS RAM renderiza cada entrada na matriz para cada valor e remove resultados duplicados.

Modelo:

"Condition": { "ArnLike": { "aws:PrincipalArn": [ "arn:aws:iam::@{accountIds}:role/Auditor", "arn:aws:iam::@{accountIds}:role/Reader" ] } }

Valores: ["111122223333", "444455556666"]

Política renderizada:

"Condition": { "ArnLike": { "aws:PrincipalArn": [ "arn:aws:iam::111122223333:role/Auditor", "arn:aws:iam::444455556666:role/Auditor", "arn:aws:iam::111122223333:role/Reader", "arn:aws:iam::444455556666:role/Reader" ] } }