Alura > Cursos de Data Science > Cursos de Machine Learning > Conteúdos de Machine Learning > Primeiras aulas do curso AWS: ciência de dados, gestão de segurança e custos

AWS: ciência de dados, gestão de segurança e custos

IAM, custos e boas práticas - Apresentação

Apresentando a instrutora e o curso

Olá! Meu nome é Letícia. Sou uma pessoa branca, de olhos castanhos escuros e cabelo castanho escuro na altura dos ombros. Hoje estou vestindo uma camiseta branca.

Audiodescrição: Letícia está no quarto de gravação, com uma iluminação azul e roxa ao fundo, uma estante de livros à direita e um vaso de plantas à esquerda.

Sejam bem-vindos ao curso sobre ambiente AWS para cientistas de dados.

Explicando o conteúdo do curso

Vamos começar entendendo como funcionam as permissões e a segurança na AWS, para garantir que tudo o que fizermos dentro da nuvem esteja protegido e com os acessos corretos.

Em seguida, veremos como armazenar e acessar dados na AWS, utilizando os principais serviços de armazenamento.

Depois, exploraremos o SageMaker, onde iniciaremos uma análise exploratória e criaremos um modelo simples de Machine Learning (aprendizado de máquina), executando um código Python em uma instância na nuvem. Isso significa que estaremos em um ambiente computacional totalmente gerenciado pela AWS, sem a necessidade de configurar nada localmente.

Posteriormente, conheceremos mais sobre o AWS Glue para montar um processo de ETL visual sem a necessidade de escrever código Python.

Por fim, utilizaremos o Athena para consultar e analisar os dados com SQL diretamente no S3.

Dicas para aproveitar o curso

É importante lembrar que a AWS é uma plataforma extensa com diversos serviços que podem ser combinados de diferentes formas em um projeto de dados. Neste curso, escolhemos um caminho mais prático e direto, focado em um fluxo enxuto e aplicável ao dia a dia de uma pessoa cientista de dados.

Uma dica é realizar este curso com calma. Aproveitem cada etapa, explorem o ambiente, testem as ferramentas e acompanhem o projeto. Durante o curso, trabalharemos de forma prática, utilizando uma base de dados sobre doenças cardíacas. Vamos criar um pequeno fluxo completo de dados e machine learning. Desenvolveremos um modelo de machine learning na nuvem, entendendo como cada serviço se conecta e como tudo funciona na prática.

Incentivando a prática e o desenvolvimento de projetos

Este é o momento ideal para montar o próprio projeto prático. Criem um repositório com este projeto, documentem cada etapa, as decisões tomadas, os testes realizados e os resultados encontrados. Assim, ao final, teremos um projeto completo de ciência de dados na AWS para incluir no portfólio.

Após concluir o projeto que desenvolveremos, uma boa recomendação é escolher outra base de dados de interesse e tentar aplicar todo o fluxo aprendido nessa nova base. Essa prática ajudará a consolidar o aprendizado e expandir o portfólio com algo totalmente próprio.

Vamos mergulhar no universo da AWS juntos?

IAM, custos e boas práticas - Introdução ao IAM

Introduzindo o IAM e sua importância na segurança

Nesta primeira aula, vamos discutir sobre IAM e segurança, que são fundamentais dentro da AWS. Antes de criar qualquer recurso na nuvem, é essencial garantir que tudo esteja seguro e com os acessos configurados corretamente.

O que é o IAM? O AWS Identity and Access Management (IAM) é o serviço responsável por gerenciar quem pode acessar o quê dentro da AWS. Ele é o alicerce de segurança na nuvem, controlando tanto as identidades, como usuários, grupos e funções, quanto as permissões que definem exatamente quais ações cada um pode realizar em cada serviço.

Explicando políticas e permissões no IAM

