The following data security requirements correspond to the 2023 Data Protection Assessment.
For assessment versions received after February 2024, please see this page.
Apps with access to certain types of Platform Data from Meta are required to complete the annual Data Protection Assessment (DPA). DPA is designed to determine whether developers meet the requirements of Meta Platform Terms as it relates to the use, sharing, and protection of Platform Data. A subset of the DPA questionnaire is focused on Platform Term 6, which outlines data security requirements. We recommend you utilize this document to understand the expectations, requirements, and related evidence with respect to data security use and processing as defined in Meta Platform Terms.
Please note there is a glossary included at the end of this document with key terms and definitions.
Find more video resources from Data Protocol.
Throughout this document, the phrase server side is used as a shorthand for any backend environment that an organization uses to process Platform Data, whether running on a cloud host like Amazon Web Services (AWS), hosted by the developer in a shared or exclusive data center, or a hybrid (combination of these).
Client side requirements refer to processing Platform Data within browsers, mobile devices, within apps on desktop and laptop computers, and other types of devices used by people.
Crie (ou atualize, se necessário) um diagrama ou uma descrição de fluxo de dados que ilustra como o app ou o sistema tratam Dados da Plataforma.
No final, o diagrama ou a descrição do fluxo de dados deve incluir:
Pode ser necessário enviar provas que sustentem as respostas relacionadas às proteções de segurança de dados que você implementa. Recomendamos a leitura do Guia de Provas neste documento para obter exemplos de provas aceitáveis e aprender a elaborá-las adequadamente. Aceitamos tipos de arquivos de documentos comuns junto com capturas e gravações de tela. Verifique se os arquivos não estão protegidos por senha. Você pode carregar vários arquivos, com no máximo 2 GB cada. Aceitamos .xls, .xlsx, .csv, .doc, .docx, .pdf, .txt, .jpeg, .jpg, .png, .ppt, .pptx, .mov, .mp4, .zip e .zipx.
Edite (remova) dados sensíveis das provas antes de enviá-las.
Para aplicativos que precisam enviar provas relacionadas a proteções de segurança de dados, a Meta requer dois tipos diferentes de documentação:
A prova de política ou de procedimento, às vezes chamada de controle administrativo, é uma documentação escrita que descreve a abordagem para uma proteção de segurança de dados específica. O formato dessa prova pode variar – pode ser um trecho de um conjunto de políticas internas, parte de ou uma página inteira de um wiki interno ou um documento recém-criado que você usa para descrever a abordagem, caso você não tenha uma documentação pré-existente. Em qualquer caso, a prova de política ou de procedimento que você enviar deve explicar, claramente, como a abordagem para uma determinada proteção se relaciona com os requisitos da Meta. Forneça apenas a política ou os detalhes relevantes e necessários para a análise de segurança da Meta ou use a caixa de texto livre associada à pergunta para direcionar nossos analistas às seções relevantes.
A prova de implementação ilustra como você implementou a política ou o procedimento na prática diretamente por meio de uma captura ou gravação de tela. Considerando que desenvolvedores diferentes têm configurações distintas, não podemos fornecer exemplos para todos as situações. Portanto, a prova de implementação deve demonstrar, na medida do possível, o mesmo nível de detalhe dos exemplos que fornecemos.
Entendemos que pode ser excessivamente oneroso elaborar provas de implementação que demonstrem, de forma abrangente, a implementação de uma determinada proteção de segurança de dados. Considerando isso, você deve enviar provas de acordo com as orientações fornecidas aqui e remover informações confidenciais das provas antes de enviá-las:
Não envie provas que contenham qualquer um desses valores em formato legível (não removido). Se você estiver usando um editor de imagens para fazer uma captura de tela, coloque uma caixa preta em cima do valor. Se você estiver usando um editor de PDF, ajuste o texto usando uma ferramenta que realmente remova os valores, em vez de simplesmente adicionar uma caixa de texto por cima deles (por exemplo, a ferramenta de edição no app Apple Preview).
Question: Do you enforce encryption at rest for all Platform Data stored in a cloud, server, or data center environment?
Encryption at rest protects Platform Data by making the data indecipherable without a separate decryption key. This provides an additional layer of protection against unauthorized read access.
If you do store Platform Data server side:
If developer does NOT store Platform Data server side, this requirement is not applicable.
If you store Platform Data using IaaS hosting (e.g., AWS EC2, Microsoft Azure IaaS, and Google Compute Engine), self hosting, or a hybrid approach then this question does apply.
However, there are other backend hosting models that are special cases:
If you store Platform Data only via any of these (and not using IaaS, Self Hosting, or Hybrid Hosting), this question does not apply. You should instead describe this relationship in the Service Provider section of the DPA.
If you store Platform Data only via a Meta API, for example using player.setDataAsync()
, in the Instant Games SDK, this question does not apply.
If you are asked to submit evidence for this protection, follow the instructions in Preparing Evidence to prepare both policy/procedure and implementation evidence.
AWS RDS - encryption at rest is configurable in AWS RDS, so developers must make sure that the configuration option is set to apply this protection.
For a representative RDS instance that contains Platform Data, use the AWS CLI tool to fetch its StorageEncrypted configuration.
# List RDS instances in default region $ aws rds describe-db-instances \ --query 'DBInstances[*].DBInstanceIdentifier' [ "database-1", "database-2" ] # For each instance returned, retrieve the storage encrypted config $ aws rds describe-db-instances \ --db-instance-identifier database-1 \ --query 'DBInstances[*].StorageEncrypted' [ true ] $ aws rds describe-db-instances \ --db-instance-identifier database-2 \ --query 'DBInstances[*].StorageEncrypted' [ true ]
AWS DynamoDB is encrypted at rest by default. You can fetch the encryption at rest configuration for a table using these commands.
$ aws dynamodb list-tables --output table -------------- | ListTables | +------------+ ||TableNames|| |+----------+| || Users || |+----------+| $ aws dynamodb describe-table \ --table-name Users \ --query "Table.SSEDescription.Status" "ENABLED"
AWS DocumentDB must be configured to apply encryption at rest. For a representative cluster that contains Platform Data, use these commands to fetch the StorageEncrypted configuration.
$ aws docdb describe-db-clusters --query 'DBClusters[*].DBClusterIdentifier' [ "docdb-users" ] $ aws docdb describe-db-clusters \ --db-cluster-identifier 'docdb-users' \ --query 'DBClusters[*].StorageEncrypted' [ true ]
AWS S3 buckets may be configured to apply encryption at rest to all objects created within the bucket. Use these commands to list buckets and fetch the configuration for default bucket encryption.
$ aws s3api list-buckets --output table --query "Buckets[*].Name" --------------------------------------------- | ListBuckets | +-------------------------------------------+ | platform.storage | +-------------------------------------------+ $ aws s3api get-bucket-encryption \ --bucket platform.storage \ --query "ServerSideEncryptionConfiguration.Rules[*].ApplyServerSideEncryptionByDefault" \ --output table --------------------- |GetBucketEncryption| +-------------------+ | SSEAlgorithm | +-------------------+ | AES256 | +-------------------+
Consult Microsoft’s documentation on encryption at rest in Azure that’s relevant to the organization’s use of their services.
Consult Google’s documentation on encryption at rest on Google Cloud Platform.
If you do not implement encryption at rest in the server side environment, you may be protecting Platform Data in an alternative way that is still acceptable. In this case, you should describe the following:
Pergunta: especificamente com relação aos dados armazenados em dispositivos organizacionais e pessoais, você aplica a criptografia em repouso a todos os Dados da Plataforma armazenados nesses dispositivos ou tem políticas ou regras em vigor para reduzir o risco de perda de dados?
Quando os desenvolvedores permitem Dados da Plataforma em dispositivos como notebooks de funcionários ou armazenamento removível (por exemplo, pen drives), esses dados correm um grande risco de acesso não autorizado caso os dispositivos sejam perdidos ou roubados. Para limitar esse risco, é necessário que os desenvolvedores tomem providências.
Para reduzir o risco de acesso não autorizado aos Dados da Plataforma, é necessário que os desenvolvedores tenham controles técnicos (preferível) ou administrativos (não preferível, mas aceitável) que sejam relevantes aos Dados da Plataforma em dispositivos organizacionais (como notebooks) e mídia removível.
Esse requisito é aplicável independentemente de você tratar ou não Dados da Plataforma no servidor.
Caso peçam para você enviar provas dessa proteção, siga as instruções em Elaboração de provas para preparar a política ou o procedimento e as provas de implementação.
Talvez você esteja usando uma ou duas das seguintes opções: 1) controles técnicos (como criptografia de disco) ou 2) regras ou políticas para reduzir o risco de perda de Dados da Plataforma armazenados em dispositivos organizacionais, como notebooks ou celulares.
Os controles técnicos podem incluir os seguintes:
As regras ou as políticas podem incluir as seguintes:
Uma organização classifica os Dados da Plataforma da Meta como “dados privados” conforme o próprio padrão de classificação de dados. Essa organização criou Diretrizes de Manuseio de Dados e obriga todos os funcionários a entender e cumprir essas políticas.
Pergunta: Você habilita o protocolo de segurança TLS 1.2 ou superior para todas as conexões de rede que passem por, ou se conectem, ou cruzem redes públicas em que são transmitidos Dados da Plataforma? Além disso, você assegura que os Dados da Plataforma nunca são transmitidos por redes públicas em forma não criptografada (por exemplo, via HTTP ou FTP) e que os protocolos de segurança SSL v2 e SSL v3 nunca são usados?
Os Dados da Plataforma transmitidos pela Internet são acessíveis a qualquer pessoa que possa observar o tráfego da rede. Portanto, eles devem ser protegidos com criptografia para evitar que partes não autorizadas possam ler os dados.
Se você trata Dados da Plataforma no servidor ou não:
A tabela abaixo resume a política de criptografia em trânsito para diferentes tipos de transmissão.
Tipo de transmissão | Política de criptografia em trânsito |
---|---|
De e para dispositivos do usuário final (celulares, PCs, tablets etc.) e a infraestrutura de servidor ou de nuvem. |
|
De e para a infraestrutura de servidor ou de nuvem e qualquer servidor remoto, infraestrutura de nuvem ou serviço quarteirizado. | O TLS 1.2 ou versões posteriores devem ser aplicados |
De e para componentes inteiramente dentro da infraestrutura de servidor, de nuvem ou centro de dados privado | A criptografia TLS é recomendada, mas não obrigatória para transferências de Dados da Plataforma que estejam inteiramente dentro de uma rede privada em nuvem |
De e para a Meta e qualquer dispositivo, servidor ou infraestrutura de nuvem | Fora do escopo de Avaliação da Proteção dos Dados: a Meta controla a política de TLS para essas transferências |
Caso peçam para você enviar provas dessa proteção, siga as instruções em Elaboração de provas para preparar a política ou o procedimento e as provas de implementação. O uso da ferramenta Qualys SSL Server Test é uma forma direta de produzir provas de implementação que demonstrem a configuração de um dos web listeners.
Este é um exemplo do resultado da ferramenta Qualys SSL Server Test. Verifique as observações em vermelho na seção Configuração, que resume quais versões de SSL/TLS são compatíveis. Observação: este exemplo inclui apenas as primeiras duas páginas, mas você deve incluir o resultado do teste na íntegra.
Talvez você proteja os Dados da Plataforma em trânsito com um tipo de criptografia diferente do TLS. Ele pode ser aceitável, se fornecer proteção equivalente. Nesse caso, você deve enviar os detalhes sobre a criptografia usada para a análise da Meta:
Pergunta: você testa o app e os sistemas para detectar vulnerabilidades e problemas de segurança pelo menos a cada 12 meses? Por exemplo, você realiza um teste de invasão manual?
Os desenvolvedores devem realizar testes para detectar vulnerabilidades e problemas de segurança que podem ser descobertos com proatividade, prevenindo, assim, incidentes de segurança antes que eles aconteçam
Aplicável a todos os desenvolvedores:
Outros requisitos para desenvolvedores que tratam Dados da Plataforma no servidor:
Se a organização está cogitando adicionar o teste de segurança de apps estáticos (SAST, pelas siglas em inglês) ao processo de desenvolvimento, o National Institute of Standards and Technology (Instituto Nacional de Padrões e Tecnologia) mantém uma lista de ferramentas de código aberto e comerciais que pode ser útil como ponto de partida para escolher uma ferramenta.
Caso peçam para você enviar provas dessa proteção, siga as instruções em Elaboração de provas para preparar a política ou o procedimento e as provas de implementação.
Se a organização trata os Dados da Plataforma em um ambiente de nuvem ou de servidor:
O software de nuvem ou de servidor acessível pela internet (como uma REST API usada por clientes web e móveis) que você usa para tratar Dados da Plataforma deve estar dentro do escopo desse teste para que ele seja aceitável.
Se a organização não trata os Dados da Plataforma em um ambiente de nuvem ou de servidor:
Teste de invasão: uma organização encomenda esse tipo de teste em um software que está em execução no servidor, que se integra às APIs da Meta e que trata Dados da Plataforma. A empresa responsável pelo teste o realiza e elabora uma carta de resumo, como o exemplo abaixo. Observe que as anotações em vermelho destacam a data em que o teste foi realizado (o que deve ter acontecido nos últimos 12 meses) e que há um resumo dos achados não resolvidos com gravidade crítica ou alta ao final do teste ou, se aplicável, do reteste. Pedimos que você remova informações sensíveis do relatório (em particular, todas as etapas detalhadas de reprodução de vulnerabilidades) antes de enviá-lo.
Análise estática: se você está usando uma abordagem diferente, como uma ferramenta SAST, exporte os resultados para um documento com a data de execução do teste SAST e para uma lista com os tipos e as gravidades de cada achado.
Análise de configuração da nuvem
Um desenvolvedor usa o Scout Suite, da NCC Group, com o conjunto de regras padrão do provedor de nuvem (nesse caso, a AWS) para analisar a configuração da nuvem e detectar vulnerabilidades e problemas de segurança. A ferramenta retorna um arquivo JSON contendo os resultados detalhados da execução. Nesse exemplo, há um grande número de problemas sinalizados com gravidade “Danger” (“Perigosa”) que o desenvolvedor precisa analisar e resolver.
O arquivo JSON bruto da NCC Scout Suit contém detalhes sobre seu ambiente de nuvem que você não deve carregar. Em vez disso, filtre as respostas para exibir a contagem de achados por gravidade.
$ python3 scout.py aws –-no-browser 2022-08-22 11:39:38 localhost scout[76981] INFO Saving data to scoutsuite-report/scoutsuite-results/scoutsuite_results_aws-043954759379.js $ cd scoutsuite-report/scoutsuite-results $ tail -n +2 scoutsuite_results_aws-043954750000.js| jq '. | {last_run}' | pbcopy { "last_run": { "ruleset_about": "This ruleset consists of numerous rules that are considered standard by NCC Group. The rules enabled range from violations of well-known security best practices to gaps resulting from less-known security implications of provider-specific mechanisms. Additional rules exist, some of them requiring extra-parameters to be configured, and some of them being applicable to a limited number of users.", "ruleset_name": "default", "run_parameters": { "excluded_regions": [], "regions": [], "services": [], "skipped_services": [] }, "summary": { "acm": { "checked_items": 4, "flagged_items": 2, "max_level": "warning", "resources_count": 2, "rules_count": 2 }, "awslambda": { "checked_items": 0, "flagged_items": 0, "max_level": "warning", "resources_count": 0, "rules_count": 0 }, "cloudformation": { "checked_items": 11, "flagged_items": 0, "max_level": "warning", "resources_count": 11, "rules_count": 1 }, "cloudfront": { "checked_items": 0, "flagged_items": 0, "max_level": "warning", "resources_count": 0, "rules_count": 3 }, "cloudtrail": { "checked_items": 153, "flagged_items": 4, "max_level": "danger", "resources_count": 17, "rules_count": 9 }, "cloudwatch": { "checked_items": 2, "flagged_items": 0, "max_level": "warning", "resources_count": 2, "rules_count": 1 }, "codebuild": { "checked_items": 0, "flagged_items": 0, "max_level": "warning", "resources_count": 0, "rules_count": 0 }, "config": { "checked_items": 17, "flagged_items": 0, "max_level": "warning", "resources_count": 1227, "rules_count": 1 }, "directconnect": { "checked_items": 0, "flagged_items": 0, "max_level": "warning", "resources_count": 0, "rules_count": 0 }, "dynamodb": { "checked_items": 0, "flagged_items": 0, "max_level": "warning", "resources_count": 1, "rules_count": 0 }, "ec2": { "checked_items": 760, "flagged_items": 108, "max_level": "danger", "resources_count": 44, "rules_count": 28 }, "efs": { "checked_items": 0, "flagged_items": 0, "max_level": "warning", "resources_count": 0, "rules_count": 0 }, "elasticache": { "checked_items": 0, "flagged_items": 0, "max_level": "warning", "resources_count": 0, "rules_count": 0 }, "elb": { "checked_items": 0, "flagged_items": 0, "max_level": "warning", "resources_count": 0, "rules_count": 3 }, "elbv2": { "checked_items": 42, "flagged_items": 4, "max_level": "danger", "resources_count": 0, "rules_count": 5 }, "emr": { "checked_items": 0, "flagged_items": 0, "max_level": "warning", "resources_count": 0, "rules_count": 0 }, "iam": { "checked_items": 801, "flagged_items": 27, "max_level": "danger", "resources_count": 87, "rules_count": 37 }, "kms": { "checked_items": 15, "flagged_items": 0, "max_level": "warning", "resources_count": 15, "rules_count": 1 }, "rds": { "checked_items": 1, "flagged_items": 0, "max_level": "warning", "resources_count": 27, "rules_count": 9 }, "redshift": { "checked_items": 0, "flagged_items": 0, "max_level": "warning", "resources_count": 0, "rules_count": 6 }, "route53": { "checked_items": 0, "flagged_items": 0, "max_level": "warning", "resources_count": 1, "rules_count": 3 }, "s3": { "checked_items": 121, "flagged_items": 34, "max_level": "warning", "resources_count": 7, "rules_count": 18 }, "secretsmanager": { "checked_items": 0, "flagged_items": 0, "max_level": "warning", "resources_count": 1, "rules_count": 0 }, "ses": { "checked_items": 0, "flagged_items": 0, "max_level": "warning", "resources_count": 0, "rules_count": 4 }, "sns": { "checked_items": 0, "flagged_items": 0, "max_level": "warning", "resources_count": 0, "rules_count": 7 }, "sqs": { "checked_items": 0, "flagged_items": 0, "max_level": "warning", "resources_count": 0, "rules_count": 8 }, "vpc": { "checked_items": 271, "flagged_items": 211, "max_level": "warning", "resources_count": 0, "rules_count": 9 } }, "time": "2022-08-22 11:42:25-0400", "version": "5.11.0" } }
Outra abordagem para desenvolvedores que usam o conjunto de regras da AWS realizarem uma análise de configuração da nuvem.
# Show that AWS Foundational Security Best Practices are enabled $ aws securityhub get-enabled-standards { "StandardsSubscriptions": [ { "StandardsSubscriptionArn": "arn:aws:securityhub:us-west-1:043954759379:subscription/aws-foundational-security-best-practices/v/1.0.0", "StandardsArn": "arn:aws:securityhub:us-west-1::standards/aws-foundational-security-best-practices/v/1.0.0", "StandardsStatus": "READY" } ] } # Show that aggregator is configured for a representative region used to process Platform Data $ aws securityhub list-finding-aggregators $ aws securityhub get-finding-aggregator --finding-aggregator-arn '{REPLACE-WITH-FINDING-AGGREGATOR-ARN}' # Demonstrate that the ruleset is running by fetching active findings and counting the number of lines of output $ aws securityhub get-findings --query 'Findings[?RecordState==`ACTIVE`]' --filters '{"GeneratorId":[{"Value": "aws-foundational-security","Comparison":"PREFIX"}]}' --output text | wc -l 4876 # Demonstrate that there are no active critical severity findings $ aws securityhub get-findings --query 'Findings[?Severity.Label==`CRITICAL`] | [?RecordState==`ACTIVE`] | [*][Title, GeneratorId]' --filters '{"GeneratorId":[{"Value": "aws-foundational-security","Comparison":"PREFIX"}]}' []
Caso você esteja realizando um programa de divulgação de vulnerabilidade (VDP, pelas siglas em inglês) usando, por exemplo, as plataformas BugCrowd ou HackerOne, é possível apresentá-lo como uma proteção alternativa em vez de conduzir um teste de invasão ou uma verificação de vulnerabilidades. Para demonstrar isso, é necessário enviar provas de que:
Nesse caso, a evidência deve incluir o seguinte:
Pergunta: os tokens de acesso a APIs e as chaves secretas do app da Meta são protegidos das duas formas a seguir?
As chaves secretas do app e os tokens de acesso são fundamentais para as APIs da Meta tomarem decisões de segurança sobre quais ações permitir. Caso uma parte não autorizada tenha acesso a essas credenciais, ela pode chamar as APIs da Meta como se fosse o verdadeiro desenvolvedor e realizar qualquer uma das ações permitidas ao app (como ler dados das APIs da empresa sobre os usuários de um app).
Tokens de acesso
Chave secreta do app: uma destas duas alternativas deve ser verdadeira:
Caso peçam para você enviar provas dessa proteção, siga as instruções em Elaboração de provas para preparar a política ou o procedimento e as provas de implementação.
Inclua a documentação sobre a política de proteção dos tokens de acesso a APIs da Meta e sobre a chave secreta do app caso este processe tokens de acesso da Meta no servidor. Também inclua provas que demonstrem as proteções tomadas (isto é, uso de um cofre que armazena valores em um formato criptografado ou configuração do app para exigir provas da chave secreta).
Não inclua os valores de texto sem formatação de chaves ou de tokens de acesso nas provas enviadas.
Uma organização usa o AWS Secrets Manager para armazenar dados sensíveis com segurança, incluindo a chave secreta do app da Meta.
Uma organização configurou o app da Meta para exigir provas da chave secreta em chamadas a APIs.
Pergunta: Você testa os sistemas e processos que usaria para responder a um incidente de segurança (por exemplo, uma violação de dados ou um ataque cibernético) pelo menos a cada 12 meses?
Incidentes de segurança ocorrem em todas as empresas em algum momento, portanto, é essencial que as organizações tenham planejado com antecedência quem, e de que forma, conterá o incidente, se comunicará com as partes interessadas, recuperará o sistema e analisará o que aconteceu.
O desenvolvedor deve ter:
Esse requisito é aplicável independentemente de você tratar ou não Dados da Plataforma no servidor.
Siga as instruções em Elaboração de provas para preparar a política ou o procedimento e as provas de implementação.
Um desenvolvedor criou um plano abrangente de resposta a incidentes com base neste modelo. Essas imagens mostram apenas o índice, mas há um link abaixo para acessar o modelo completo.
Veja o Modelo completo de plano de resposta a incidentes da Counteractive (formato docx)
Um desenvolvedor realizou um teste do próprio plano de resposta a incidentes por meio de um exercício de simulação e documentou o resultado com base nesse modelo.
Apenas as duas primeiras páginas estão incluídas aqui, mas você deve enviar o documento inteiro.
Pergunta: você exige a autenticação multifatorial para o acesso remoto de cada conta capaz de se conectar ao ambiente de nuvem ou de servidor e/ou de acessar os serviços usados para implantar, manter, monitorar e operar os sistemas onde você armazena os Dados da Plataforma da Meta?
Uma técnica comum que agentes maliciosos usam para acessar dados confidenciais é ganhar acesso às ferramentas que desenvolvedores usam para criar ou operar apps ou sistemas. Existem ferramentas sofisticadas para invadir contas protegidas apenas com senhas. Por isso, para proteger as pessoas contra esse risco, a autenticação multifatorial oferece uma camada adicional de segurança.
Quanto ao tratamento de Dados da Plataforma realizado por uma organização, é necessário proteger o acesso remoto às seguintes ferramentas com autenticação multifatorial (ou seja, não somente com uma senha):
Especificamente, é necessário ativar a autenticação multifatorial ou ter uma proteção alternativa aceitável nos seguintes casos:
Quanto à implementação da autenticação multifatorial:
Caso peçam para você enviar provas dessa proteção, siga as instruções em Elaboração de provas para preparar a política ou o procedimento e as provas de implementação.
Uma organização usa o Azure AD como solução de login único (SSO). Essa política exige a autenticação multifatorial.
Depois, ela mapeia os apps na nuvem aos quais se aplica. Com essa abordagem, é necessário que as provas mostrem toda a seção Itens selecionados para deixar claro quais apps na nuvem exigem esse tipo de autenticação.
Essa regra exige a autenticação multifatorial para todos os logins.
Esse é um exemplo de uma política do AWS IAM que permite a configuração de autenticação multifatorial, mas proíbe outras ações caso esse tipo de autenticação esteja ausente.
Uma organização configurou o GitHub para exigir a autenticação multifatorial de todas os membros.
Pergunta: você tem um sistema para cuidar de contas, o que inclui atribuir, revogar e analisar acesso e privilégios?
Ter um bom gerenciamento de contas é importante para evitar o uso não autorizado delas e, por consequência, o acesso aos Dados da Plataforma. Em particular, os desenvolvedores devem garantir que o acesso aos recursos ou sistemas seja revogado quando não é mais necessário.
Esse requisito é aplicável independentemente de você tratar ou não Dados da Plataforma no servidor.
Siga as instruções em Elaboração de provas para preparar a política ou o procedimento e as provas de implementação.
Política ou procedimento: um desenvolvedor criou um padrão de gerenciamento de ciclo de vida de acesso que inclui procedimentos para conceder, analisar e revogar acesso.
Um desenvolvedor usa o Workday como fonte oficial para os dados de recursos humanos (RH), incluindo status de emprego atual. Ele usa o Cloud Identity, da Google, como provedor de identidade (IdP) para gerenciar contas de usuário e conceder acesso aos sistemas e ferramentas de informação.
Um desenvolvedor envia provas de que o acesso é revogado para ex-funcionários. Para isso, ele providencia um relatório de conciliação recente (ou seja, dentro dos últimos 12 meses) do Workday que mostra que nenhuma conta de usuário ativa existe no Cloud Identity para quem não é funcionário ativo.
Um desenvolvedor usa o Cloud Identity, da Google, como provedor de identidade (IdP) para gerenciar contas de usuário e conceder acesso aos sistemas e ferramentas de informação.
Um desenvolvedor envia provas de que o acesso é revogado quando deixa de ser usado (ou seja, nenhum login nos últimos seis meses). Para isso, ele mostra o diretório de usuários classificado pelo último login para demonstrar que não há contas de usuário ativas nos casos em que o último login foi há mais tempo do que o definido.
Um desenvolvedor usa uma ferramenta de login único (SSO) para gerenciar identidades e conceder acesso aos sistemas e ferramentas de informação e configurou o GitHub para exigir autenticação SSO.
Pergunta: você tem um sistema para manter o código e os ambientes atualizados, incluindo servidores, máquinas virtuais, distribuições, bibliotecas, pacotes e software antivírus?
Os componentes de software são constantemente atualizados ou corrigidos para resolver vulnerabilidades de segurança. No entanto, em algum momento, a vida útil deles chega ao fim quando deixam de ser compatíveis. Os desenvolvedores que empacotam ou usam esses componentes devem se manter atualizados para evitar a execução de software com vulnerabilidades conhecidas.
Para os seguintes componentes de software, conforme aplicável, é necessário ter uma forma definida e repetível de identificar os patches disponíveis que resolvem as vulnerabilidades de segurança, priorizando com base no risco e os aplicando continuamente:
A Meta não exige o uso de nenhuma ferramenta específica para essas atividades. É comum que uma organização use mais de uma abordagem para manter diferentes tipos de software atualizados. Por exemplo, bibliotecas que são empacotadas com o app em comparação a atualizações do sistema operacional para notebooks dos funcionários.
Esse requisito é aplicável independentemente do tipo de hospedagem (como BaaS, PaaS, IaaS, auto-hospedagem ou híbrida), embora o conjunto de componentes que você é responsável por manter atualizado varie.
O diagrama abaixo ilustra onde a aplicação de patches pode ser necessária para vários tipos de arquitetura.
Caso peçam para você enviar provas dessa proteção, siga as instruções em Elaboração de provas para preparar a política ou o procedimento e as provas de implementação.
Comece identificando os tipos de software dentro do escopo no ambiente, como bibliotecas, SDKs, pacotes, imagens de máquina virtual, contêineres de apps, sistemas operacionais, navegadores e outros apps que funcionários ou colaboradores usam.
Talvez você tenha uma ou mais ferramentas destinadas às seguintes atividades:
Snyk para um app NodeJS: um desenvolvedor usa a interface de linha de comando (CLI, pelas siglas em inglês) da Snyk para identificar dependências de terceiros empacotadas que têm vulnerabilidades de segurança conhecidas e priorizá-las com base na gravidade delas.
Um desenvolvedor está usando a auditoria npm para encontrar vulnerabilidades nas dependências usadas em um app Node. A imagem de exemplo abaixo mostra várias vulnerabilidades de alta gravidade que precisam ser corrigidas.
Um desenvolvedor usa o Trivy para encontrar vulnerabilidades em uma imagem de máquina. A imagem de exemplo abaixo mostra vulnerabilidades de alta gravidade que precisam ser corrigidas e estão localizadas em bibliotecas incluídas nessa imagem.
Um desenvolvedor usa o WSUS para gerenciar os servidores, assim como os PCs e os notebooks. A imagem de exemplo abaixo mostra um modo de exibição do administrador do WSUS, que permite analisar, aprovar e implantar atualizações do Windows.
Sem arquivos de registro confiáveis, pode ser difícil, ou até mesmo impossível, para um desenvolvedor detectar acessos não autorizados aos Dados da Plataforma.
Caso você trate Dados da Plataforma no servidor, dentro desse ambiente:
Caso peçam a você que envie provas, elas devem demonstrar que:
Entender como se espera que os Dados da Plataforma sejam tratados e monitorar a execução de tal tratamento é uma maneira importante de uma organização garantir que os Dados da Plataforma sejam usados apenas para os fins pretendidos.
Caso você trate Dados da Plataforma no servidor, é necessário fazer o seguinte dentro desse local:
Caso peçam para você enviar provas dessa proteção, siga as instruções em Elaboração de provas para preparar a política ou o procedimento e as provas de implementação.
Você deve fornecer provas que demonstrem o seguinte:
Depender de seres humanos para analisar e identificar comportamentos inesperados em um sistema moderno acessível pela internet é algo inviável. Em vez disso, existem ferramentas que podem ingerir arquivos de registro e outros sinais para disparar alarmes que precisam de mais investigação humana.
Caso você trate Dados da Plataforma no servidor, é necessário fazer o seguinte dentro desse local:
Um desenvolvedor normalmente adotaria uma ferramenta de Gerenciamento de Eventos e Informações de Segurança (SIEM, na sigla em inglês) para esse fim, por exemplo:
É necessário fornecer provas de que as fontes de sinais relevantes estão sendo encaminhadas para a ferramenta da sua escolha, que os disparos ou os alarmes foram configurados, que os alarmes são encaminhados para o pessoal responsável pelo acompanhamento e que existe um processo pelo qual os alarmes são ajustados periodicamente (ou seja, por meio de ciclos mensais de análise e de atualização).
3rd party - in risk management terminology, 3rd party refers to developers on Meta’s platform (1st party is Meta itself; 2nd party is people that use Meta’s products)
4th party - in risk management terminology, 4th party refers to the firms that developers rely on to provide them services that enable their business (1st party is Meta, 2nd party is Meta’s users, and 3rd party is developers on Meta’s platform)
Access token - a credential, like a password, that allows software to call an API to take some action (e.g., read data from a user’s profile).
Amazon Web Services (AWS) - Amazon’s suite of cloud computing services
App scoped ID (ASID) - a unique identifier that Meta generates when a person chooses to use an app. ASIDs help improve privacy for users by making it more difficult for data sets to correlate users across apps, since a single user using two apps will have different ASIDs in each app.
App secret - a shared secret that Meta makes available to developers via the app dashboard. Possession of the app secret authorizes software to take some actions via the Graph API, so developers need to take care that unauthorized parties are not able to get access to the app secret.
App compromise - if a malicious actor is able to gain unauthorized access to an organization’s internal network via a misconfiguration or vulnerability in their app (e.g., a software vulnerability in a webapp) it’s called app compromise. A defense against app compromise is to pen test the app. See also network compromise.
Application container - a container packages up software code and related dependencies so that the app will run on different types of servers (e.g., servers running different operating systems like Linux or Windows Server). A developer will create a container image that packages their app. An application container engine or runtime hosts (runs) the container image.
Application encryption - a method of protecting data where the application software itself does the encryption and decryption operations. In contrast, Transport Layer Security (TLS) seamlessly encrypts data in transit when an application establishes a secure connection to a remote server (e.g., using HTTPS) and cloud providers offer services to transparently encrypt data at rest.
Application Programming Interface (API) - allows two computers to talk to each other over a network, for example a mobile app fetching today’s weather for a certain location from a centralized weather forecasting system
Appsecret proof - an additional layer of security for API calls to Meta whereby a developer generates a parameter (the appsecret proof) that demonstrates that they possess the app secret. The appsecret proof is the product of a hashing function (also called a one-way function) based on the app secret and access token. Configuring an app to require appsecret proofs during Graph API invocations reduces the potential harm from a breach of user access tokens, since those access tokens cannot be used without the additional appsecret proof parameter.
Backend as a Service (BaaS) - a style of cloud computing that provides a suite of server-side capabilities for an app developer so that the developer can focus on building the frontend (i.e., the part of an app that users interact with). BaaS solutions are similar to PaaS and, in addition, add services like user authentication and mobile push notifications. For example, these are some popular BaaS products: AWS Amplify, Azure Mobile Apps, Firebase, and MongoDB Switch.
Cipher text - a synonym for encrypted data, cipher text is the name given to data that has been made unreadable via some encryption algorithm. The opposite of cipher text is plain text.
Client side - people typically interact with internet-accessible services by opening a website in a browser or by running a mobile app on a phone or tablet. The browser or mobile apps are referred to as local clients or client side. Clients make requests from remote computers (servers) via the internet.
Cloud computing - refers to a style of managing server computers, networks, and storage so that an organization doesn’t need to worry about the physical environment (i.e., a data center full of server racks and network cables). Instead, the organization can provision these assets on demand and pay for the services that they consume.
Cloud configuration - the set of cloud computing options that an organization has set in relation to their use of a cloud provider running some software. Examples of cloud configuration include what sorts of network connections are allowed or blocked, where log files are written and how long they are kept, and the set of users who are authorized to make changes to the cloud configuration.
Compensating controls - a security control that differs from some baseline set of requirements but is intended to deliver comparable protection against a risk.
Database - software that allows arbitrary data to be stored, read, updated, and deleted. Databases can run on clients and on servers. Organizations that integrate with the Meta platform will commonly store data they fetch from the Graph API in a database that runs server side.
Decryption - process by which encrypted data is transformed back into its original format. In other words, decryption changes cipher text into plain text.
Encryption - process by which data is transformed into a format that is unusable to anyone that cannot decrypt it. In other words, encryption changes plain text into cipher text.
Encryption at rest - data that has been protected with encryption when written to persistent storage (e.g., a disk drive). Encryption at rest provides an additional layer of protection against unauthorized access since an actor that’s able to read the raw files on the storage device will see cipher text and will not be able to decrypt it unless they are also able to gain access to the decryption key.
Encryption in transit - data that has been protected with encryption when transmitted across a network. Encryption in transmit provides protection against eavesdropping along the network path since an actor that’s able to read the network packets will see cipher text and will not be able to decrypt it unless they are also able to gain access to the decryption key.
End of Life (EOL) software - when an organization chooses to stop support (e.g., create patches to resolve security vulnerabilities) for a software product that software is considered EOL. Since this software is no longer maintained, it’s very risky to run any EOL software.
Google Cloud Platform (GCP) - Google’s suite of cloud computing services
Graph API - the primary way for apps to read and write to the Meta social graph. All Meta SDKs and products interact with the Graph API in some way.
Hashing function - a cryptographic function that takes any data as input and outputs a short code that cannot be reversed into the original input. In cryptography, hashing functions are used to protect data like passwords – instead of storing a user’s password in plaintext that could be stolen, passwords are first transformed with a hash function and then stored. Later, to confirm that a user has input the correct password, the system will use the same hash function to transform the input and compare the resulting hash against the stored value. Also called a one-way function since the output hash cannot be reversed into the original input.
Hosted environment - refers to a set of remote servers, networks, and storage devices that an organization is running in their own data center or within a data center co-located (or colo) with other customers. This arrangement is relatively uncommon in the modern era since cloud computing has become more popular.
Identity Provider (IdP) - a cloud service used to centralize management of digital identities and authenticate users. Organizations that use an IdP typically configure cloud apps to rely on the IdP for user authentication. The organization can then manage users by creating, granting access to selected apps, and disabling user accounts centrally within the IdP instead of having to do this repeatedly in each cloud app.
Identity and Access Management (IAM) - refers to the category of tools and processes that are used to manage accounts and grant access to systems.
Infrastructure as a Service (IaaS) - a cloud computing approach that lets customers configure computing, storage, and networking services without having responsibility for the physical assets themselves (e.g., managing a data center full of servers, network devices, and storage arrays). Compared to Paas, IaaS gives an organization more control over the configuration of their cloud assets but at the cost of more complexity to manage those assets. For example, these are some popular IaaS products: AWS EC2, Microsoft Azure IaaS, and Google Compute Engine.
Library - pre-existing software building blocks, typically from an external company or developer, that’s used to handle certain tasks within another developer’s app or system. Libraries simplify development of an app since a developer doesn’t have to reinvent the wheel when a library already exists for a given function. However, libraries can contain security vulnerabilities – or can themselves include additional libraries that do – so developers who use libraries as part of their app need to know what libraries are in use and keep them up to date over time.
Mobile client or mobile app - an app that a person installs onto a phone or table from a mobile app store (e.g., iOS App Store or Google Play Store). It’s common for mobile clients to communicate over the internet with an organization’s REST API and may also communicate with other parties (e.g., to the Graph API via the Facebook SDK for Android).
Multi-Factor Authentication (MFA) - an authentication approach that requires more than one factor to gain access to an app or system. MFA, in contrast to single factor authentication that relies on just a password to authenticate a user, will typically require a password plus one or more of these: a code sent via email or SMS, a code from an authenticator app, a biometric scan, or a security key. MFA protects against account takeovers by making it more difficult for unauthorized actors to force their way into an account, e.g., by repeatedly attempting to login to an account by using a known email address and common passwords until successful.
Native software - apps that are downloaded and installed onto laptops or mobile devices are referred to as native software (e.g., the Facebook app for iOS). In contrast, an app that runs within a browser is referred to as a webapp (e.g., opening Facebook using the Chrome browser).
Network compromise - if a malicious actor is able to gain unauthorized access to an organization’s internal network via a misconfiguration or vulnerability in the network itself it’s called a network compromise. A defense against network compromise is to run a network scan to identify misconfigurations and vulnerabilities in the internet-facing network. See also application compromise.
Network scan - a risk management process that uses software to: (1) identify active servers on a network that will respond to remote communications, and then (2) see if any of those servers are running old versions of software that is known to be vulnerable to one or more security exploits. An organization may use network scanning periodically to make sure that there are no unexpected open ports on their network perimeter, for example.
Node Package Manager (NPM) - a tool used by JavaScript developers to speed up development by allowing pre-built packages to be included in a developer’s app or system. NPM includes features to audit the set of packages that are in use by an app and to identify packages that have known security vulnerabilities.
Object storage buckets - a type of persistent storage in the cloud that makes it simple for organizations to store files into persistent storage, including files that are very large, without having to worry about scaling physical assets like storage arrays or how to back these files up to ensure they aren’t lost in the case of a disaster like a fire or flood.
Operating System - the software running on a computer or mobile device that allows applications to run and use that computer’s processor, memory, storage, and network resources. For example, Microsoft’s Windows, Apple’s macOS or iOS, and Linux.
Organization member - someone with a role and responsibilities within an organization, for example an employee, a contractor, a contingent worker, an intern, or a volunteer.
Organizational device - a computer or mobile device used by an organization member in the context of doing work for the organization.
Platform Term 6.a.i - Refers to Meta’s Platform Terms section (6) heading (a) paragraph (i), which describes platform developers’ obligations related to data security.
Package - synonym for library
Patch - software updates that resolve security vulnerabilities, fix bugs, or add new functionality. All sorts of software gets patched, including Operating Systems, containers, libraries, and SDKs.
Penetration test - a simulated attack against an app or system where the tester attempts to find vulnerabilities in the code or configuration that could be exploited by an unauthorized actor. Pen testers will use similar tools to cyber criminals to conduct reconnaissance, scan for potential weaknesses, and test vulnerabilities that could be used to gain unauthorized access. At the conclusion of a pen test, the tester will create a report that describes the findings along with the severity of each and the organization that maintains the software is responsible for crafting fixes to resolve the vulnerabilities.
Plain text - a synonym for unencrypted data, plain text is the name given to data that has not been protected by encryption.
Platform as a Service (PaaS) - a cloud computing approach whereby a customer deploys an application into a platform managed by the cloud provider. Compared to IaaS, PaaS is simpler for customers to manage since not only the physical assets (i.e., the servers, storage devices, and network devices) are managed by the cloud host but also the operating system and application container where the customer’s app runs. For example, these are some popular PaaS products: AWS Elastic Beanstalk, Google App Engine, Force.com.
Port - when a client makes a connection to a server over the internet the destination address has two parts: (1) an Internet Protocol (IP) address for the server and (2) a port number on that server that a particular application will respond to. Common protocols use reserved ports (e.g., HTTPS uses 443) but a developer can use custom ports for network communications if desired.
REST API - a widely adopted style of building web-accessible services where the client and server communicate using the HTTP protocol. A developer on the Meta platform might host a REST API on a subdomain like api.example.com that their mobile app sends and receives Platform Data to/from.
Secure Shell (SSH) - a communication scheme that allows administrators to remotely login to servers and run programs on those servers. Referred to as secure since the communications between the client and server are protected against eavesdropping unlike earlier protocols like Telnet. Also called Secure Socket Shell.
Secure Sockets Layer (SSL) - An obsolete and insecure version of encryption in transit. The modern secure version is called Transport Layer Security (TLS).
Server - a computer that provides services remotely over a network. Browsers and mobile apps connect to servers over the internet.
Serverless computing - a style of cloud computing where the cloud host manages the physical infrastructure, the server operating system, and the container. A developer is only responsible for custom code and associated libraries along with the cloud configuration.
Server side - data or computation on the other side of a network connection (i.e., on a server) is referred to as server side. In contrast, data or computation on a local device like a laptop or mobile device is referred to as client side.
Single Sign On (SSO) - an arrangement where apps rely on a centralized user directory (i.e., an IdP) to authenticate users. In addition to centralizing user account and app access administration for the organization, users benefit by having a single set of credentials instead of requiring users to maintain different credentials (e.g., username and password) for each different app.
Software Development Kit (SDK) - a building block of code that a developer can use to simplify the development process for a given need. For example, Meta creates and maintains SDKs that simplify working with the Graph API for iOS and Android developers. Similar to a library, developers that use SDKs in their apps need to keep them up to date over time.
Software as a Service (SaaS) - allows customers to use cloud-based apps via the internet. Unlike PaaS or IaaS, a customer of a SaaS app does not deploy custom code nor have responsibility for configuring, upgrading, or patching the SaaS app as all of these are the responsibility of the SaaS software vendor. For example, these are some popular SaaS products: Dopbox, MailChip, Salesforce, Slack.
Static analysis - see Static Application Security Testing
Static Application Security Testing (SAST) - an approach for finding vulnerabilities in software by running a specialized tool against the source code. A SAST tool will identify potential vulnerabilities, such as those listed in the OWASP Top 10 project, and then the developer is responsible for reviewing the findings, distinguishing true positives from false positives, and fixing vulnerabilities in the software. SAST can be useful because it can allow developers to find vulnerabilities before they are deployed into production, but unlike a penetration test a SAST tool will not be able to find vulnerabilities related to the production configuration of the app.
Transparent data encryption - a type of encryption at rest that typically applies to database storage (i.e., the database contents themselves and its log files). In this arrangement, the database software manages the encryption keys and transparently handles the encryption operations (upon writes) and decryption operations (upon reads).
Transport Layer Security (TLS) - an encryption in transit scheme that uses encryption to protect data transmitted over networks from eavesdroppers along the network path. TLS is the modern secure version of the obsolete earlier technology called SSL.
Two-Factor Authentication (2Fac) - a synonym for Multi-Factor Authentication.
Vault - a secret management system for sensitive data like encryption keys, access tokens, and other credentials. A vault allows tight control over who is able to access the secrets it contains and offers additional services like keeping audit logs.
Virtual Machine (VM) - very similar to an Application Container – a VM runs in a host called a hypervisor whereas an Application Container runs in a container engine. The main difference is that a VM image contains an Operating System whereas an Application Container will not. Both VMs and Application Containers contain application(s) and dependencies like libraries.
Virtual Private Cloud (VPC) - term used by AWS to refer to a set of cloud resources that resembles a traditional network in a data center in the pre-cloud era.
Vulnerability - a flaw in a system or app that could be exploited, e.g., to read data that the actor otherwise would not be entitled to read
Vulnerability Disclosure Program (VDP) - an approach whereby organizations solicit security vulnerability reports from researchers (sometimes called ethical hackers) so that the vulnerabilities can be discovered and fixed before malicious actors exploit them. An effective VDP requires a set of researchers who are actively looking for vulnerabilities, analysts within the organization to review and triage incoming disclosures, and engineers who are knowledgeable about cybersecurity that are able to create and deploy fixes for vulnerabilities.
Vulnerability scan - an approach that uses software to look for vulnerabilities in servers, networks, and apps. Compared to a penetration test, a vulnerability scan is cheaper to run and hence can be run repeatedly (e.g., monthly or quarterly) but it’s typical that a pen test will find vulnerabilities that a vulnerability scan misses because skilled penetration testers bring analytical skills and instincts that are hard to replicate with strictly automated approaches. See also network scan.
Webapp - Webapps are programs that run inside browsers and are comprised of resources like HTML documents, JavaScript code, videos and other media, and CSS for styling. In contrast to a mobile app that a person installs onto a mobile phone from an app store, people simply fetch a webapp from a remote server using their browser (e.g., www.facebook.com) without the need for an installation step.