EU/EEA citizens
As a citizen of the European Union, Norway, Iceland, Lichtenstein or Switzerland, you are in luck: there is no need to apply for a visa or a residence permit! If the duration of your internship exceeds 4 months or more, you are obliged to register with the local municipality. If your stay lasts fewer than 4 months, registration is not obligatory but highly recommended. When you register you will get a BSN (burgerservicenummer). For this, you need to show proof of accommodation ( rental agreement ), valid passport and the signed internship agreement.
In the case of Croatian citizens, this duration limit is 3 months. You will have to provide proof of health insurance and sufficient income.
Non-EU/EEA citizens
If you are a citizen of a non-EU/EEA country, you will need to apply for a Provisional Residence Permit, especially if you intend to stay in the Netherlands for longer than 3 months. You need to apply for this visa at the Dutch Embassy located in your home country (or country of legal residence) before departure. Keep in mind that these processes can take a long time so plan ahead!
NB: You are not required to obtain this permit if you are a national of one of the following countries: Australia, Canada, Japan, Monaco, New Zealand, South Korea, USA, Vatican City. Upon arrival in the Netherlands, you are required to register with the local municipality the same way as mentioned above for EU/EEA citizens.