Um conceito importante são as políticas, ou policies. As políticas do IAM definem permissões para uma ação, independentemente do método usado para executar a operação. Uma política IAM pode ser encontrada na AWS como políticas pré-criadas que a própria AWS define ou políticas personalizadas que podem ser codificadas em JSON, modo visual ou até mesmo importadas. Elas definem de maneira precisa os três pilares de uma regra de acesso:

  1. Ação (action): A tarefa que pode ser realizada, como o s3:GetObject do S3 para ler um arquivo.
  2. Recurso (resource): O serviço ou recurso onde a ação pode ser executada, por exemplo, um bucket específico do S3.
  3. Efeito (effect): Se a ação é permitida ou negada, usando valores como Allow ou Deny.

Descrevendo usuários e grupos no IAM

Além disso, temos os usuários. Um usuário IAM é uma entidade que representa uma pessoa ou aplicativo que interage com os serviços da AWS. Os usuários podem fazer login no console de gerenciamento da AWS para tarefas interativas, bem como fazer solicitações programáticas usando a API e o CLI. Os usuários do IAM podem receber permissões diretamente ou fazer parte de um grupo com permissões específicas.

Os grupos do IAM são uma coleção de usuários que compartilham políticas de controle de acesso. Os membros do grupo têm permissão para executar ações específicas em objetos dentro do escopo do grupo. Por exemplo, se for concedido acesso somente à leitura a todas as instâncias do EC2, qualquer membro do grupo poderá exibir informações sobre essas instâncias.

Explicando o uso de funções no IAM

Por fim, temos as funções, ou roles, que são outro componente essencial do IAM. As funções são identidades temporárias usadas para conceder permissões a serviços da AWS ou permitir acesso seguro entre aplicações, sem precisar criar usuários ou compartilhar credenciais. Por exemplo, ao trabalhar com o Amazon SageMaker, se quisermos que o notebook acesse dados armazenados em um bucket do S3, atribuímos ao notebook uma função com as permissões necessárias, e o acesso acontece de forma automática e segura utilizando essa função.

Podemos utilizar as roles (funções) para delegar acesso a usuários, aplicações e serviços que normalmente não teriam permissão para acessar determinados recursos da AWS. Isso inclui cenários como permitir que usuários de outra conta da AWS acessem nossos recursos ou conceder permissões temporárias dentro da nossa própria conta. A role funciona como um perfil de acesso que reúne um conjunto de políticas e permissões, podendo ser associada a um serviço, um usuário temporário ou até outra conta AWS, dependendo da necessidade. Diferente de um usuário, uma role não possui credenciais fixas, como senha ou chaves de acesso. Esse modelo garante mais segurança, evita o uso de credenciais expostas e facilita o controle de acesso em pipelines, notebooks e aplicações que rodam na nuvem.

Abordando boas práticas de segurança no IAM

Agora, abordando algumas boas práticas de segurança, o primeiro ponto é que é altamente recomendável não usar o usuário raiz, conhecido como root, para tarefas do dia a dia. Ele deve ser utilizado apenas em situações críticas, como configurações iniciais da conta, recuperação de acesso ou tarefas específicas que exigem privilégios totais. Isso é importante porque o usuário raiz tem acesso irrestrito a todos os recursos da conta da AWS, incluindo a capacidade de excluir dados, alterar políticas de segurança, encerrar a conta, entre outros. Portanto, é essencial proteger essas credenciais com o máximo de cuidado, armazená-las em um local seguro e nunca utilizá-las para operações rotineiras. Após criar um usuário administrativo no IAM, devemos utilizar apenas esse usuário para o trabalho diário e manter o acesso root guardado para emergências.

O segundo ponto é o privilégio mínimo. Devemos conceder apenas as permissões estritamente necessárias para que cada usuário, função ou serviço da AWS execute suas tarefas específicas. Evitar conceder permissões amplas ou genéricas, como políticas com acesso irrestrito, é fundamental, pois isso aumenta o risco de uso indevido ou exploração acidental ou maliciosa dos recursos. Por exemplo, se um usuário precisa apenas enviar arquivos para um bucket específico do S3, em vez de conceder acesso total ao S3, podemos criar uma política que limite as ações e recursos, permitindo que o usuário envie objetos para o bucket, mas não possa listar, excluir ou acessar outros buckets.

