DynamoDB - controle de acesso
O DynamoDB usa as credenciais fornecidas por você para autenticar solicitações. Essas credenciais são necessárias e devem incluir permissões para acesso a recursos da AWS. Essas permissões abrangem virtualmente todos os aspectos do DynamoDB até os recursos menores de uma operação ou funcionalidade.
Tipos de permissões
Nesta seção, discutiremos sobre as várias permissões e acesso a recursos no DynamoDB.
Autenticação de usuários
Na inscrição, você forneceu uma senha e um e-mail, que servem como credenciais de root. O DynamoDB associa esses dados à sua conta AWS e os usa para fornecer acesso completo a todos os recursos.
A AWS recomenda que você use suas credenciais de raiz apenas para a criação de uma conta de administração. Isso permite que você crie contas / usuários IAM com menos privilégios. Os usuários IAM são outras contas geradas com o serviço IAM. Suas permissões / privilégios de acesso incluem acesso a páginas seguras e certas permissões personalizadas, como modificação de tabelas.
As chaves de acesso fornecem outra opção para contas e acesso adicionais. Use-os para conceder acesso e também para evitar a concessão manual de acesso em determinadas situações. Os usuários federados fornecem outra opção, permitindo o acesso por meio de um provedor de identidade.
Administração
Os recursos da AWS permanecem sob a propriedade de uma conta. As políticas de permissões regem as permissões concedidas para gerar ou acessar recursos. Os administradores associam políticas de permissões com identidades IAM, ou seja, funções, grupos, usuários e serviços. Eles também anexam permissões aos recursos.
As permissões especificam usuários, recursos e ações. Observe que os administradores são apenas contas com privilégios de administrador.
Operação e Recursos
As tabelas continuam sendo os principais recursos do DynamoDB. Os sub-recursos servem como recursos adicionais, por exemplo, fluxos e índices. Esses recursos usam nomes exclusivos, alguns dos quais são mencionados na tabela a seguir -
Tipo | ARN (nome do recurso Amazon) |
---|---|
Corrente | arn: aws: dynamodb: region: account-id: table / table-name / stream / stream-label |
Índice | arn: aws: dynamodb: region: account-id: table / table-name / index / index-name |
Mesa | arn: aws: dynamodb: region: account-id: table / table-name |
Propriedade
Um proprietário de recurso é definido como uma conta AWS que gerou o recurso, ou conta da entidade principal responsável por solicitar autenticação na criação de recursos. Considere como isso funciona dentro do ambiente DynamoDB -
Ao usar credenciais de root para criar uma tabela, sua conta continua sendo a proprietária do recurso.
Ao criar um usuário IAM e conceder a ele permissão para criar uma tabela, sua conta continua sendo a proprietária do recurso.
Ao criar um usuário IAM e conceder ao usuário, e a qualquer pessoa capaz de assumir a função, permissão para criar uma tabela, sua conta continua sendo a proprietária do recurso.
Gerenciar acesso a recursos
O gerenciamento de acesso requer principalmente atenção a uma política de permissões que descreve o acesso de usuários e recursos. Você associa políticas a identidades ou recursos do IAM. No entanto, o DynamoDB só oferece suporte a IAM / políticas de identidade.
As políticas baseadas em identidade (IAM) permitem que você conceda privilégios das seguintes maneiras -
- Anexe permissões a usuários ou grupos.
- Anexe permissões a funções para permissões entre contas.
Outros AWS permitem políticas baseadas em recursos. Essas políticas permitem acesso a coisas como um depósito S3.
Elementos de Política
As políticas definem ações, efeitos, recursos e princípios; e conceder permissão para realizar essas operações.
Note - As operações da API podem exigir permissões para várias ações.
Dê uma olhada nos seguintes elementos de política -
Resource - Um ARN identifica isso.
Action - Palavras-chave identificam essas operações de recursos e se devem ser permitidas ou negadas.
Effect - Especifica o efeito de uma solicitação do usuário para uma ação, o que significa permitir ou negar com negação como padrão.
Principal - Isso identifica o usuário vinculado à política.
Condições
Ao conceder permissões, você pode especificar as condições para quando as políticas se tornam ativas, como em uma data específica. Condições expressas com chaves de condição, que incluem chaves do sistema AWS e chaves do DynamoDB. Essas chaves são discutidas em detalhes posteriormente no tutorial.
Permissões do console
Um usuário requer certas permissões básicas para usar o console. Eles também exigem permissões para o console em outros serviços padrão -
- CloudWatch
- Pipeline de dados
- Gerenciamento de identidade e acesso
- Serviço de Notificação
- Lambda
Se a política do IAM for muito limitada, o usuário não poderá usar o console de maneira eficaz. Além disso, você não precisa se preocupar com as permissões de usuário para aqueles que estão chamando apenas a CLI ou API.
Políticas de uso comum do Iam
AWS cobre operações comuns em permissões com políticas gerenciadas IAM autônomas. Eles fornecem permissões importantes, permitindo que você evite investigações profundas sobre o que você deve conceder.
Alguns deles são os seguintes -
AmazonDynamoDBReadOnlyAccess - Dá acesso somente leitura por meio do console.
AmazonDynamoDBFullAccess - Dá acesso total via console.
AmazonDynamoDBFullAccesswithDataPipeline - Dá acesso total via console e permite exportação / importação com Data Pipeline.
Claro, você também pode fazer políticas personalizadas.
Concessão de privilégios: usando o shell
Você pode conceder permissões com o shell Javascript. O programa a seguir mostra uma política de permissões típica -
{
"Version": "2016-05-22",
"Statement": [
{
"Sid": "DescribeQueryScanToolsTable",
"Effect": "Deny",
"Action": [
"dynamodb:DescribeTable",
"dynamodb:Query",
"dynamodb:Scan"
],
"Resource": "arn:aws:dynamodb:us-west-2:account-id:table/Tools"
}
]
}
Você pode revisar os três exemplos que são os seguintes -
Block the user from executing any table action.
{
"Version": "2016-05-23",
"Statement": [
{
"Sid": "AllAPIActionsOnTools",
"Effect": "Deny",
"Action": "dynamodb:*",
"Resource": "arn:aws:dynamodb:us-west-2:155556789012:table/Tools"
}
]
}
Block access to a table and its indices.
{
"Version": "2016-05-23",
"Statement": [
{
"Sid": "AccessAllIndexesOnTools",
"Effect": "Deny",
"Action": [
"dynamodb:*"
],
"Resource": [
"arn:aws:dynamodb:us-west-2:155556789012:table/Tools",
"arn:aws:dynamodb:us-west-2:155556789012:table/Tools/index/*"
]
}
]
}
Block a user from making a reserved capacity offering purchase.
{
"Version": "2016-05-23",
"Statement": [
{
"Sid": "BlockReservedCapacityPurchases",
"Effect": "Deny",
"Action": "dynamodb:PurchaseReservedCapacityOfferings",
"Resource": "arn:aws:dynamodb:us-west-2:155556789012:*"
}
]
}
Concessão de privilégios: usando o console da GUI
Você também pode usar o console da GUI para criar políticas IAM. Para começar, escolhaTablesno painel de navegação. Na lista de tabelas, escolha a tabela de destino e siga estas etapas.
Step 1 - Selecione o Access control aba.
Step 2- Selecione o provedor de identidade, ações e atributos de política. SelecioneCreate policy depois de inserir todas as configurações.
Step 3 - Escolha Attach policy instructionse conclua cada etapa necessária para associar a política à função IAM apropriada.