Estamos trabalhando em um novo serviço - esse serviço poderá ser chamado diretamente de aplicativos nos dispositivos do usuário. Esses aplicativos serão desenvolvidos e suportados por várias equipes de desenvolvimento de toda a organização, tudo dependendo dos dados que fornecemos.
Estamos interessados em identificar quais aplicativos estão enviando quais solicitações, para que possamos identificar padrões de uso e desenvolvedores responsáveis. (Para evitar dúvidas, a autenticação do usuário é tratada separadamente.)
Nossa solução é exigir chaves de API, uma por aplicativo - então temos detalhes de contato para a equipe de desenvolvimento.
Não queremos que as chaves da API sejam uma fonte de atrito, mas estamos preocupados que os desenvolvedores as compartilhem com colegas de outras equipes, o que significa que não podemos mais identificar o tráfego para apenas um aplicativo.
Como podemos incentivar os desenvolvedores a não compartilhar chaves de API internamente?
Respostas:
Para compartilhar essas chaves entre as equipes, as equipes precisam conversar, concordar em compartilhar e compartilhá-las. Isso leva tempo. Portanto, se uma equipe pode solicitar as chaves da API a você de forma mais rápida e fácil, não há incentivo para compartilhar.
E a maneira mais fácil de solicitar essas chaves é antecipá-las. Supondo que você conheça todas as outras equipes que precisarão de chaves de API, crie-as e compartilhe-as antes de disponibilizar o serviço para elas.
Há outro incentivo que você pode oferecer: suporte à depuração. Essas equipes desejarão sua ajuda quando as coisas não funcionarem corretamente quando integrarem o trabalho deles ao seu serviço. Essas chaves de API permitem rastrear suas solicitações específicas e, assim, ajudar na depuração do que está acontecendo de errado. Portanto, venda isso como o motivo das chaves, em vez de " identificar padrões de uso e desenvolvedores responsáveis ", que parece que você está espionando as atividades deles.
fonte
Boas respostas, já pensei em uma abordagem diferente que pode ou não funcionar para você.
Em vez de emitir chaves a serem incluídas, você pode exigir que o cabeçalho das solicitações inclua o nome do aplicativo front-end, a ser criado e formatado pelo desenvolvedor do aplicativo front-end, como fazem os navegadores da web. Dessa forma, os front-ends ainda poderiam fingir ser um aplicativo diferente, mas não haveria nenhum benefício em fazer isso, o que parece improvável. Apenas deixe o front-end se identificar e aceite qualquer string não vazia.
fonte
Em resumo:
Primeiro: facilitação e benefícios; Se necessário: atrito e polícia.
Mais algumas palavras
Facilitação : primeiro, facilite para uma equipe obter uma nova chave de API. Por exemplo, adicione um lembrete nos procedimentos corporativos para o lançamento de novos projetos e ofereça um serviço fácil de usar para solicitar novas chaves, sem pedir justificativa.
Benefícios : faça com que o uso de uma chave de API seja um benefício para a equipe ou o proprietário do produto. Por exemplo, proponha algum feedback sobre o uso do aplicativo com base nessa chave.
Atrito : Dependendo do recurso principal, você pode criar atrito, por exemplo, se a chave estiver vinculada a um domínio definido por aplicativo de somme (por exemplo, reutilizar chaves não necessariamente daria acesso a todos os serviços desejados).
Policiamento : Finalmente, pode ser necessário prever algumas medidas de policiamento. Por exemplo, você pode monitorar o uso das funções da API pela tecla api e, após um determinado período, para estabelecer uma linha de base, consulta sobre o uso de partes da API que não é esperado em vista da linha de base. Ou, se isso não for realista, inclua nas listas de verificação corporativas de revisão de projetos a verificação de que uma chave válida foi usada.
Observação : talvez você precise ser muito claro sobre sua política de chave de API: uma nova versão principal exigiria sua própria chave de API? O que com um garfo ou se um aplicativo é dividido? e se outra equipe estiver no comando, etc ...
fonte
Geralmente, a maneira mais fácil de fazer com que os desenvolvedores "façam a coisa certa" é facilitar a execução.
Para esse fim, sugiro a criação de uma página / site de emissão de chave de API. Na sua forma mais simples, pode ser apenas um login (idealmente vinculado ao AD / LDAP corporativo) e a página que apenas pede o nome do aplicativo e emite a chave.
No final do dia, você sempre pode revogar as chaves posteriormente, então tudo o que você realmente precisa é registrar quem (nome de usuário) solicitou a chave e o que (Nome do Aplicativo) eles querem fazer com ela - junto com as informações necessárias para revogue a chave mais tarde.
Você poderia fazer algo semelhante com um sistema de emissão de bilhetes, mas no final do dia é muito fácil copiar e colar uma chave de um aplicativo para outro, por isso deve ser muito fácil solicitar uma nova chave, para evitar erros. comportamento.
fonte
Seja pro ativo.
Identifique possíveis desenvolvedores e dê a eles chaves de API exclusivas em um canal seguro, com antecedência. Forneça um meio fácil de solicitar novas chaves de API. Forneça um meio fácil de novas pessoas solicitarem novas chaves de API. Quando novos estagiários ou contratados ingressarem na equipe, forneça a eles um ticket do JIRA ou "Solicite uma chave de API" semelhante, com as etapas na descrição.
Acompanhe quais chaves de API foram usadas e quais não. Se Bob enviou tíquetes no projeto, mas não usou suas chaves de API, é provável que tenha emprestado as de outra pessoa.
Tenha o suporte da gerência. Não seja uma Nancy intrometida adotando regras que não importam. Literalmente convencer a Gerência de que é importante e, então, eles são os únicos a convencer o grupo de que é importante. Não trabalhe convencendo a todos.
E a sugestão mais irritante e propensa a tirania: esteja ciente do uso indevido e reprima no mesmo dia. A mesma hora é melhor. Não diga "Bad Naughty Developer", diga "Aqui estão as etapas adequadas". Se o fizerem repetidamente, desative a tecla mal utilizada. Isso incomoda tanto o participante como o que emprestou, e o participante dirá "Não, faça-o corretamente" no futuro. Evite desativar as chaves que estão em projetos ao vivo.
fonte
Você também deve implementar a limitação de taxa . Isso por si só poderia desencorajar o compartilhamento de chaves. Ele protege seu sistema em certa medida contra aplicativos abusivos. (E absolutamente maliciosos.) E garante que você seja informado de alguma forma antes de um aumento maciço no tráfego que pode ser reparado. (Dando tempo para aumentar a capacidade, espero!)
E, com limitação de taxa, quando um aplicativo exige um limite mais alto, ele abre o diálogo com o POC registrado para a chave. Você tem a oportunidade de perguntar se as chaves estão sendo compartilhadas, explicar por que isso é prejudicial e assim por diante, e pode oferecer chaves adicionais quando apropriado, em vez das alterações no limite de taxa solicitado. Etc.
fonte
Uma maneira de fazer as coisas, especialmente se as equipes usarem um sistema de compilação compartilhado (ou pelo menos um suficientemente comum), é configurar um servidor interno que crie e emita chaves de API (com algumas informações básicas sobre o produto que o utiliza) ) Em seguida, use um script que pegue uma nova chave de API do servidor para cada compilação ou para cada atualização de versão. Deixe os desenvolvedores executarem o script para obter uma chave diferente para suas compilações locais também. (Sempre que possível, automatize isso como parte da compilação para que eles nem precisem pensar nisso.)
Isso permitiria dizer se havia algo em produção, controle de qualidade ou desenvolvimento, e em qual versão / construção os problemas foram iniciados.
fonte
A primeira e melhor coisa que você pode fazer é formatar as chaves para que elas incluam o nome do aplicativo em um formato de fácil leitura e não funcionem se você o alterar.
Se for óbvio quando as equipes estiverem usando a chave errada, eles tentarão não fazê-lo.
Em seguida, expire periodicamente as chaves. Você deve fazer isso de qualquer maneira e, quando uma chave estiver quase expirando, poderá enviar uma nova para a equipe que a possui. A equipe que usa uma chave será motivada para garantir que é a equipe que a possui, para que eles recebam a nova quando ela expirar.
fonte