O terceiro ponto é o uso de grupos. Para facilitar o controle de permissões, devemos criar grupos IAM com políticas específicas para cada tipo de função ou equipe. Por exemplo, podemos criar um grupo chamado "cientistas de dados". Assim, em vez de configurar permissões individualmente para cada usuário, podemos adicionar os usuários aos grupos correspondentes, como o grupo de cientistas de dados. Dessa forma, fica mais fácil gerenciar quem pode fazer o quê, e qualquer mudança futura de permissão pode ser feita diretamente no grupo, sem precisar ajustar usuário por usuário.

Preparando para a prática com IAM

Agora que entendemos um pouco do conceito por trás do IAM, precisamos começar a colocar tudo isso em prática. Na próxima aula, vamos começar criando uma conta do zero na AWS e, em seguida, criar nosso usuário administrador.

IAM, custos e boas práticas - Criando uma conta e usuário admin

Criando uma conta na AWS

O primeiro passo para utilizar os serviços da AWS é a criação de uma conta. Além disso, precisamos criar um usuário administrador, pois, como vimos na aula anterior, é uma boa prática ter esse usuário ao invés de utilizar a conta raiz, a conta root. É isso que vamos fazer nesta aula.

Primeiramente, precisamos acessar a página da AWS. Podemos digitar aws.amazon.com/pt para visualizar a página em português. Se já tivermos uma conta na AWS, podemos clicar em "faça login no console". Caso contrário, podemos criar uma conta do zero clicando em "criar conta". Vamos criar uma conta do zero, então clicaremos em "criar conta".

Configurando a conta e escolhendo o plano

Existem algumas etapas que precisamos seguir. A primeira delas é inserir um endereço de e-mail e dar um nome para a conta. Vamos colocar nosso endereço de e-mail, que será utilizado para verificação. Em seguida, colocamos o nome da conta e clicamos em "verificar e-mail". Um código será enviado para nosso e-mail, que utilizaremos para verificar a conta. Após inserir o código recebido, clicamos em "verificar". Se tudo estiver correto, a conta será criada com sucesso.

Agora, podemos definir uma senha forte, com pelo menos oito caracteres, incluindo letras maiúsculas, minúsculas e números. Após definir a senha, clicamos em "continuar". Esta é a etapa 1 de 5.

Fornecendo informações pessoais e de faturamento

Na próxima página, precisamos escolher um plano. Existem opções de plano pago e um plano gratuito de seis meses. Podemos optar pelo plano gratuito clicando em "escolha o plano gratuito". Em seguida, precisamos fornecer algumas informações pessoais, como nome completo, país, número de telefone com DDD, endereço, cidade, entre outros. Após preencher essas informações, concordamos com os termos e clicamos em "confirmar" para continuar o processo.

Na etapa seguinte, são solicitadas informações de faturamento, incluindo um cartão de crédito. É importante destacar que a AWS faz uma pequena cobrança de verificação, que é estornada posteriormente. Essa cobrança é temporária, geralmente de um dólar ou equivalente, e serve para verificar a conta. Preenchemos as informações do cartão de crédito, como data de expiração, código de segurança, nome e endereço.

Confirmando identidade e ativando a conta

Após preencher todas as informações, precisamos confirmar nossa identidade. Inserimos nosso número de telefone e escolhemos a opção de receber um SMS para confirmação. Após inserir o número de telefone, digitamos os caracteres solicitados para confirmar. Um código de verificação será enviado por SMS, que inserimos para continuar.

Com a conta verificada através do telefone, podemos selecionar um plano. Optamos pelo plano básico, que é gratuito, e completamos o cadastro. O processo de ativação da conta pode levar alguns minutos, e receberemos um e-mail quando for concluído. Por fim, clicamos em "acessar o console de gerenciamento da AWS" para verificar se já conseguimos acessar nossa conta.

Criando um usuário administrador no IAM

Agora que conseguimos acessar o console da AWS, observamos a barra superior que contém a opção de pesquisa. Nessa barra, podemos digitar "IAM" para criar um usuário administrador, pois não queremos utilizar a conta raiz. Essa é a primeira etapa que vamos realizar.

Clicamos no serviço IAM e, no menu lateral esquerdo, escolhemos a opção "users" para criar um novo usuário. Selecionamos "create user" e atribuímos um nome ao usuário. Habilitamos a opção para prover acesso ao painel do console de gerenciamento da AWS e definimos uma senha forte. Após isso, clicamos em "next".

Anexando políticas ao usuário administrador

Na seção de permissões, escolhemos a opção de anexar políticas diretamente. Isso nos permite vincular políticas pré-configuradas a um usuário específico, sem a necessidade de criar grupos ou personalizar regras. Esse método é recomendado para ambientes de teste ou estudo, pois facilita o aprendizado e a configuração inicial. Em ambientes de produção, o ideal é criar grupos e anexar as políticas necessárias ao grupo, garantindo melhor organização e segurança.

Selecionamos a política "Administrator Access", que concede acesso total a todos os serviços e recursos da conta. Aqui está como essa política é definida:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "*",
            "Resource": "*"
        }
    ]
}

Criando políticas personalizadas

Outra política que selecionamos é a "de-beaming", que concede acesso total ao console de cobrança e custos, permitindo visualizar e gerenciar faturas, relatórios de custos e orçamentos. A definição dessa política é a seguinte:

{
    "Sid": "VisualEditor0",
    "Effect": "Allow",
    "Action": [
        "account:GetAccountInformation",
        "aws-portal:Billing",
        "aws-portal:PaymentMethods",
        "aws-portal:Usage",
        "billing:CreateBillingView",
        "billing:DeleteBillingView",
        "billing:GetBillingData",
        "billing:GetBillingDetails",
        "billing:GetBillingNotifications",
        "billing:GetBillingPreferences",
        ...
        "tax:UpdateExemptions"
    ],
    "Resource": "*"
}

Se quisermos criar um usuário para outra pessoa do time, com permissão apenas para baixar, enviar e excluir arquivos em um bucket específico, podemos criar uma policy personalizada. Ao clicar em "Create Policy", somos direcionados para uma nova página onde podemos criar essa permissão de forma visual, em JSON, ou até importar. No modo visual, selecionamos o serviço específico, definimos as ações permitidas e os recursos. No JSON, especificamos o efeito, as ações permitidas e o bucket específico. Aqui está um exemplo de como essa política pode ser definida:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:DeleteObject"
            ],
            "Resource": "arn:aws:s3:::meubucketpessoal/*"
        }
    ]
}

Finalizando a criação do usuário administrador

Essa prática de limitar o acesso a um bucket específico é comum em ambientes reais. Após criar a policy, prosseguimos com as configurações do usuário administrador para fins de teste e aprendizado, utilizando as duas políticas para simplificar o processo.

Após adicionar as políticas, clicamos em "Next", revisamos as informações e criamos o usuário. Com o usuário criado, acessamos suas informações e verificamos as policies anexadas. Agora, precisamos sair da conta raiz e acessar a nova conta de administrador para começar a utilizar os serviços da AWS.

Sobre o curso AWS: ciência de dados, gestão de segurança e custos

O curso AWS: ciência de dados, gestão de segurança e custos possui 210 minutos de vídeos, em um total de 46 atividades. Gostou? Conheça nossos outros cursos de Machine Learning em Data Science, ou leia nossos artigos de Data Science.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Machine Learning acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas